《浙江省计算机《C语言程序设计》考试上机模拟题.pdf》由会员分享,可在线阅读,更多相关《浙江省计算机《C语言程序设计》考试上机模拟题.pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、浙江省计算机二级 C 程序设计上机模拟题第三部分第三部分 C C 程序设计上机模拟题程序设计上机模拟题(一)(一)上机修改题上机修改题1.在考生目录下,有 Modify.c 程序,该程序中”/*N*/”的下一行中 有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:输入 m、n(要求输入数均大于 0),输出它们的最小公倍数 /*findtheleasecommonmultipleofmandn*/#include voidmain()intm,n,k;/*1*/while(scanf(%d%d,&m,&n),m0&n0m0&n0);/m0|n0m0|n0 for(k=
2、m;k%n!=0;)/*2*/k=k+m%n;k=k+m%n;/k=k+mk=k+m printf(%dn,k);2.在考生目录下,有 Modify.c 程序,该程序中/*N*/的下一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:运行时若输入 a、n 分别为 3、6,则输出下列表达式的值:3+33+333+3333+33333+333333#includevoidmain()inti,a,n,t=0;/*1*/s=0;s=0;/ints=0;/ints=0;scanf(%d%d,&a,&n);for(i=1;i=n;i+)/*2*/t=t*10+i;t=t*
3、10+i;/t=t*10+1t=t*10+1;s=s+t;s=s*a;printf(%dn,s);3.在考生目录下,有 Modify.c 程序,该程序中/*N*/的下一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:运行时输入 n,输出 n 各位数字之和(如 n=1308 则输出 12,n=-3204则输出 9)。#include#include voidmain()intn,s=0;scanf(%d,&n);n=fabs(n);/*1*/while(n1n1)/n ns=s+n%10;/*2*/n=n%10;n=n%10;/n=n/10;/n=n/10;pr
4、intf(%dn,s);4.在考生目录下,有 Modify.c 程序,该程序中/*N*/的下一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:输入 1 个字符串,输出其中所出现过的大写英文字母。如运行时输入字符串FONTNAMEandFILENAME,应输出FONTAMEIL。#include voidmain()charx80,y26;inti,j,ny=0;gets(x);for(i=0;xi!=0;i+)if(xi=A&xi=Z)for(j=0;jny;j+)/*1*/if(yi=xjyi=xj)continue;continue;/if(yj=xi)b
5、reak;if(yj=xi)break;if(j=ny)yny=xi;ny+;/*2*/for(i=0;i26i26;i+)/inyiny printf(%c,yi);printf(n);5.在考生目录下,有 Modify.c 程序,该程序中/*N*/的下一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:输入 x、eps,计算多项式 1-x+x*x/2!-x*x*x/3!+.的和直到末项的绝对值小于 eps 为止。#include#includevoidmain()floatx,eps,s=1,t=1,i=1;scanf(%f%f,&x,&eps);do /*
6、1*/t=-t*x/+i;t=-t*x/+i;/t=-t*x/i+;t=-t*x/i+;s+=t;/*2*/while(fabs(t)=eps)/少少;printf(%fn,s);6.在考生目录下,有 Modify.c 程序,该程序中/*N*/的下一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:分别统计字符串中所有英文字母中的各元音字母个数。#include#includevoidmain()chara80;intn5=0,i;gets(a);for(i=0;ai!=0;i+)/*1*/switch(tolower(a+i)tolower(a+i)/swit
7、ch(tolower(ai)switch(tolower(ai)casea:n0+;break;casee:n1+;break;casei:n2+;break;caseo:n3+;break;/*2*/caseUU:n4+;break;/uu for(i=0;i5;i+)printf(%dn,ni);7.在考生目录下,有 Modify.c 程序,该程序中/*N*/的下一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)该程序功能:输入 n(0n10)后,输出 1 个数字金字塔。如输入 n 为 4,则输出:1 222 33333 4444444#includevoidmain(
8、)inti,j,n;/*1*/scanf(%d,n n);/&n&n for(i=1;i=n;i+)for(j=1;j=n+1-i;j+)putchar();for(j=1;j=2*i-1;j+)putchar(char)(i+48);/*2*/putchar(nn);/nn 8.在考生目录下,有 Modify.c 程序,该程序中/*N*/的下一行中 有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:运行时输入 10 个数,然后分别输出其中的最大值、最小值。#include voidmain()floatx,max,min;/*1*/for(inti=1;for(i
9、nti=1;i=10;i+)/C C 中不能这样用中不能这样用,改为:改为:inti;for(i=1;i=10;i+)inti;for(i=1;imax)max=x;if(xmin)min=x;printf(%f,%fn,max,min);9.在考生目录下,有 Modify.c 程序,该程序中/*N*/的下一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:运行时输入 n,输出 n 的所有质数因子(如 n=13860,则输出 2、2、3、3、5、7、11)。#include voidmain()intn,i;scanf(%d,&n);/*1*/i=1;i=1;/
10、i=2;i=2;while(n1)if(n%i=0)printf(%dt,i);n/=i;else /*2*/n-;n-;/i+;i+;10.在考生目录下,有 Modify.c 程序,该程序中“/*N*/”的下一行中有错误,请改正(注意:不得加行、减/行、加句、减句,否则后果自负)。该程序功能:输入 n 以及小于 n 个字符的字符串,将字符串中所有小写字母改为相应的大写字母后,输出该字符串。#include#include#include voidmain()intn,i;/*1*/charstr;charstr;/char*str*str scanf(%dn,&n);str=(char*)m
11、alloc(n);gets(str);/*2*/for(i=1i=1;i=a&stri=z)stri=stri-32;puts(str);(二)(二)上机填充题上机填充题1.在考生目录下,有 Modify.c 程序,该程序中_N_是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:输入 m、n(要求输入数均大于 0),输出它们的最大公约数。#include voidmain()intm,n,k;while(scanf(%d%d,&m,&n);_1_1_);/m0|n0m0|n0 for(_2_2_;n%k!=0|m%k!=0;k-);/k=
12、mn?m:nk=mn?m:n printf(%dn,k);2.在考生目录下,有 Modify.c 程序,该程序中_N_是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:函数 f 将 1 个整数首尾倒置,程序输出结果应为54321 -76543。#include#include intf(intn)intm,y=0;m=fabs(n);while(m!=0)y=y*10+m%10;1 1 ;/m=m/10/m=m/10 if(n=0)returny;else 2 2 ;/return(-y);return(-y);voidmain()pri
13、ntf(%dt,f(12345);printf(%dn,f(-34567);3.在考生目录下,有 Modify.c 程序,该程序中_N_是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:输入 1 个整数后,输出该数的位数若输入 3214 则输出 4,输入-23156则输出 5)。#includevoidmain()intn,k=0;scanf(%d,&n);while(1 1 )/n%10n%10 k+;2 2 ;/n=n/10n=n/10 printf(%dn,k);4.在考生目录下,有 Modify.c 程序,该程序中_N_是根据程序
14、功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:运行时输出下列结果。abcdefg abcde abc a#includevoidmain()inti,j;chark;for(i=1;i=4;i+)for(j=1;j0;j-)k=(char)k+;printf(“%c”,2 2 );/k-1k-1 putchar(n);5.在考生目录下,有 Modify.c 程序,该程序中_N_是根据程序功能需要填充 部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:输入整数 n(n0)求 m,使得 2 的 m 次方小于或等于
15、n、2 的 m+1 次方大于或等于 n。#include voidmain()inti=0,t=1,n;while(_1_1_);/scanf(“%d”,&n),scanf(“%d”,&n),n=0n=0 while(!(t=n)_2 2_ /t=t*2;t=t*2;i+;printf(%dn,i);6.在考生目录下,有 Modify.c 程序,该程序中_N_是根据程序功能需要填充 部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:对 x=1,2,.,10,求 f(x)=x*x-5*x+sin(x)的最大值。#include#include#define f(
16、x)x*x-5*x+sin(x)voidmain()/运行结果:运行结果:49.45597849.455978 inti;floatmax;_1 1_ /max=f(1);max=f(1);for(i=2;imax)if(f(i)max)max=f(i);max=f(i);printf(%fn,max);7.在考生目录下,有 Modify.c 程序,该程序中_N_是根据程序功能需要填充 部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:函数 f 除去数组中的负数,输出结果为:1 3 4 6#include voidf(int*a,int*m)inti,j;fo
17、r(i=0;i*m;i+)if(ai0)for(j=i-;j*m-1;j+)aj=aj+1;_1_1_;/*m=*m-1;*m=*m-1;voidmain()inti,n=7,x7=1,-2,3,4,-5,6,-7;_2_2_;/f(x,&n);f(x,&n);for(i=0;in;i+)printf(%5d,xi);printf(n);8.在考生目录下,有 Modify.c 程序,该程序中_N_是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:输入 n 和平面上 n 个点的坐标,计算各点间距离的总和。#include#include#d
18、efinef(x1,y1,x2,y2)sqrt(pow(x2-x1,2)+pow(y2-y1,2)1 1 /#include/#include或或#include#include voidmain()float*x,*y,s=0;inti,j,n;scanf(%d,&n);x=(float*)malloc(sizeof(float)*n*2);y=x+2 2 ;/n n for(i=0;in;i+)scanf(%f%f,x+i,y+i);for(i=0;in-1;i+)for(j=i+1;jn;j+)s+=f(xi,yi,xj,yj);printf(%.2fn,s);9.在考生目录下,有 Mo
19、dify.c 程序,该程序中_N_是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:调用函数 f,求二维数组 a 中全体元素之和。#include floatf(1 1 )/float*x,intm,intnfloat*x,intm,intn /运行结果:运行结果:78.0078.00 floaty=0;inti,j;for(i=0;im;i+)for(j=0;jn;j+)y=y+*(*(x+i)+j);returny;voidmain()floata34=1,2,3,4,5,6,7,8,9,10,11,12,*b3;inti;for(i
20、=0;i3;i+)bi=2 2 ;/&ai0&ai0 或或 aiai printf(%.2fn,f(b,3,4);10.在考生目录下,有 Modify.c 程序,该程序中_N_是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:调用函数 f,求 a 数组中最大值与 b 数组中最小值之差。#include floatf(float*x,intn,intflag)/运行结果:运行结果:1111 floaty;inti;1 1 ;/y=x0/y=x0 for(i=1;iflag*y)y=xi;returny;voidmain()floata6=3
21、,5,9,4,2.5,1,b5=3,-2,6,9,1;printf(%.2fn,f(a,6,1)-2 2 );/f(b,5,-1)f(b,5,-1)11.在考生目录下,有 Modify.c 程序,该程序中_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 时的值。#includefloatf(float,float*,int);/运行结果:运行结果:81.93075681.930756 voidmain()flo
22、atb5=1.1,2.2,3.3,4.4,5.5;printf(%fn,f(1.7,b,5);floatf(1 1 )/floatx,floata,intnfloatx,floata,intn floaty=a0,t=1;inti;for(i=1;in;i+)t=t*x;y=y+ai*t;2 2 ;/returnyreturny 12.在考生目录下,有 Modify.c 程序,该程序中_N_是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:调用函数 f 用以求 1 元 2 次方程 x*x+5*x-2=0 的实根。#include#incl
23、ude /运行结果:运行结果:0.370.37 -5.37-5.37 intf(floata,floatb,floatc,float*x1,float*x2)if(b*b-4*a*c0)1 1 ;/return1/return1;*x1=(-b+sqrt(b*b-4*a*c)/2/a;*x2=(-b-sqrt(b*b-4*a*c)/2/a;return0;voidmain()floatu1,u2;floata=1,b=5,c=-2;if(f(f(2 2 )printf(实数范围内无解n);/f(a,b,c,&u1,&u2)f(a,b,c,&u1,&u2)else printf(%.2f%.2f
24、n,u1,u2);13.在考生目录下,有 Modify2.c 程序,该程序中_N_是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:函数 f 将数组循环左移 k 个元素,输出结果为:4 5 6 7 1 2 3#includevoidf(int*a,intn,intk)inti,j,t;for(i=0;ik;i+)1 1 ;/t=a0t=a0 for(2 2 )/j=1;jn;j+j=1;jn;j+aj-1=aj;an-1=t;voidmain()inti,x7=1,2,3,4,5,6,7;f(x,7,3);for(i=0;i7;i+)pr
25、intf(%5d,xi);printf(n);14.在考生目录下,有 Modify.c 程序,该程序中_N_是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:调用函数 f,将字符串中的所有字符逆序存放,然后输出。例如,输入字符串为123456,则程序的输出结果为654321。#include#include voidmain()chars60,*f(char*);gets(s);printf(%sn,f(s);1 1 f(char*x)f(char*x)/char*char*chart;inti,n;2 2 ;/n=strlen(x)/n
26、=strlen(x)for(i=0;in/2;i+)t=xi;xi=xn-1-i;xn-1-i=t;returnx;15.在考生目录下,有 Modify.c 程序,该程序中_N_是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:调用函数 f,从字符串中删除所有的数字字符。#include#include#includevoidf(char*s)inti=0;while(si!=0)if(isdigit(si)1 1 (s+i,s+i+1);/strcpystrcpy else 2 2 ;/i+i+voidmain()charstr80;g
27、ets(str);f(str);puts(str);16.在考生目录下,有 Modify.c 程序,该程序中_N_是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:输出 61000 之间的完数(1 个数的因子和等于其自身的数:6=1+2+3、28=1+2+4+7+14,则 6、28 都是完数)。#includevoidmain()/运行结果:运行结果:6 6 2828 496496 inti,j,s;for(i=6;i=1000;i+)1 1 ;/s=0;/s=0;for(j=1;2 2 ;j+)/jijiif(i%j=0)s+=j;if
28、(s=i)printf(%dn,s);(三)上机编程题(三)上机编程题 1.程序设计题:程序设计题:考生目录下有 Design.c 程序,请完成以下功能:z=f(x,y)=(3.14*x-y)/(x+y),若 x、y 取值为区间1,6的整数,找出使 z 取最小值的 x1、y1,并将 x1、y1 以格式%d,%d写入到考生目录下,新建文件 design.dat。#includevoidmain()/运行结果:运行结果:x1=1,y1=6x1=1,y1=6 FILE*p;floatf(floatx,floaty),min;intx,y,x1,y1;/*/*此处起要求考生自己编制程序此处起要求考生自
29、己编制程序*/*/min=100;min=100;if(p=fopen(design.dat,w)=NULL)if(p=fopen(design.dat,w)=NULL)printf(cannotopeninFILEn);printf(cannotopeninFILEn);exit(0);exit(0);for(x=1;x=6;x+)for(x=1;x=6;x+)for(y=1;y=6;y+)for(y=1;y=6;y+)if(f(x,y)min)if(f(x,y)min)min=f(x,y);x1=x;y1=y;min=f(x,y);x1=x;y1=y;fprintf(p,“%d,%d”,x1,y1);fprintf(p,“%d,%d”,x1,y1);fclose(p);fclose(p);floatf(floatu,floatv)floatf(floatu,floatv)return(3.14*u-v)/(u+v);return(3.14*u-v)/(u+v);2.程序设计题:程序设计题:函数 root 返回满足条件 f(a)*f(b)0 的方程在a,b区间内的 1 个实根。在区间2,5、限差为 0.00001。用区间对分法求解,将方程 x*x-5sin(x)-4=0的根以格式%9.6f写入到考生目录下新建的文件 design.dat?#include
限制150内