一道用C语言编程计算积分的题目,求大神解答!可追分。
#include int main(int argc, char *argv[]){ int s32Num1 = 0; int s32Num2 = 0; int s32Index = 0; for (s32Index = 10; s32Index (s32Num1 + s32Num2)) { printf("%d ", s32Index); } } return 0;}
这是由于原来的程序采用了递归,而且递归程序中的局部变量有较大的数组。当递归层数太多时,就会造成系统栈溢出,而导致程序崩溃。
以下的程序改为非递归的,就不会再有此现象:
#include
void f(int n,int a[],int b[])
{
int j,i,c[20000];
for(i=0;i<2*n;i++) c[i]=a[i];
for(i=0,j=1;i<n;i++,j=j+2) a[j]=c[i];
for(j=0;i<2*n;i++,j=j+2) a[j]=c[i];
}
int main()
{
int i,n,a[20000],b[20000],num=0; //做到20000张牌也能正确出解
scanf("%d",&n);
for(i=0;i<2*n;i++) a[i]=i;
for(i=0;i<2*n;i++) b[i]=i;
for(i=0;i<n+n;)
{
f(n,a,b);
num++;
for(i=0;i<2*n;i++)
if(a[i]!=b[i])break;
}
printf("%d
",num);
return 0;
}
由于非线性的方程解的结构因题目而异所以只有数值方法。区间二分法是其中最简单的方法了。
还有一个比较有用的介值定理.在该情况下,我们先选定x可能一个取值范围[a, b]. 且f(x)单调连续,若f(a)*f(b)<0, 那么在 (a,b)间存在x0,使得f(x0)=0. 至于二分法的详细算法可以求助百度百科或者wiki.
可能的求解3.15的思路: 假设应用二分法解决3.15, 那么p一定会有一个初值p0.
将p0带入3.14, 求解(同样是非线性方程的数值解),得到可能的x。 即3.15中积分元算的上限。数值积分的方法很多相信你都学过。
又由于要把积分式对p求导,所以我们还需要数值微分,其实就是差分积分式(在不同的p值下)。 其实就是把3.15中的积分做数值差分(前向,后向,中心 等等)。 所以所以带入3.14的p(因为要计算s*(p1) ),应该是p0-dp 或者 p0+dp (根据你差分的方法而定)。 dp为很小的数,数值上视作微元。如此。
在3.14中,当n1=1时 h1-(h1+u1)∑—e^ = 0,所以∑—e^ = h1/(h1+u1)
带入3.15可以化简3.15。
在3.14中,当n1=1时,j=1时,3.14可以化简出一个关于x的表达式。
我只能帮你到这了。
3.14、3.15都是等式,你要求什么?
太高深了
忘了怎么算了。。。。。
求这道题的c语言的编程
include <stdio.h> int main(){ int a,b,c;for(a=1;a<6;++a)for(b=1;b<6;++b)for(c=1;c<6;++c)if(a!=b&&b!=c&&a!=c)printf("%d ",a*100+b*10+c);return 0;}
两道C语言题目,编程实现。1.求8的阶乘。2.求1到8的阶乘和。
1~8的阶乘 include<stdio.h> void main(){ int i,j,m;long int sum;for(i=1;i<=8;i++){ m=1;sum=0;for(j=1;j<=i;j++){ m=m*j;} sum+=m;printf("%d!=%ld\\n",i,sum);} } 8的阶乘:include<stdio.h> void main(){ int i,j=1;for(i=1;i<=8;i++){ j=j...
C语言。编程实现简单的四则运算。比如输入3+5=8,输入3*5=15。要有算 ...
include <stdio.h> int main(){int a,b,c;char op;scanf("%d%c%d",&a,&op,&b);while(op!='+'&&op!='-'&&op!='*'&&op!='\/'){printf("只能计算加减乘除,请重新输入:\\n");scanf("%d%c%d",&a,&op,&b);} if(op=='\/'&&b==0){printf("divided by zero.\\n");retu...
几道简单的C语言编程题,请高手帮忙
} 3、输入三个整数,求其中的最大值并输出。include<stdio.h> void main(){ int a,b,c;printf("输入三个数:");scanf("%d%d%d",&a,&b,&c);if(a>b&&a>c)printf("最大值为:%d",a);else if(b>a&&b>c)printf("最大值为:%d",b);else printf("最大值为:%d",c);} ...
C语言 编程计算1-1\/2+1\/3-1\/4+……±1\/n
C语言源程序:include "stdio.h"void main(){ int i, n;int f = 1; \/* 符号 *\/ double sum; \/* 各项之和 *\/ printf("input value of n : ");scanf("%d", &n);sum = 0.0;for(i=1; i<=n; i++){ sum += 1.0 * f \/ i;f *= -1; \/* t 在正负1之间...
如何用c语言运用循环语句编程计算1+2+3+…+100?
运用循环语句编程计算1+2+3+4+5+6...+100方法如下:int sum=0;for(int i=0;i<=100;i++){ sum=sum+i;} System.out.println(sum);
大学福音经典编程题适用于专升本
C语言100道适用专升本超有用 1.十进制数转任意进制数 2.数字三角形 3,编程求某年第 n 天的日期。 4.求周岁 5.编程求出使该算式成立时的这两个数 6.功能:(较难不用看) 编程求任意给两个日期(年 月日)相差的天数。 7.把一个数的二进制奇数位和偶数位交换 8.题目要求找出数组中的两个单身狗 9,数...
c语言编程序 \/*计算1-1\/4+1\/7-1\/10+1\/13-1\/16…共n项之和*\/
include<stdio.h> int main(void){ double n,sum,i,k;sum=0;k=1;printf("Enter n: ");scanf("%lf",&n);for(i=1;i<=n;i++){ sum=sum+k\/(3*i-2);k=-k;} printf("sum=%.3f",sum);return 0;} 输入形式 从键盘输入一个正整数n。输入输出样例1(下划线部分表示输入)Enter...
C语言或java编程 计算 1+2+3+...+99+100
方法一(C):include <stdio.h> void main(){ int i=1,sum=0;for(;i!=101;i++)sum+=i;printf("The sum=%d",sum);} 方法二(Java):import java.io.*;public class test { public static void main(String[]args){ int sum=0;for(int i=1;i!=101;i++)sum+=i;System.out....
c语言编程计算1+2+3+…n<500中最大的n并求和
include<stdio.h> int main(){ int n,sum; \/*sum表示的是和*\/ n=0; sum=0;while(sum<=500){ n++;sum=sum+n;} sum=sum-n; \/*sum大于500,多加了一次,所以要减掉最后加的那一个*\/ n--; \/*n也要减一*\/ printf("%d,%d",n,sum);} ...
栋广盐酸: #include float f1(float x) { return(1.0+x); } float f2(float x) { return(2.0*x+3.0); } float f3(float x) { return(exp(x)+1); } float f4(float x) { return(pow(1+x,2)); } float f5(float x) { return(pow(x,3)); } float fsimp(float a,float b,float (*p)(float)) { float c,s; c=(a+b)/2; s=(b-a)/...
南岸区17380724339: 一道用C语言编程计算积分的题目,求大神解答!可追分. - ?
栋广盐酸: 你好,最近时间不多,所以只能提示你一下,这个题目的重点不是要算积分,而是解非线性的方程.但是其中可能涉及到数值积分或者微分的问题.由于非线性的方程解的结构因题目而异所以只有数值方法.区间二分法是其中最简单的方法了. ...
南岸区17380724339: c语言求积分 - ?
栋广盐酸: #include double integral(double a,double b,int n){double x,y,dx,sum=0.0;int i;dx = (b-a) /(double) n;for (i=0;i<=n;i++){y = sin(a+dx * i);sum = ...
南岸区17380724339: c语言求定积分 - ?
栋广盐酸: 只是给出相关代码段:float f=0.0;float x=1.0;while(x<10){ f+=x*x*sin(x)+x*cos(x); x+=0.05;}f*=0.05;printf("%f\n",f);
南岸区17380724339: 用c语言编程求“积分的实现” - ?
栋广盐酸: #include<iostream> using namespace std; double gong(double x) { double y; y=4.0/(1.0+x*x); return y; } double sum(double a,double b,int n) { double s,h; h=(b-a)/n; s=0.0; for(int i=1;i<n;i++) { s=s+gong(a+i*h); } s=s+(gong(a)+gong(b))/2.0; s=s*h; ...
南岸区17380724339: C语言求定积分 - ?
栋广盐酸: #include using namespace std;#define min 0#define max 1.0 inline double f(double x) { return x*x; } double Ladder(int n)//用梯形法求积分 { double width=(max-min)/n; double sum=0; for (double d=min;d { sum+=(f(d)+f(d+width))*width/2; } return sum; ...
南岸区17380724339: c语言编程龙贝格积分算法 - ?
栋广盐酸: 梯形法求解#include<stdio.h> int main() { double s=0,h,a,b,f0,f1,n; int i; printf("Enter n,a,b:"); scanf("%lf,%lf,%lf",&n,&a,&b); h=(b-a)/n; f0=3*a/(4+a*a); for(i=1;i<=n;i++) { a=a+h; f1=a*a+2*a+1; s+=(f0+f1)*h/2; f0=f1; } printf("sum is %f",s); return 0; }
南岸区17380724339: 用C语言编程求无穷限的积分 e^( - x^2/2) - ?
栋广盐酸: 我试过了,是正确的.正态分布,μ=0,σ=1,(1/√(2π)∫(-∞,+∞)e^(-x²/2)dx=1 ∫(-∞,+∞)e^(-x²/2)dx=√(2π)=2.506628235 你的程序结果2.506366,差不多.扩大上下限,精度可以进一步提高.
南岸区17380724339: 用c语言如何编写“用梯形法求定积分∫sinxdx的近似值 上限为不b=π下限为a=0”这一问题,求代码 - ?
栋广盐酸: 首先解决怎么算,计算机肯定不会积分,所以我开始想用sinx的泰勒展开式,然后选3-4次作为近似,然后积分.听你说梯形法,是数值计算的内容,刚好这学期在学,就把我调试的程序发一个给你吧这是romberg算法,把a 换为0,b换为pi就好了...
南岸区17380724339: 求积分C语言编程在线等 - ?
栋广盐酸: #include<stdio.h>#include<math.h> double integ(double a,double b) { double s,x,h; int n=100,i; h=fab(b-a)/n; s=(sin(a)+sin(b))/2.0; for(i=1;i<=n-1;i++) { x=a+i*h; s=s+sin(x); } s=s*h; return s; } main() { double s; s=integ(0.0,0.15); printf("s=%f\n",s); } 你自己跑下,可能有语法错误.呵呵..