C语言省二级考试上机模拟试题库.docx
- 文档编号:29037248
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:46
- 大小:28.58KB
C语言省二级考试上机模拟试题库.docx
《C语言省二级考试上机模拟试题库.docx》由会员分享,可在线阅读,更多相关《C语言省二级考试上机模拟试题库.docx(46页珍藏版)》请在冰豆网上搜索。
C语言省二级考试上机模拟试题库
C语言省二级考试上机模拟试题库
试题整理时间:
2006、3、7
一、求最值问题
1,以下程序中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意:
不得加行、减行、加句、减句,否则后果自负)。
该程序功能:
对x=1,2,...,10,求f(x)=x*x-5*x+sin(x)的最大值。
#include
#include
#definef(x)=x*x-5*x+sin(x)
voidmain()
{intx;floatmax;
max=f
(1);
for(x=2;x<=10;x++)
if(max printf("%f\n",max); } 2,设计程序: 对x=1,2,...,10,求函数f(x)=x-10*cos(x)-5*sin(x)的最大值,并将该数以格式"%.3f"写到考生目录中Paper子目录下的新建文件design.dat。 #include #include voidmain() {FILE*p; floatf(float),max,x; max=f (1); for(x=2;x<=10;x++) if(max printf("%.3f",max); p=fopen(“design.dat”,”w”); fprintf(p,"%.3f",max); fclose(p); } floatf(floatx) {return(x-10*cos(x)-5*sin(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 voidmain() {FILE*p; floatf(floatx,floaty),min; intx,y,x1,y1; min=f(1,1);x1=1;y1=1; for(x=1;x<=6;x++) for(y=1;y<=6;y++) if(min>f(x,y)){min=f(x,y);x1=x;y1=y;} printf(“%d,%d”,x1,y1); p=fopen(“design.dat”,”w”); fprintf(p,“%d,%d”,x1,y1); fclose(p); } floatf(floatu,floatv) {return(3.14*u-v)/(u+v);} 4,设计程序: 在数组x的10个数中求平均值v,找出与v相差最小的数组元素并将其以格式"%.5f"写到考生目录中Paper子目录下的新建文件design.dat。 #include #include voidmain() {FILE*p; inti,k=0; floatx[10]={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;i<10;i++)v+=x[i];v=v/10;d=fabs(x[0]-v); for(i=1;i<10;i++) if(fabs(x[i]-v) printf(“%.5f”,x[k]); p=fopen(“design.dat”,”w”); fprintf(p,“%.5f”,x[k]); fclose(p); } 二、素数/合数/亲密数对/质数因子 1,设计程序: 计算500~800区间内素数的个数cnt,并按所求素数的值从大到小的顺序,再计算其间隔加、减之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数……的值sum。 请编写函数JSValue()实现程序的要求。 最后把cnt和sum写到考生目录中Paper子目录下的新建文件design.dat。 #include intcnt,sum; voidJSValue() {inti,j,half,values[100]; 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){values[cnt]=i;cnt++;} } for(i=0;i if(i%2==0)sum+=values[i]; elsesum-=values[i]; } voidmain() {FILE*p; JSValue(); printf("%d,%d",cnt,sum); p=fopen(“design.dat”,”w”); fprintf(p,"%d,%d",cnt,sum); fclose(p); } 2,设计程序: 计算500~800区间内素数的个数cnt和素数和sum。 请编写函数JSValue()实现程序的要求。 最后把cnt和sum写到考生目录中Paper子目录下的新建文件design.dat。 #include intcnt,sum; voidJSValue() {inti,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; if(j==half+1){sum+=i;cnt++;} } } voidmain() {FILE*p; JSValue(); printf("%d,%d",cnt,sum); p=fopen(“design.dat”,”w”); fprintf(p,"%d,%d",cnt,sum); fclose(p); } 3,以下程序中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 输出6~1000之间的完数(1个数的因子和等于其自身的数: 6=1+2+3、28=1+2+4+7+14,则6、28都是完数)。 #include voidmain() {inti,j,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("%d\n",s); } } 4,设计程序: 在6至10000内找出所有的合数,并顺序将每个合数用语句“printf("%6d",n)”写到考生目录中Paper子目录下的新建文件design.dat。 说明: 某数等于其诸因子之和则该数为合数,如6=1+2+3,28=1+2+4+7+14则6、28就是合数。 #include voidmain() {intn,i,s;FILE*p; for(n=6;n<=10000;n++) {s=1; for(i=2;i<=n/2;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,%6d\n",a,b);”写到考生目录中Paper子目录下的新建文件design.dat。 说明: 若a,b为1对亲密数,则a的因子和等于b,b的因子和等于a、且a不等于b。 如: 220、284是1对亲密数,284、220也是1对亲密数。 #include voidmain() {inta,b,c,k;FILE*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%6d\n”,a,b); } } p=fopen(“design.dat”,”w”); fprintf(p,“%6d%6d\n”,a,b); fclose(p); } } 6,以下程序中“/*****N*****/”的下一行中有错误,请改正(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 运行时输入n,输出n的所有质数因子(如n=13860,则输出2、2、3、3、5、7、11)。 #include voidmain() {intn,i; scanf("%d",&n); /******1******/ i=2; while(n>1) if(n%i==0){ printf("%d\t",i); n/=i; } else /********2*******/ i++; } 三、公倍数/公约数 1,在以下程序中“/*****N*****/”的下一行中有错误,请改正(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 输入m、n(要求输入数均大于0,且m>=n),输出它们的最小公倍数。 #include voidmain() {intm,n,k; /********1*********/ while(scanf("%d%d",&m,&n),m<=0||n<=0||m for(k=m;k%n! =0;) /********2********/ k=k+m; printf("%d\n",k); } 2,在以下程序中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 输入m、n(要求输入数均大于0),输出它们的最大公约数。 #include voidmain() {intm,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("%d\n",k); } 四、一维数组/二维数组 1,以下程序中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 求出a中各相邻两个元素的和,并将这些和存放在数组b中,按每行3个元素的形式输出。 例如: b[1]=a[1]+a[0],……,b[9]=a[9]+a[8]。 #include voidmain() {inta[10],b[10],i; printf("Input10numbers\n: "); for(i=0;i<10;i++)/*数组输入*/ scanf("%d",&a[i]); for(i=1;i<10;i++) b[i]=a[i]+a[i-1];/*计算b数组中的元素*/ for(i=1;i<10;i++) {printf("%3d",b[i]); if(i%3==0)printf("\n");/*每行打印3个数据*/ } } 2,设计程序: 将数组a的每1行均除以该行上的主对角元素(第1行同除以a[0][0],第2行同除以a[1][1],...),然后将a数组写到考生目录中Paper子目录下的新建文件design.dat。 #include voidmain() {floata[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};FILE*p; inti,j;floatt; for(i=0;i<3;i++) {t=a[i][i]; for(j=0;j<3;j++) a[i][j]/=t; } p=fopen("design.dat","w"); for(i=0;i<3;i++){ for(j=0;j<3;j++)fprintf(p,"%10.6f",a[i][j]); fprintf(p,"\n"); } fclose(p); } 3,设计程序: 将数组a的每1行均除以该行上绝对值最大的元素,然后将a数组写到考生目录中Paper子目录下的新建文件design.dat。 #include #include voidmain() {floata[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};FILE*p; floatx;inti,j; for(i=0;i<3;i++) {x=a[i][0]; for(j=0;j<3;j++) if(fabs(x) for(j=0;j<3;j++)a[i][j]/=x; } p=fopen("design.dat","w"); for(i=0;i<3;i++){ for(j=0;j<3;j++)fprintf(p,"%10.6f",a[i][j]); fprintf(p,"\n"); } fclose(p); } 4,以下程序中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 调用函数f,求二维数组a中全体元素之和。 #include floatf(int*x[],intm,intn) {floaty=0;inti,j; for(i=0;i returny; } voidmain() {floata[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*b[3]; inti; for(i=0;i<3;i++)b[i]=a[i]; printf("%.2f\n",f(b,3,4)); } 五、回文 1,设计程序: 寻找并输出11至999之间的数m,它满足m、m*m、m*m*m均为回文数。 所谓回文数是指各位数字左右对称,例如121、676、94249等。 满足上述条件的数如m=11,m^2=121,m^3=1331皆为回文数。 请编制函数intJSValue(longm)实现此功能,如果是回文数,则函数返回1,反之则返回0。 最后把结果写到考生目录中Paper子目录下的新建文件design.dat。 #include #include #include intJSValue(longm) {inti=0,j,a[100]; while(m! =0) {a[i]=m%10;m/=10;i++;} for(j=0;j if(a[j]! =a[i-1-j])return0; return1; } voidmain() {longm;FILE*p; p=fopen("design.dat","w"); for(m=11;m<1000;m++) if(JSValue(m)&&JSValue(m*m)&&JSValue(m*m*m)) fprintf(p,"%ld\n",m); fclose(p); } 六、求多项式之和 1,以下程序中“/*****N*****/”的下一行中有错误,请改正(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 输入x和正数eps,计算多项式1-x+x*x/2! -x*x*x/3! +...的和直到末项的绝对值小于eps为止。 #include #include voidmain() {floatx,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("%f\n",s); } 2,设计程序: 计算多项式a0-a1*x+a2*x*x/2! -a3*x*x*x/3! +...的值,并将其以格式"%f"写到考生目录中Paper子目录下的新建文件design.dat。 #include #include voidmain() {inti;floatx=1.279,t,y;FILE*p; floata[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65}; y=a[0];t=a[0]; for(i=1;i<=9;i++) {t=-t*a[i]*x/(i*a[i-1]);y+=t;} printf(“%f”,y); p=fopen(“design.dat”,”w”); fprintf(p,“%f”,y); fclose(p); } 3,设计程序: 计算表达式1+2! +3! +...+12! 的值,并将计算结果以格式"%ld"写到考生目录中Paper子目录下的新建文件design.dat。 #include voidmain() {longs=1,k=1;inti;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! ...的和至某项的绝对值小于1e-5时为止(该项不累加),将求和的结果以格式"%.6f"写到考生目录中Paper子目录下的新建文件design.dat。 #include #include voidmain() {floats=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____"是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 调用函数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 floatf(float,float*,int); voidmain() {floatb[5]={1.1,2.2,3.3,4.4,5.5}; printf("%f\n",f(1.7,b,5)); } floatf(floatx,float*a,intn) {floaty=a[0],t=1;inti; for(i=1;i returny; } 6,设计程序: 计算多项式a0+a1*x+a2*x*x+a3*x*x*x+...的值,并将其值以格式"%f"写到考生目录中Paper子目录下的新建文件design.dat。 #include #include voidmain() {inti;floatx=1.279,t=1,y=0; floata[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};FILE*p; y=a[0]; for(i=1;i<=9;i++) {t=t*x;y=y+a[i]*t;} printf(“%f”,y); p=fopen(“design.dat”,”w”); fprintf(p,“%f”,y); fclose(p); } 7,设计程序: 有数列: 2/1,3/2,5/3,8/5,13/8,21/13,……求出数列的前40项的和。 将结果以格式"%.6f"写到考生目录中Paper子目录下的新建文件design.dat。 #include voidmain() {inti; floatf1=1.0,f2=2.0,t1=2.0,t2=3.0,s; floatf,t;FILE*p; s=t1/f1+t2/f2; for(i=0;i<38;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); } 8,设计程序: 数列各项为1,1,2,3,5,8,13,21,...,求其前40项之和,并将求和的结果以格式"%ld"写到考生目录中Paper子目录下的新建文件design.dat。 #include voidmain() {longs=0,i,a[40];FILE*p; a[0]=1;a[1]=1;s=a[0]+a[1]; for(i=2;i<40;i++) {a[i]=a[i-1]+a[i-2]; s=s+a[i]; } printf(“%ld”,s); p=fopen(“design.dat”,”w”); fprintf(p,“%ld”,s); fclose(p); } 9,设计程序: 数列第1项为81,此后各项均为它前1项的正平方根,统计该数列前30项之和,并以格式"%.3f"写到考生目录中Paper子目录下的新建文件design.dat。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 二级 考试 上机 模拟 试题库