1、第二部份 C程序设计上机操作题2一、数列求和2二、最大公约数、最小公倍数6三、排序算法7四、数组8五、求整数n各位数字及各数字之和11六、平面上各点之间距离13七、数制转换16八、字符串解决17九、最大值与最小值23十、斐波那契(Fibonacci)数列26十一、水仙花、完数、回文数与密切数27十二、方程求根29十三、回文数、因子、质因子、素数32十三、其她算法33第二部份 C程序设计上机操作题一、数列求和1、程序调试题试题一该程序功能:输入x和正数eps,计算多项式1-x+x*x/2!-x*x*x/3!+.和直到末项绝对值不大于eps为止。#include #include void mai
2、n() float x,eps,s=1,t=1,i=1; scanf(%f%f,&x,&eps); do /* 1 */ t=-t*x/+i; /+i-i+ s+=t; /* 2 */ while(fabs(t)eps); / = printf(%fn,s);试题二该程序功能:运营时若输入a、n分别为3、6,则输出下列表达式值:3+33+333+3333+33333+333333#include void main() int i,a,n;long t=0; /* 1 */ s=0; /s=0-long s=0 scanf(%d%d,&a,&n); for(i=1;i=n;i+) /* 2 *
3、/ t=t*10+i; /i-1 s=s+t; s=s*a; printf(%ldn,s);2、程序填空题试题一程序功能:调用函数f计算代数多项式1.1+2.2*x+3.3*x*x+4.4*x*x*x+5.5*x*x*x*x当x=1.7时值。#include float f(float,float*,int);void main( ) float b5=1.1,2.2,3.3,4.4,5.5;printf(“%fn”,f(1.7,b,5);float f( 1 ) / float f( float x,float a ,int n) float y=a0,t=1; int i;for(i=1;
4、in;i+) t=t*x;y=y+ai*t; 2 ; / return y3、程序设计题试题一设计程序:计算多项式a0+a1*sin(x)+a2*sin(x*x)+a3*sin(x*x*x)+值,并将其值以格式%.6f写入到考生目录中Paper子目录下新建文献design.dat中。#include#includevoid main() FILE *p; int i;float x=2.345,t=1.0,y=0.0; float a10=1.2,-1.4,-4.0,1.1,2.1,-1.1,3.0,-5.3,6.5,-0.9; /* 考生在这里添加代码 p=fopen(“design.dat
5、”,”w”); y=a0;for(i=1;i10;i+)t=t*x; y=y+ai*sin(t); fprintf(p,”%.6f”,y);fclose(p);试题二计程序:计算多项式a0-a1*x+a2*x*x/2!-a3*x*x*x/3!+.值,并将其以格式%f写到考生目录中Paper子目录下新建文献design.dat中。#include #include void main() FILE *p;int i;float x=1.279,t,y; float a10=1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65; / 考生在这里添加代码 p=
6、fopen(“design.dat”,”w”);t=1; y=a0; for(i=1;i10;i+)t=-t*x/i; y=y+ai*t;fprintf(p,%f,y);fclose(p);试题三设计程序:计算表达式1+2!+3!+.+12!值,并将计算成果以格式%ld 写入到考生目录中Paper子目录下新建文献design.dat中 #include void main() FILE *p;long s=1,k=1;int i; /考生在这里添加代码 p=fopen(design.dat,w); for(i=2;i=12;i+) k=i*k; s=s+k; fprintf(p,%ld,s);
7、 fclose(p);试题四设计程序:计算多项式a0+a1*x+a2*x*x+a3*x*x*x+.值,并将其值以格式%f写到考生目录中Paper子目录下新建文献design.dat中。#include #include void main() FILE *p;int i;float x=1.279,t=1,y=0; float a10=1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65; / 考生在这里添加代码 p=fopen(design.dat,w);for(i=0;i10;i+) y=y+t*ai; t=t*x; fprintf(p,%f,y);
8、 fclose(p);试题五设计程序:计算2平方根、3平方根、.、10平方根之和,规定计算成果具备小数点后10位有效位数,并以格式%.10fn写到考生目录中Paper子目录下新建文献design.dat看到这里中。 #include #include void main() FILE *p; /考生在这里添加代码 int i; float s=0; p=fopen(design.dat,w); for(i=2;i=10;i+) s=s+sqrt(i); fprintf(p,%.10f,s); fclose(p);试题六设计程序:数列第1项为81,此后各项均为它前1项正平方根,记录该 数列前30
9、项之和,并以格式%.3f写到考生目录中Paper子目录下新建文献design.dat中。#include #include void main() FILE *p;float s=0,a=81,i; /考生在这里添加代码 p=fopen(design.dat,w); for(i=1;i=30;i+)s=s+a;a=sqrt(a); fprintf(p,%.3f,s); fclose(p);试题七在数组a10个数中求平均值v,将不不大于等于v数组元素进行求和,并将成果以格式%.5f写到考生目录中Paper子目录下新建文献design.dat中。#include void main() FILE
10、*p; int i; float a10=7.23,1.5,5.24,2.1,2.45,6.3,5,3.2,0.7,9.81,sum,v=0; /考生在这里添加代码 p=fopen(design.dat,w); for(i=0;i10;i+)v=v+ai/10;sum=0; for(i=0;iv)sum=sum+ai; fprintf(p,%.5f,sum); fclose(p); 试题八设计程序: 运用公式/41-1/3+1/5-1/7+公式计算近似值,直到某一项绝对值不大于1e-6为止。 (/4成果不包括此项)将成果以格式%.6f写入到考生目录中Paper子目录下新建文献design.da
11、t中。 #include #include void main() FILE *fp; float n=1,t=1,pi=0; int i; /考生在这里添加代码 fp=fopen(design.dat,w); while(1.0/t=1e-6) pi=pi+n*1.0/t;t=t+2;n=-n;pi=pi*4;fprintf(fp,%.6f,pi);fclose(fp);试题九计算数列1,-1/3!,1/5!,-1/7!和至某项绝对值不大于1e-5为止(该项不累加),将成果以格式%.6f写入到考生目录中Paper子目录下新建文献design1.dat中。#include #include v
12、oid main() FILE *p;float s=1,t=1,i=3; / 考生在这里添加代码 p=fopen(d:design1.txt,w); t=-t*(i-1)*i; while(fabs(1/t)=1e-5) s+=1/t; i=i+2; t=-t*(i-1)*i; fprintf(p,%.6,s); fclose(p);二、最大公约数、最小公倍数1、程序调试题试题一该程序功能:输入m、n(规定输入数均不不大于0,且m=n),输出它们最小公倍数。 #include void main() int m,n,k; /* 1 */while(scanf(%d%d,&m,&n),m0 &
13、 n0); / m0 & n0&n0&m=n) for(k=m;k%n!=0;) /* 2 */ k=k+n; /改为:k=k+m printf(%dn,k);6/82、程序填空题试题一该程序功能:输入m、n(规定输入数均不不大于0),输出它们最大公约数。 #include void main() int m,n,k; while(scanf(%d%d,&m,&n),_1_ ); /!(n0&m0) for( _2_;n%k!=0|m%k!=0;k-); /k=m或k=n printf(%dn,k);三、排序算法1、程序调试题该程序功能:用选取法对10个整数按升序排序。#include #de
14、fine N 10void main() int i,j,min,temp; int aN=5,4,3,2,1,9,8,7,6,0; printf(nThe array is:n); /* 输出数组元素 */ for (i=0;iN;i+) printf(%5d,ai); for (i=0;iN-1;i+) /* 排序操作 */ min = i; for (j=i+1;jN;j+) /* 1 */ if (amin=aj) min =j; / /* 2 */ temp=amin;amin=aj;aj=temp; /* 数据互换 */ /j-i printf(nThe sorted number
15、s:n); /* 输出排序成果 */ for (i=0;iN;i+) printf(%5d,ai); printf(n);2、程序设计题该程序功能:用冒泡法对10个整数按升序排序。#include #define N 10void main() int i,j,min,temp; int aN=5,4,3,2,1,9,8,7,6,0; printf(nThe array is:n); /* 输出数组元素 */ for (i=0;iN;i+) printf(%5d,ai);/for (i=0;iN;i+) /* 排序操作 */ for (j=0;jaj+1) temp=aj;aj=aj+1;aj
16、+1=temp; /* 数据互换 */ printf(nThe sorted numbers:n); /* 输出排序成果 */ for (i=0;iN;i+) printf(%5d,ai); printf(n);四、数组1、程序填空题试题一该程序功能:输入数组x7,调用函数f,去除数组中负数,输出成果为:1 3 4 6#include void f(int *a,int *m) int i,j; for(i=0;i*m;i+) if(ai0) for(j=i-;j*m-1;j+) aj=aj+1; _1_; /(*m)- void main() int i,n=7,x7=1,-2,3,4,-5
17、,6,-7; _2_; /f(x,&n) for(i=0;in;i+) printf(%5d,xi); printf(n);试题二该程序功能:函数f将数组循环左移k个元素,数组x7调用函数f后输出成果为:4 5 6 7 1 2 3 #include void f(int *a,int n,int k) int i,j,t; for(i=0;ik;i+) _1_; /t=a0 for( _2_ ) aj-1=aj; /j=1;jn;j+ an-1=t; void main() int i,x7=1,2,3,4,5,6,7; f(x,7,3); for(i=0;i7;i+) printf(%5d,
18、xi); printf(n);试题三该程序功能:调用函数f,求二维数组a中全体元素之和。 #include float f( _1_) /float *x,int m,int n float y=0;int i,j; for(i=0;im;i+) for(j=0;jn;j+) y=y+*(*(x+i)+j); return y;void main() float a34=1,2,3,4,5,6,7,8,9,10,11,12,*b3; int i; for(i=0;i3;i+) bi=_2_; /*(a+i) printf(%.2fn,f(b,3,4);试题四求出数组a中相邻两个元素和,并将这些
19、和存储在数组a中,按每一行3个元素形式输出。(例如:b1=a0+a1,b2=a1+a2,b9=a8+a9)#include void main() int a10,b10,i; printf(nInput 10 numbers: ); for (i=0;i10;i+) /* 数组输入 */ scanf(%d,&ai); for (i=1;i10;i+) bi=_ ai-1+ai_; /* 计算b数组中元素 */ for (i=1;i10;i+) printf(%3d,bi); if (_i%3=0_) printf(n); /* 每行打印3个数据 */ 2、程序设计题试题一设计程序:将数组a每
20、1行均除以该行上主对角元素(第1行同除以a00,第2行同除以a11,.),然后将a数组写入到考生目录中Paper子目录下新建文献design.dat中新建文献design.dat中。#include void main() float a33=1.3,2.7,3.6,2,3,4.7,3,4,1.27; FILE *p;/*如下规定考生写代码*/ float temp; int i,j;p=fopen(“design.dat”,”w”);for(i=0;i3;i+) temp=aii; for(j=0;j3;j+) fprintf(p,%5.1f,aij/temp); fprintf(p,n);
21、 fclose(p);试题二设计程序:将数组a每1行均除以该行上绝对值最大元素,然后将a数组写入到考生目录中Paper子目录下新建文献design.dat中。#include #include void main() float a33=1.3,2.7,3.6,2,3,4.7,3,4,1.27; FILE *p;float x;int i,j; /考生在这里添加代码 for(i=0;i3;i+) x=ai0; for(j=0;j3;j+) if(fabs(x)fabs(aij) x=aij; for(j=0;j3;j+) aij=aij/x; p=fopen(design.dat,w); fo
22、r(i=0;i3;i+) for(j=0;j3;j+) fprintf(p,%10.6f,aij); fprintf(p,n); fclose(p);试题三在整数数组a中找出偶数放到数b中,对数组b按从小到大顺序排序后发格式“%3d”每行3个数写入考生文献夹中paper子文献夹下新建文献design1.dat。#include void main() FILE *p; int i,j,temp,n=0; int a10=7,6,20,3,14,88,53,62,10,29,b10; /考生在这里添加代码 p=fopen(design1,w); for(i=0;i10;i+) if(ai%2=0
23、)bn+=ai; for(i=0;in-1;i+) for(j=0;jbj+1) temp=bj; bj=bj+1; bj+1=temp; for(i=1;i=n;i+) if(i%3=0) fprintf(p,%3dn,bi-1); else fprintf(p,%3d,bi-1); fclose(p); 五、求整数n各位数字及各数字之和1、程序调试题试题一该程序功能:运营时输入整数n,输出n各位数字之和(如n=1308则输出12,n=-3204则输出9)。#include #include void main() int n,s=0; scanf(%d,&n); n=fabs(n); /*
24、 1 */ while(n1) /n或n0或n!=0 s=s+n%10; /* 2 */ n=n%10; /%-/ printf(%dn,s);2、程序填空题试题一该程序功能:求输入整数各位数字之和,如输入234则输出9,输入-312则输出6。 #include #include void main() int n,s=0; scanf(%d,&n); _ 1 _ /n=fabs(n); while(n!=0) _ 2 _ /s=s+n%10 n=n/10; printf(%dn,s); 试题二该程序功能:输入1个整数后,输出该数位数(若输入3214则输出4,输入-23156则输出5)。#in
25、clude void main() int n,k=0; scanf(%d,&n); while( _1_ ) /n或n!=0 k+; _2_; /n=n/10 printf(%dn,k);试题三该程序功能:调用函数f,将1个整数首尾倒置,若程序输入12345,则输出54321; 若程序输入-34567,则输出-76543。 #include #include long f(long n) long m,y=0; m=fabs(n); while(m!=0) y=y*10+m%10; _1_ /m=m/10; if(n=0) return y; else _2_ / return -y;voi
26、d main() printf(%ldt,f(12345); printf(%ldn,f(-34567);3、程序设计题试题一设计程序:选出5000如下符合条件自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差10倍。计算并输出这些四位自然数个数cnt及这些数字和sum到考生目录中Paper子目录下新建文献design.dat中。 #includevoid main() FILE *p; int cnt,sum; /* 考生在这里添加代码 int i,q,b,s,g;cnt=0;sum=0;p=fopen(“design.dat
27、”,”w”);for(i=1000;i5000;i+)g=i%10;s=i%100/10;b=i%1000/100;q=i/1000; if(q+b=s+g & q+b=(g-q)*10) cnt+;sum=sum+q+b+s+g; fprintf(p,%d,%d,cnt,sum); fclose(p);六、平面上各点之间距离1、程序调试题试题一该程序功能:输入n,再输入n个点平面坐标,然后输出那些距离坐标原点不超过5点坐标值。#include #include #include void main() int i,n; /* 1 */ struct axy float x,y; a; /a-
28、*a scanf(%d,&n); a=(float*) malloc(n*2*sizeof(float); /a=(struct axy*) malloc(n*2*sizeof(float); for(i=0;in;i+) /* 2 */ scanf(%f%f,ai.x,ai.y); / ai.x-.&ai.x ai.y-.&ai.y for(i=0;in;i+) if(sqrt(ai.x*ai.x+ai.y*ai.y)=5) printf(%f,%fn,ai.x,ai.y);2、程序填空题试题一在考生目录下,有Modify.c程序,该程序中“ N ”是依照程序功能需要填充某些,请完毕程序填充
29、(注意:不得加行、减行、加句、减句,否则后果自负)该程序功能:输入n和平面上n个点坐标,计算各点间距离总和。#include #include #define f(x1,y1,x2,y2) sqrt(pow(x2-x1,2)+pow(y2-y1,2) 1 / #include 或#include void main( ) float *x,*y,s=0; int i,j,n;scanf(“%d”,&n);x=(float*)malloc(sizeof(float)*n*2);y=x+ 2 ; /(float*)malloc(sizeof(float)*n*2);for(i=0;in;i+) s
30、canf(“%f%f”,x+i,y+i);for(i=0;in-1;i+)for(j=0;jn;j+)s+=f(xi,yi,xj,yj);printf(“%.2fn”,s);3、程序设计题试题一设计程序:xi,yi分别表达平面上一种点坐标,求下列10个点与点(1.0,1.0)距离总和,并将成果以格式%.6f写入到考生目录中Paper子目录下新建文献design.dat中。#include#includevoid main() FILE *p; int i; float x10=-1.5,2.1,6.3,3.2,-0.7,7.0,5.1,3.2,4.5,7.6; float y10=3.5,7.
31、6,8.1,4.5,6.0,1.1,1.2,2.1,3.3,4.4; float s=0.0; /*如下规定考生写代码*/ p=fopen(“design.dat”,”w”); /以写方式打开文献 for(i=0;i10;i+)s=s+sqrt((xi-1)*(xi-1)+(yi-1)*(yi-1); /求与点(1.0,1.0)距离之和fprintf(p,”%.6f”,s); /以%.6f格式将和写到文献fclose(p);试题二设计程序:数组元素xi、yi表达平面上某点坐标,记录所有各点间最短距离,并将其值以格式%f写到考生目录中Paper子目录下新建文献design.dat中。#inclu
32、de #include #define len(x1,y1,x2,y2) sqrt(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)void main() FILE *p;int i,j;float c,minc; float x=1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65; float y=-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33; minc=len(x0,y0,x1,y1); /*如下规定考生写代码*/p=fopen(“design.dat”,”w”);for(i=0;i10;
33、i+) for(j=i+1;j10;j+) c=len(xi,yi,xj,yj); if(cminc) minc=c; fprintf(p,”%f”,minc);fclose(p); 试题三设计程序:数组元素xi、yi表达平面上某点坐标,记录10个点中处在圆 (x-1)*(x-1)+(y+0.5)*(y+0.5)=25内点数k,并将变量k值 以格式%d写到考生目录中Paper子目录下新建文献design.dat中。#include #include void main() FILE *p;int i,k=0; float x=1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5
34、.6,0.97,4.65; float y=-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33; /考生在这里添加代码 p=fopen(design.dat,w);for(i=0;i10;i+)if(xi-1)* (xi-1)+ (yi-0.5)* (yi-0.5)25) k+; fprintf(p,%d,k); fclose(p);试题四程序设计题:考生目录下有Design.c程序,请完毕如下功能:xi,yi表达点d(i)平面坐标,求d(0)至d(1)、d(1)至d(2)、d(4)至d(0)连线所构成边形面积,并将所求面积以格式“%.4f”写到考生目录下新建文献design.dat。#include #include void main( ) FILE 8p;int i;float s,a,b,c,sdim=0;float x5=-