计算机二级C语言题库.docx
- 文档编号:2437049
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:79
- 大小:47.50KB
计算机二级C语言题库.docx
《计算机二级C语言题库.docx》由会员分享,可在线阅读,更多相关《计算机二级C语言题库.docx(79页珍藏版)》请在冰点文库上搜索。
计算机二级C语言题库
二级C语言上机考试复习题库
一、考试题型:
1、程序填空题18分
2、程序改错题18分
3、编程题24分
二、考试时间:
90分钟
四、上机调试环境:
机试C语言的调试环境是VC++6.0。
五、题型类型
1、数值计算(阶乘、求和、求积、数的合并与分解)
2、求素数、偶数、奇数、公约数类型
3、函数调用(递归调用、函数类型等)
4、排序类型(换排序,选择排序、冒泡排序、插入排序)
5、字符串类型(数值转换、位置变换,排序)
6、结构链表类型
7、文件类型
五、上机典型例题
(一)填空题
1.填空题一般是两空或三空,切记!
填完空后,要将下画线删除,得到正确结果后,一定不要忘记把修改后将程序保存。
例1(常考题):
请补充fun函数,fun函数的功能是:
计算并输出n(包括n)以内能被3或7整除的所有自然数的倒数之和。
例如,在主函数中输入50,输出为:
s=1.425889。
注意:
部分源程序已给出。
不得增行或删行,也不得更改程序的结构!
仅在fun函数的横线上填入。
#include
doublefun(intn)
{
inti;
doublesum=0.0;
for(i=1;___1___;i++)
if(i%3==0___2___i%7==0)
sum+=___3___/i;
returnsum;}
main()
{intn;
doubles;
printf("\nInputn:
");
scanf("%d",&n);
s=fun(n);
printf("\n\ns=%f\n",s);}
例2(常考题)给定程序中,函数fun的功能是:
计算下式前n项的和作为函数值返回:
S=1*3/2*2+3*5/4*4+5*7/6*6+…+(2n-1)*(2n+2)/(2n)*(2n)例如:
当行参n的值为10时,函数返回9.612558。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
部分源程序已给出。
不得增行或删行,也不得更改程序的结构!
#include
doublefun(intn)
{
inti;doubles,t;
/**********found**********/
s=___1___;
/**********found**********/
for(i=1;i<=___2___;i++)
{
t=2.0*i;
/**********found**********/
s=s+(2.0*i-1)*(2.0*i+1)/___3___;
}
returns;
}
main()
{
intn=-1;
while(n<0)
{
printf("Pleaseinput(n>0):
");
scanf("%d",&n);
}
printf("Theresultis:
%f\n",fun(n));
}
例3在主函数中从键盘输入若干个数放入数组a中,用0结束输入但不计入数组。
下列给定程序中,函数fun的功能是:
输出数组元素中小于平均值的元素。
例如,数组中元素的值依次为34、54、675、456、453、121,则程序的运行结果为34、54、121。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
不得增行或删行,也不得更改程序的结构!
#include
#include
voidfun(___1___,intn)
{
doublecount=0.0;
doubleaverage=0.0;
inti=0;
for(i=0;i ___2___; average=___3___; for(i=0;i if(a[i] { if(i%5==0) printf("\n"); printf("%d,",a[i]);} } main() { inta[1000]; inti=0; printf("\nPleaseenterdatas(endwith0): "); do { scanf("%d",&a[i]); }while(a[i++]! =0); fun(a,i-1);} 例4.(常考题)给定程序中,函数的功能是计算并输出high以内最大的10个素数之和。 High由主函数传给fun函数。 若high的值为100,则函数的值为732。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 不得增行或删行,也不得更改程序的结构! 。 #include #include intfun(inthigh) {intsum=0,n=0,j,yes; /**********found**********/ while((high>=2)&&___1___) { yes=1; for(j=2;j<=high/2;j++) if(high%j==0) { /**********found**********/ yes=0;___2___; } if(yes){sum+=high;n++;} /**********found**********/ ___3___; } returnsum; } main() { printf("%d\n",fun(100));} 例5(常考题)请补充fun函数,fun函数的功能是: 寻找两个整数之间的所有素数(包括这两个整数),把结果保存在数组bb中,函数返回素数的个数。 例如,输入3和17,输出为: 3、5、7、11、13、17。 注意: 部分源程序已给出。 不得增行或删行,也不得更改程序的结构! 仅在fun函数的横线上填入。 (类似题目有15道) #include #include #defineN1000 intfun(intn,intm,intbb[N]) {inti,j,k=0,flag; for(j=n;j<=m;j++) { ___1___; for(i=2;i if(___2___) { flag=0; break; } if(___3___) bb[k++]=j;} returnk;} main() {intn=0,m=0,i,k; intbb[N]; printf("Inputn\n"); scanf("%d",&n); printf("Inputm\n"); scanf("%d",&m); for(i=0;i bb[i]=0; k=fun(n,m,bb); for(i=0;i printf("%4d",bb[i]); } 例6(常考题): 请在fun函数的横线上填写若干表达式,使从键盘输入一个整数n,输出斐纳契数列,斐纳契数列一种整数数列,其中每数等于前面两数之和,如01123813……。 注意: 部分源程序已给出。 不得增行或删行,也不得更改程序的结构! 仅在fun函数的横线上填入。 (类似题目有7道) #include intfun(intn); main() {inti,n=0; scanf("%d",&n); for(i=0;i printf("%d",fun(i));} intfun(intn) {if(___1___) return0; elseif(___2___) return1; else return___3___;} 例7(常考题): 给定程序中,函数fun的功能是: 将形参n中各位上为偶数的数取出,按原来从高位到低位的顺序组成一个新的数,并作为函数值返回。 例如,从主函数输入一个整数27638496,函数返回值为26846。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 不得增行或删行,也不得更改程序的结构! (此类题型有6道) #include unsignedlongfun(unsignedlongn) {unsignedlongx=0,s,i; intt; s=n; /**********found**********/ i=1; /**********found**********/ while (2) {t=s%10; if(t%2==0) {/**********found**********/ x=x+t*i;i=3;} s=s/10;} returnx;} main() {unsignedlongn=-1; while(n>99999999||n<0) {printf("input(0 "); scanf("%ld",&n);} printf("\nTheresultis: %ld\n",fun(n));} 例8(常考题): 给定程序的功能是十进制正整数m转换成k进制(2<=k<=9)数的数字输出,若输入8和2,则输出1000(即十进制8转换成二进制表示为1000)。 请在程序的下划中线填入正确内容并把下划线删除,使程序得出正确结果。 不得删行或减行,也不得更改程序结构。 (此类型有3道) #include voidfun(intm,intk) {intaa[20],i; for(i=0;m;i++){ /**********found**********/ aa[i]=___1___; /**********found**********/ ___2___;} for(;i;i--) /**********found**********/ printf("%d",___3___);} main() {intb,n; printf("\nPleaseenteranumberandabase: \n"); scanf("%d%d",&n,&b); fun(n,b);} 9.给定程序中,函数fun的功能是: 把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]中,把奇数从数组中删除,偶数个数通过函数值返回。 例如a所指数组中数据最初排列为: 9、1、4、2、3、6、5、8、7,删除奇数后a所指数组的数据为: 2、4、6、8,返回值为4。 请在下划中线填入正确内容并把下划线删除,使程序得出正确结果。 不得删行或减行,也不得更改程序结构。 #include #defineN9 intfun(inta[],intn) {inti,j; j=0; for(i=0;i /**********found**********/ if(___1___==0){ /**********found**********/ ___2___=a[i];j++; } /**********found**********/ return___3___;} main() {intb[N]={9,1,4,2,3,6,5,8,7},i,n; printf("\nTheoriginaldata: \n"); for(i=0;i printf("\n"); n=fun(b,N); printf("\nThenumberofeven: %d\n",n); printf("\nTheeven: \n"); for(i=0;i printf("\n");} 例10(常考题)程序填空题: 给定程序中,函数fun的功能是用函数指针指向要调用的函数,并进行调用。 规定在第2处使f指向函数f1,在第3处使f指向函数f2。 当调用正确时,程序输出: x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 源程序已给出。 不得增行或删行,也不得更改程序的结构! #include doublef1(doublex) {returnx*x;} doublef2(doublex,doubley) {returnx*y;} doublefun(doublea,doubleb) { /**********found**********/ ___1___(*f)(); doubler1,r2; /**********found**********/ f=___2___;/*pointfountionf1*/ r1=f(a); /**********found**********/ f=___3___;/*pointfountionf2*/ r2=(*f)(a,b); returnr1+r2; } main() { doublex1=5,x2=3,r; r=fun(x1,x2); printf("x1=%f,x2=%f,x1*x1+x1*x2=%f\n",x1,x2,r); } 例11(常考题): 给定程序的功能是: 将未在字符串s中出现,而在字符串t中出现的字符,构成一个新字符串放在u中,u中的字符按原字符串中字符顺序排列,去掉重复字符。 例如: 当s=“12345”,t=“24677”时,u中的字符串为: “67”。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 不得增行或删行,也不得更改程序的结构.(此类型有15道) #include #include voidfun(char*s,char*t,char*u) {inti,j,sl,tl,k,ul=0; sl=strlen(s); tl=strlen(t); for(i=0;i {for(j=0;j if(t[i]==s[j]) break; if(j>=sl) {for(k=0;k if(t[i]==u[k]) ___1___; if(k>=ul) u[ul++]=___2___;}} __3___='\0';} main() {chars[100],t[100],u[100]; printf("\nPleaseenterstrings: "); scanf("%s",s); printf("\nPleaseenterstringt: "); scanf("%s",t); fun(s,t,u); printf("Theresultis: %s\n",u);} 例12(结构类常考题): 人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。 函数fun功能是: 找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定的编号不存在,返回数据中编号为空串。 请在程序的下划中线填入正确内容并把下划线删除,使程序得出正确结果。 不得删行或减行,也不得更改程序结构。 此类型有7道 #include #include #defineN8 typedefstruct {charnum[10]; intyear,month,day; }STU; /**********found**********/ ___1___fun(STU*std,char*num) {inti;STUa={"",9999,99,99}; for(i=0;i /**********found**********/ if(strcmp(___2___,num)==0) /**********found**********/ return___3____; returna;} main() {STUstd[N]={{"111111",1984,2,15},{"222222",1983,9,21},{"333333",1984,9,1},{"444444",1983,7,15},{"555555",1984,9,28},{"666666",1983,11,15},{"777777",1983,6,22},{"888888",1984,8,19}}; STUp;charn[10]="666666"; p=fun(std,n); if(p.num[0]==0) printf("\nNotfound! \n"); else {printf("\nSucceed! \n"); printf("%s%d-%d-%d\n",p.num,p.year,p.month,p.day); }} 例13(常考题)程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。 函数fun的功能是将形参a所指结构体变量s中的数据进行修改,并把a中地址作为函数值返回主函数,在主函数中输出修改后的数据。 例如: a所指变量s中的学号、姓名、和三门课的成绩依次是: 10001、"ZhangSan"、95、80、88,修改后输出t中的数据应为: 10002、"LiSi"、96、81、89。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 不得增行或删行,也不得更改程序的结构! #include #include structstudent {longsno; charname[10]; floatscore[3];}; /**********found**********/ 1fun(structstudent*a) {inti; a->sno=10002; strcpy(a->name,"LiSi"); /**********found**********/ for(i=0;i<3;i++)2+=1; /**********found**********/ return3;} main() {structstudents={10001,"ZhangSan",95,80,88},*t; inti; printf("Theoriginaldata: \n"); printf("No: %ldName: %s\nScores: ",s.sno,s.name); for(i=0;i<3;i++) printf("%6.2f",s.score[i]); printf("\n"); t=fun(&s); printf("Thedataaftermodified: \n"); printf("No: %ldName: %s\nScores: ",t->sno,t->name); for(i=0;i<3;i++) printf("%6.2f",t->score[i]); printf("\n");} 例14(常考题)请补充main函数,该函数的功能是: 先以只读方式打开文件out.dat,再把字符串str中的字符保存到这个磁盘文件中。 在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 不得增行或删行,也不得更改程序的结构.(此类型有9道) #include #include #defineN80 main() {FILE*fp; inti=0; charch; charstr[N]="I'mastudents! "; if((fp=fopen(“out.dat”,”1”))==NULL) {printf("cannotopenout52.dat\n"); exit(0);} while(str[i]) {ch=str[i]; fputc(ch,2); putchar(ch); i++;} 3;} 15.程序填空题(常考题)函数的功能是: 把文本文件B中的内容追加到文本文件A的内容之后。 例如,文件B的内容为“I’mten.”,文件A的内容为“I’mastudent! ”,追加之后文件A的内容为“I’mastudent! I’mten.”请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 不得增行或删行,也不得更改程序的结构! #include #include #include #defineN80 main() { FILE*fp,*fp1,*fp2; inti; charc[N],t,ch; system("cls"); if((fp=fopen("A.dat","r"))==NULL) {printf("fileAcannotbeopened\n"); exit(0);} printf("Acontentsare: \n"); for(i=0;(ch=fgetc(fp))! =EOF;i++) {c[i]=ch;putchar(c[i]);} fclose(fp); if((fp=fopen("B.dat","r"))==NULL) {printf("fileBcannotbeopened\n"); exit(0); } printf("Bcontentsare: \n"); for(i=0;(ch=fgetc(fp))! =EOF;i++) {c[i]=ch;putchar(c[i]);} fclose(fp); /**********found
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 二级 语言 题库