一些C程序(2)
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf("input the x and the top exp:"); scanf("%lf,%d",&x,&m); printf(" input the a[i](0<i<100):"); for(i=0;i<=m;i++) {scanf("%lf",&t); a[i]=t; } sum=a[m]; for(j=m-1;j>=0;j--) sum=x*sum+a[j]; printf(" the result is:%lf ",sum); } (18)三对角线追赶法 #include<stdio.h> #include<math.h> main() {int i,j,k,n; float d[10][10],g[10],a[10],b[10],c[10],x[10],y[10],f[10]; printf("the top exp is "); scanf("%d",&n); scanf("%f,%f,%f,%f",&d[0][0],&d[0][1],&d[n-1][n-2],&d[n-1][n-1]); for(i=1;i<n-1;i++) for(j=i-1;j<=i+1;j++) scanf("%f",&d[i][j]); for(i=0;i<n;i++) scanf("%f",&g[i]); for(i=1;i<n-1;i++) a[i]=d[i][i-1]; for(i=0;i<n;i++) b[i]=d[i][i]; for(i=0;i<n-1;i++) c[i]=d[i][i+1]; f[0]=c[0]/b[0]; for(k=1;k<n-1;k++) f[k]=c[k]/(b[k]-a[k]*f[k-1]); y[0]=g[0]/b[0]; for(i=1;i<n;i++) y[i]=(g[i]-a[i]*y[i-1])/(b[i]-a[i]*f[i-1]); x[n-1]=y[n-1]; for(i=n-2;i>=0;i--) x[i]=y[i]-f[i]*x[i+1]; for(i=0;i<n;i++) printf("%f ",x[i]);
(16)牛顿下山 #include<stdio.h> #include<math.h> float f(float x) {float y; y=pow(x,3)-x-1; return y; } float g(float x) {float y; y=3*pow(x,2)-1; return y; } main() {float x0,x1,b,e,a,x; int k; scanf("%f,%f",&x0,&a); k=0; if(fabs(g(x0))<a) {printf("error"); }else e=1.00; while(fabs(f(x0))>=a) {do{x1=x0-e*f(x0)/g(x0); b=x0; x0=x1; e=e/2.00; }while(fabs(f(x1))>=fabs(f(b))); k+=1;e=1.00; } x=x0; printf("%d,%f",k,x); } (17)秦九韶 #include<stdio.h> #include<math.h> #define N 100 main() {int m,i,j; double sum,x,a[N];
} (22)综合测评 #include<stdio.h> #include<math.h> float g(float a,float b,float c,float d,float e,float f) {float y; y=(a*36.0+b*35.0+c*65.0+d*48.0+e*21.0+f*18.0)/223.0; return y; } main() {float a,b,c,d,e,f,num[5],max; int i,j,h,n; for(i=1;i<=4;i++) {printf("input your marks: "); scanf("%f%f%f%f%f%f",&a,&b,&c,&d,&e,&f); printf("your average mark:"); printf("[%d] ",i); printf("%6.3f ",g(a,b,c,d,e,f)); num[i]=g(a,b,c,d,e,f); } for(j=1;j<=4;j++) {max=num[1]; h=1; for(i=1;i<=4;i++) if(num[i]>=max) {max=num[i]; h=i; } printf("%6.4f,%d ",max,h); num[h]=0; } }
(12)龙贝格算法 #include<stdio.h> #include<math.h> #define f(x) 4/(1+(x)*(x)) float g(int k) {int i,total; total=1; for(i=1;i<=k;i++) total*=2; return total; }
return 0; } (20)弦割法 #include<stdio.h> #include<math.h> float f(float x) {float y; y=pow(x,3)-x-1; return y; } main() {float x0,x1,x2,a; int k,N; k=0; scanf("%f,%f,%f,%d",&x0,&x1,&a,&N); for(k=0;k<N;k++) {x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0)); if(fabs(x2-x1)<a) {printf("%d,%f",k,x2); break; } else x0=x1;
scanf("%f",&y[i]); printf("input x "); scanf("%f",&a); b=0; k=0; do{p=1; j=0; do {if(j!=k) p=p*(a-x[j])/(x[k]-x[j]); j++; }while(j<n); b=b+p*y[k]; k++; }while(k<n); printf("x=%f,y=%f",a,b); } (15)牛顿迭代 #include<stdio.h> #include<math.h> #define N 100 float f(float x) {float y; y=x-cos(x); return y; } main() {float x0,x1,a; int k; scanf("%f,%f",&x0,&a); for(k=0;k<N;k++) {x1=x0-(x0-cos(x0))/(1+sin(x0)); if(fabs(x1-x0)<a) {printf("%f,%d",x1,k); break; } else x0=x1; } if(k>=N) {printf("error"); } }
x1=x2; } if(k>=N) {printf("error"); } } (21)雅克比迭代 #include<stdio.h> #include<math.h> main() {float a[10][10],b[10],x[10],y[10],e,sum,c; int i,j,n,l; printf("The top exp is "); scanf("%d",&n); printf("Now input array A "); for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%f",&a[i][j]); printf("Now input array B first and then array X "); for(i=0;i<n;i++) scanf("%f,%f",&b[i],&x[i]); printf("Now input e "); scanf("%f",&e); l=0; do{for(i=0;i<n;i++) {sum=0; for(j=0;j<i;j++) sum+=a[i][j]*x[j]; for(j=i+1;j<n;j++) sum+=a[i][j]*x[j]; y[i]=(b[i]-sum)/a[i][i]; l+=1; } c=fabs(x[0]-y[0]); for(i=0;i<n;i++) if(c<fabs(x[i]-y[i])) c=fabs(x[i]-y[i]); for(i=0;i<n;i++) x[i]=y[i]; }while(c<e); printf("%d ",l); for(i=0;i<n;i++) printf("%f ",y[i]);
main() {int k0,k1,k,tag,i; float a,b,e,e1,t[50],s[50],c[50],r[50],sum; scanf("%f,%f,%f,%d,%d",&a,&b,&e,&k0,&k1); t[0]=(b-a)*(f(0)+f(1))/2; k=1; tag=0; do{if(k==1) {t[1]=t[0]/2+(b-a)*f(a+(b-a)/2)/2; s[0]=(4*t[1]-t[0])/3; } if(k==2) {t[2]=t[1]/2+(b-a)*(f(a+(b-a)/4)+f(a+3*(b-a)/4))/4; s[1]=(4*t[2]-t[1])/3; c[0]=(16*s[1]-s[0])/15; } if(k>=3) {sum=0; for(i=1;i<=g(k-1);i++) sum+=f(a+(2*i-1)*(b-a)/g(k)); t[k]=t[k-1]/2+(b-a)*sum/g(k); s[k-1]=(4*t[k]-t[k-1])/3; c[k-2]=(16*s[k-1]-s[k-2])/15; r[k-3]=(64*c[k-2]-c[k-3])/63; } if(k>=k1) {e1=fabs(r[k-3]-r[k-4]); if(e1<e) {printf("k=%d,T=%f ",k,r[kwhile(tag==0&&k<k0); if(tag==0||k>=k0) printf("error! "); } (13)龙格库塔方法 #include<stdio.h> #include<math.h> #define f(x,y) (x)-(y)+1 main() {int n,k; float a,b,y0,h,x,y,t[4]; scanf("%f,%f,%f,%d",&a,&b,&y0,&n); h=(b-a)/n; x=a;y=y0; printf("%f,%f ",x,y); k=1; do{t[0]=f(x,y); x=x+h/2; t[1]=f(x,y+h*t[0]/2); t[2]=f(x,y+h*t[1]/2); x=x+h/2; t[3]=f(x,y+h*t[2]); y=y+h*(t[0]+2*t[1]+2*t[2]+t[3])/6; printf("%f,%f ",x,y); k++; }while(k<=n); } (14)牛顿插值多项式 #include<stdio.h> #include<math.h> main() {int i,j,k,n; float x[10],y[10],a,b,p; printf("input n "); scanf("%d",&n); printf("input X "); for(i=0;i<=n;i++) scanf("%f",&x[i]); printf("input Y "); for(i=0;i<=n;i++)
} (19)系统 #include <stdio.h> int main(void) { int a,b,CHECK; printf("Input two nonzero intergers:"); scanf("%d,%d",&a,&b); printf("%s%4d %s%4d %s%4d %s%4d %s%4d ", " " " " " ); a=",a, b=",b, a/b=",a/b, a%b=",a%b, CHECK=",(a/b)*b+a%b-a