收藏 分享(赏)

C语言省二级考试上机模拟试题库.doc

上传人:HR专家 文档编号:11669861 上传时间:2020-11-04 格式:DOC 页数:27 大小:93.51KB
下载 相关 举报
C语言省二级考试上机模拟试题库.doc_第1页
第1页 / 共27页
C语言省二级考试上机模拟试题库.doc_第2页
第2页 / 共27页
C语言省二级考试上机模拟试题库.doc_第3页
第3页 / 共27页
C语言省二级考试上机模拟试题库.doc_第4页
第4页 / 共27页
C语言省二级考试上机模拟试题库.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、C语言省二级考试上机模拟试题库试题整理时间:2006、3、7一、求最值问题1,以下程序中_ N _是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:对x=1,2,.,10,求f(x)=x*x-5*x+sin(x)的最大值。#include #include #define f(x) x*x-5*x+sin(x)void main() int x; float max; max=f(1); for(x=2;x=10;x+) if(maxf(x) max=f(x); printf(%fn,max);2,设计程序:对x=1,2,.,10,求函数

2、f(x)=x-10*cos(x)-5*sin(x)的最大值,并将该数以格式%.3f写到考生目录中Paper子目录下的新建文件design.dat。#include #include void main() FILE *p;float f(float),max,x; max=f(1); for(x=2;x=10;x+) if(maxf(x) max=f(x); printf(%.3f,max); p=fopen(“design.dat”,”w”); fprintf(p, %.3f,max); fclose(p);float f(float x)return (x-10*cos(x)-5*sin(

3、x);3,设计程序:z=f(x,y)=(3.14*x-y)/(x+y),若x、y取值为区间1,6的整数,找出使z取最小值的x1、y1,并将x1、y1以格式%d,%d写到考生目录中Paper子目录下的新建文件design.dat。 #include void main() FILE *p;float f(float x,float y),min; int x,y,x1,y1; min=f(1,1);x1=1;y1=1; for(x=1;x=6;x+)for(y=1;yf(x,y) min=f(x,y);x1=x;y1=y;printf(“%d,%d”,x1,y1);p=fopen(“design

4、.dat”,”w”); fprintf(p, “%d,%d”,x1,y1); fclose(p); float f(float u,float v) return (3.14*u-v)/(u+v); 4,设计程序:在数组x的10个数中求平均值v,找出与v相差最小的数组元素并将其以格式%.5f写到考生目录中Paper子目录下的新建文件design.dat。 #include #include void main() FILE *p;int i,k=0;float x10=7.23,-1.5,5.24,2.1,-12.45,6.3,-5,3.2,-0.7,9.81,d,v=0;for(i=0;i1

5、0;i+) v+=xi; v=v/10; d=fabs(x0-v); for(i=1;i10;i+)if(fabs(xi-v)d) d= fabs(xi-v); k=i; printf(“%.5f”,xk);p=fopen(“design.dat”,”w”); fprintf(p, “%.5f”,xk); fclose(p);二、素数/合数/亲密数对/质数因子1,设计程序:计算500800区间内素数的个数cnt,并按所求素数的值从大到小的顺序,再计算其间隔加、减之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数的值sum。请编写函数JSValue()实现程序的要求。最后把cnt

6、和sum写到考生目录中Paper子目录下的新建文件design.dat。#includeint cnt,sum;void JSValue() int i,j,half,values100; cnt=0;sum=0; for(i=800;i=500;i-) half=i/2;for(j=2;j=half;j+) if(i%j=0)break; if(j=half+1) valuescnt=i;cnt+; for(i=0;icnt;i+)if(i%2=0) sum+=valuesi;else sum-=valuesi;void main() FILE *p;JSValue(); printf(%d

7、,%d,cnt,sum);p=fopen(“design.dat”,”w”); fprintf(p, %d,%d,cnt,sum); fclose(p);2,设计程序:计算500800区间内素数的个数cnt和素数和sum。请编写函数JSValue()实现程序的要求。最后把cnt和sum写到考生目录中Paper子目录下的新建文件design.dat。#includeint cnt,sum;void JSValue() int i,j,half; cnt=0;sum=0; for(i=500;i=800;i+) half=i/2;for(j=2;j=half;j+) if(i%j=0) break

8、; if(j=half+1) sum+=i;cnt+; void main() FILE *p;JSValue(); printf(%d,%d,cnt,sum); p=fopen(“design.dat”,”w”); fprintf(p, %d,%d,cnt,sum); fclose(p);3,以下程序中_ N _是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:输出61000之间的完数(1个数的因子和等于其自身的数:6=1+2+3、28=1+2+4+7+14,则6、28都是完数)。#include void main() int i,j

9、,s; for(i=6;i=1000;i+) s=1; for(j=2;j=i/2;j+) if(i%j=0) s+=j; if(s=i) printf(%dn,s); 4,设计程序:在6至10000内找出所有的合数,并顺序将每个合数用语句 “printf(%6d,n)” 写到考生目录中Paper子目录下的新建文件design.dat。说明:某数等于其诸因子之和则该数为合数,如6=1+2+3,28=1+2+4+7+14则6、28就是合数。#include void main() int n,i,s; FILE *p; for(n=6;n=10000;n+) s=1; for(i=2;i=n/2

10、;i+) if(n%I=0) s+=i; if(s=n) printf(“%6d”,n);p=fopen(“design.dat”,”w”); fprintf(p, “%6d”,n); fclose(p); 5,设计程序:在6至5000内找出所有的亲密数对,并将每对亲密数用语句printf(%6d,%6dn,a,b);” 写到考生目录中Paper子目录下的新建文件design.dat。说明:若a,b为1对亲密数,则a的因子和等于b,b的因子和等于a、且a不等于b。如:220、284是1对亲密数,284、220也是1对亲密数。#include void main() int a,b,c,k; F

11、ILE *p;for(a=6;a=5000;a+)c=1;for(i=2;i=a/2;i+) if(a%i=0)c+=i;for(b=a+1;b=5000;b+) if(b!=c) continue; else k=1; for(i=2;i=b/2;i+) if(b%i=0) k+=i; if(k=a) printf(“%6d%6dn”,a,b); p=fopen(“design.dat”,”w”); fprintf(p, “%6d%6dn”,a,b); fclose(p);6,以下程序中“/* N * /”的下一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能

12、:运行时输入n,输出n的所有质数因子(如n=13860,则输出2、2、3、3、5、7、11)。#include void main() int n,i; scanf(%d,&n); /* 1 */ i=2; while(n1) if(n%i=0) printf(%dt,i); n/=i; else /* 2 */ i+;三、公倍数/公约数1,在以下程序中“/* N * /”的下一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:输入m、n(要求输入数均大于0,且m=n),输出它们的最小公倍数。#include void main() int m,n,k; /*

13、1 */ while(scanf(%d%d,&m,&n),m=0| n=0|mn); for(k=m; k%n!=0;) /* 2 */ k=k+m; printf(%dn,k);2,在以下程序中_ N _是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:输入m、n(要求输入数均大于0),输出它们的最大公约数。#include void main() int m,n,k; while(scanf(%d%d,&m,&n), m=0|n=0 ); for(k=m=n?m:n ; n%k!=0|m%k!=0; k-); printf(%dn,k

14、);四、一维数组/二维数组1,以下程序中_ N _是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能: 求出a中各相邻两个元素的和,并将这些和存放在数组b中,按每行3个元素的形式输出。例如:b1=a1+a0,b9=a9+a8。#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+ai-1; /* 计算b数组中的元素 */ for

15、 (i=1; i10; i+) printf(%3d,bi); if (i%3=0) printf(n); /* 每行打印3个数据 */ 2,设计程序:将数组a的每1行均除以该行上的主对角元素(第1行同除以a00,第2行同除以a11,.),然后将a数组写到考生目录中Paper子目录下的新建文件design.dat。#include void main() float a33=1.3,2.7,3.6,2,3,4.7,3,4,1.27; FILE *p; int i,j;float t; for(i=0;i3;i+) t=aii;for(j=0;j3;j+)aij/=t;p=fopen(desig

16、n.dat,w); for(i=0;i3;i+) for(j=0;j3;j+) fprintf(p,%10.6f,aij); fprintf(p,n); fclose(p); 3,设计程序:将数组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)fa

17、bx(aij) x=fabs(aij);for(j=0;j3;j+) aij/=x;p=fopen(design.dat,w); for(i=0;i3;i+) for(j=0;j3;j+) fprintf(p,%10.6f,aij); fprintf(p,n); fclose(p); 4,以下程序中_ N _是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:调用函数f,求二维数组a中全体元素之和。#include float f(int *x ,int m,int n) float y=0; int i,j; for(i=0;im;i+)

18、 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=ai; printf(%.2fn,f(b,3,4);五、回文1,设计程序:寻找并输出11至999之间的数m,它满足m、m*m、m*m*m均为回文数。所谓回文数是指各位数字左右对称,例如121、676、94249等。满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。请编制函数int JSValue(long m)实现此功能,如果是回文数,则

19、函数返回1,反之则返回0。最后把结果写到考生目录中Paper子目录下的新建文件design.dat。#include#include#includeint JSValue(long m) int i=0,j,a100; while(m!=0)ai=m%10;m/=10;i+;for(j=0;ji/2;j+) if(aj!=ai-1-j) return 0;return 1;void main() long m; FILE *p; p=fopen(design.dat,w);for(m=11;m1000;m+) if(JSValue(m)&JSValue(m*m)&JSValue(m*m*m)f

20、printf(p,%ldn,m); fclose(p); 六、求多项式之和1,以下程序中“/* N * /”的下一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:输入x和正数eps,计算多项式1-x+x*x/2!-x*x*x/3!+.的和直到末项的绝对值小于eps为止。#include #include void main() float x,eps,s=1,t=1,i=1; scanf(%f%f,&x,&eps); do /* 1 */ t=-t*x/ i +; s+=t; /* 2 */ while(fabs(t)=eps); printf(%fn,s);

21、2,设计程序:计算多项式a0-a1*x+a2*x*x/2!-a3*x*x*x/3!+.的值, 并将其以格式%f写到考生目录中Paper子目录下的新建文件design.dat。#include #include void main() int i; float x=1.279,t,y; FILE *p; float a10=1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65; y=a0;t=a0; for(i=1;i=9;i+)t=-t*ai*x/(i*ai-1); y+=t; printf(“%f”,y);p=fopen(“design.dat”,”w

22、”); fprintf(p, “%f”,y);fclose(p);3,设计程序:计算表达式1+2!+3!+.+12!的值,并将计算结果以格式%ld写到考生目录中Paper子目录下的新建文件design.dat。#include void main() long s=1,k=1; int i;FILE *p; for(i=2;i=12;i+) k=k*i; s+=k; printf(“%ld”,s);p=fopen(“design.dat”,”w”); fprintf(p, “%ld”,s);fclose(p);4,设计程序:计算数列1,-1/3!,1/5!,-1/7!,1/9!,.的和至某项的

23、绝对值小于1e-5时为止(该项不累加),将求和的结果以格式%.6f写到考生目录中Paper子目录下的新建文件design.dat。#include #include void main() float s=1,t=1,i=3; FILE *p; while(fabs(t)=1e-5) t=-t/i/(i-1);i=i+2;s+=t; printf(“%.6f”,s);p=fopen(“design.dat”,”w”); fprintf(p, “%.6f”,s);fclose(p);5,以下程序中_ N _是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负

24、)。该程序功能:调用函数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( float x,float *a,int n ) float y=a0,t=1; int i; for(i=1;in;i+) t=t*x; y=y+ai*t; return y;6,设计程序:计算多项式a0+a1*x+a2*x*x+a3*x*x

25、*x+.的值,并将其值以格式%f写到考生目录中Paper子目录下的新建文件design.dat。#include #include void main() 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; FILE *p; y=a0; for(i=1;i=9;i+) t=t*x; y=y+ai*t; printf(“%f”,y);p=fopen(“design.dat”,”w”); fprintf(p, “%f”,y);fclose(p);7,设计程序:有数列:2/1,

26、3/2,5/3,8/5,13/8,21/13,求出数列的前40项的和。将结果以格式%.6f写到考生目录中Paper子目录下的新建文件design.dat。#includevoid main() int i; float f1=1.0,f2=2.0,t1=2.0,t2=3.0,s; float f,t; FILE *p; s=t1/f1+t2/f2; for(i=0;i38;i+) f=t2; t=t2+f2; s=s+t/f; t2=t; f2=f;printf(“%.6f”,s);p=fopen(“design.dat”,”w”); fprintf(p, “%.6f”,s);fclose(p

27、);8,设计程序:数列各项为1,1,2,3,5,8,13,21,.,求其前40项之和,并将求和的结果以格式%ld写到考生目录中Paper子目录下的新建文件design.dat。#include void main() long s=0,i,a40; FILE *p; a0=1;a1=1; s= a0+ a1; for(i=2;i40;i+) ai=ai-1+ai-2;s=s+ai; printf(“%ld”,s);p=fopen(“design.dat”,”w”); fprintf(p, “%ld”,s);fclose(p); 9,设计程序:数列第1项为81,此后各项均为它前1项的正平方根,统

28、计该数列前30项之和,并以格式%.3f写到考生目录中Paper子目录下的新建文件design.dat。#include #include void main() float s=0,a=81,i; FILE *p; for(i=1;i30;i+) s=s+a;a=sqrt(a); printf(“%.3f”,s);p=fopen(“design.dat”,”w”); fprintf(p, “%.3f”,s);fclose(p);10,设计程序:计算多项式a0+a1*sin(x)+a2*sin(x*x)+a3*sin(x*x*x)+的值,并将其值以格式%.6f写到考生目录中Paper子目录下的新

29、建文件design.dat。#include#includevoid main() 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; FILE *p; y=a0; for(i=1;i=9;i+) t=t*x; y=y+ai*sin(t); printf(“%.6f”,y);p=fopen(“design.dat”,”w”); fprintf(p, “%.6f”,y);fclose(p);11,以下中程序“/* N * /”的下一行中有错误,请改正(注意:不得加行、减

30、行、加句、减句,否则后果自负)。该程序功能:运行时若输入a、n分别为3、6,则输出下列表达式的值:3+33+333+3333+33333+333333。#include void main() int i,a,n; long t=0; /* 1 */ long s=0; scanf(%d%d,&a,&n); for(i=1;i=n;i+) /* 2 */ t=t*10+1; s=s+t; s=s*a; printf(%ldn,s);12,在以下程序中_ N _是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:数列的第1、2项均为1,此后各

31、项值均为该项前二项之和。计算数列第30项的值。#include long f(int n);void main() printf(%ldn,f(30);long f(int n) if( n=1|n=2) return 1; else return f(n-1)+f(n-2);13,设计程序:累加a字符串中各个字符的ASCII码值,然后将累加和以格式%d写到考生目录中Paper子目录下的新建文件design.dat。#include void main() int s=0,i=0; FILE *p; char *a=r235%34cdDW,.; while(*a!=0) s=s+aIi; i+

32、;printf(“%d”,s);p=fopen(“design.dat”,”w”); fprintf(p, “%d”,s);fclose(p); 14,设计程序:计算2的平方根、3的平方根、.、10的的平方根之和,要求计算结果具有小数点后10位有效位数,并以格式%.10fn写到考生目录中Paper子目录下的新建文件design.dat。#include #include void main() double s=0,t=0;int i; FILE *p; for(i=2;i=10;i+)s=s+sqrt(i);printf(“%.10fn”,s);p=fopen(“design.dat”,”w

33、”); fprintf(p, “%.10fn”,s);fclose(p); 七、排序1,以下程序中“/* N * /”的下一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:用选择法对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-1;i+) /* 排序操作 */ min

34、 = i; for (j=i+1; j=aj) min =j; /* 2 */ temp=amin; amin=ai; ai=temp; /* 数据交换 */ printf(nThe sorted numbers: n); /* 输出排序结果 */ for (i=0;iN;i+) printf(%5d,ai); printf(n);2,设计程序:将字符串s中的所有字符按ASCII值从小到大重新排序后,将排序后的字符串写到考生目录中Paper子目录下的新建文件design.dat。#include #include void main() char *s=634,.%w|SQ2,c; int i

35、,j,k,n=strlen(s); FILE *p; for(j=0;jn-1;j+) for(i=0;iss+1) c=si;si=si+1;si+1=c;p=fopen(“design.dat”,”w”); for(i=0;in;i+) fputc(si,p); fclose(p);八、逆序1,以下程序中_ N _是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:调用函数f,将字符串中的所有字符逆序存放,然后输出。例如,输入字符串为123456,则程序的输出结果为654321。#include #include void main()

36、 char s60,*f(char*); gets(s); printf(%sn,f(s);char * f(char* x) char t; int i,n; n=strlen(x); for(i=0;in/2;i+) t=xi; xi=xn-1-i; xn-1-i=t; return x;2,以下程序中“/* N * /”的下一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:用递归法将一个六位整数n转换成字符串,例如输入123456,应输出字符串123456。#includevoid itoa(long i,char *s) if(i=0) return;

37、 /* 1 */ *s = 0+i%10; itoa(i/10,s-1);void main() long n; char str7=; scanf(%ld,&n); /* 2 */ itoa(n,str+5); printf(%s,str);九、平面距离问题1,设计程序:xi,yi分别表示平面上一个点的坐标,求下列10个点与点(1.0,1.0)的距离的总和,并将结果以格式%.6f写到考生目录中Paper子目录下的新建文件design.dat。#include#includevoid main() int i; float x10=-1.5,2.1,6.3,3.2,-0.7,7.0,5.1,3

38、.2,4.5,7.6; float y10=3.5,7.6,8.1,4.5,6.0,1.1,1.2,2.1,3.3,4.4; float s=0.0;FILE *p; float sx,sy; for(i=0;i10;i+) sx=(xi-1.0)*(xi-1.0); sy=(yi-1.0)*(yi-1.0); s+=sqrt(sx+sy); printf(%.6f,s);p=fopen(“design.dat”,”w”); fprintf(p, %.6f,s);fclose(p);2,设计程序:数组元素xi、yi表示平面上某点坐标,统计所有各点间最短距离,并将其值以格式%f写到考生目录中Paper子目录下的新建文件design.dat。#include #include #define len(x1,y1,x2,y2) sqrt(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)void main() 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;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 其他相关文档

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报