计算机二级c程序题题库100套.docx
- 文档编号:3285628
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:377
- 大小:167.47KB
计算机二级c程序题题库100套.docx
《计算机二级c程序题题库100套.docx》由会员分享,可在线阅读,更多相关《计算机二级c程序题题库100套.docx(377页珍藏版)》请在冰豆网上搜索。
计算机二级c程序题题库100套
2012年9月全国计算机考试上机题库100套
第01套:
给定程序中,函数fun的功能是:
将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。
例如,输入一个数:
27638496,新的数:
为739。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
voidfun(unsignedlong*n)
{unsignedlongx=0,i;intt;
i=1;
while(*n)
{t=*n%__1__;
if(t%2!
=__2__)
{x=x+t*i;i=i*10;}
*n=*n/10;
}
*n=__3__;
}
main()
{unsignedlongn=-1;
while(n>99999999||n<0)
{printf("Pleaseinput(0 ");scanf("%ld",&n);} fun(&n); printf("\nTheresultis: %ld\n",n); } 解题思路: 第一处: t是通过取模的方式来得到*n的个位数字,所以应填: 10。 第二处: 判断是否是奇数,所以应填: 0。 第三处: 最后通形参n来返回新数x,所以应填: x。 给定程序MODI1.C中函数fun的功能是: 计算n! 。 例如,给n输入5,则输出120.000000。 请改正程序中的错误,使程序能输出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #include doublefun(intn) {doubleresult=1.0; ifn==0 return1.0; while(n>1&&n<170) result*=n-- returnresult; } main() {intn; printf("InputN: "); scanf("%d",&n); printf("\n\n%d! =%lf\n\n",n,fun(n)); } 解题思路: 第一处: 条件语句书写格式错误,应改为: if(n==0)。 第二处: 语句后缺少分号。 *************************************************** 请编写一个函数fun,它的功能是: 将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。 例如,若输入字符串"-1234",则函数把它转换为整数值-1234。 函数fun中给出的语句仅供参考。 注意: 部分源程序存在文件PROG1.C文件中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 给定源程序: #include #include longfun(char*p) {inti,len,t;/*len为串长,t为正负标识*/ longx=0; len=strlen(p); if(p[0]=='-') {t=-1;len--;p++;} elset=1; /*以下完成数字字符串转换为一个数字*/ returnx*t; } main()/*主函数*/ {chars[6]; longn; printf("Enterastring: \n"); gets(s); n=fun(s); printf("%ld\n",n); NONO(); } NONO() {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE*fp,*wf; inti; chars[20]; longn; fp=fopen("c: \\test\\in.dat","r"); wf=fopen("c: \\test\\out.dat","w"); for(i=0;i<10;i++){ fscanf(fp,"%s",s); n=fun(s); fprintf(wf,"%ld\n",n); } fclose(fp); fclose(wf); } 解题思路: 本题是将一个数字字符串转换为一个整数。 参考答案: #include #include longfun(char*p) { inti,len,t;/*len为串长,t为正负标识*/ longx=0; len=strlen(p); if(p[0]=='-') {t=-1;len--;p++;} elset=1; /*以下完成数字字符串转换为一个数字*/ while(*p)x=x*10-48+(*p++); returnx*t; } main()/*主函数*/ {chars[6]; longn; printf("Enterastring: \n"); gets(s); n=fun(s); printf("%ld\n",n); NONO(); } NONO() {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE*fp,*wf; inti; chars[20]; longn; fp=fopen("c: \\test\\in.dat","r"); wf=fopen("c: \\test\\out.dat","w"); for(i=0;i<10;i++){ fscanf(fp,"%s",s); n=fun(s); fprintf(wf,"%ld\n",n); } fclose(fp); fclose(wf); } 注意: 由于NONO()这个函数是改卷人用的,与考生没有什么关系,故下面从第2套试题开始均省略NONO() ※※※※※※※※※※※※※※※※※※※※※※※※※ 第02套: 给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include voidfun(char*s,inta,doublef) { __1__fp; charch; fp=fopen("file1.txt","w"); fprintf(fp,"%s%d%f\n",s,a,f); fclose(fp); fp=fopen("file1.txt","r"); printf("\nTheresult: \n\n"); ch=fgetc(fp); while(! feof(__2__)){ putchar(__3__);ch=fgetc(fp);} putchar('\n'); fclose(fp); } main() {chara[10]="Hello! ";intb=12345; doublec=98.76; fun(a,b,c); } 解题思路: 本题是考察先把给定的数据写入到文本文件中,再从该文件读出并显示在屏幕上。 第一处: 定义文本文件类型变量,所以应填: FILE*。 第二处: 判断文件是否结束,所以应填: fp。 第三处: 显示读出的字符,所以应填: ch。 *************************************************** 给定程序MODI1.C中函数fun的功能是: 依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #include voidfun(char*s) {inti,j; for(i=0,j=0;s[i]! ='\0';i++) if(s[i]>='0'&&s[i]<='9') s[j]=s[i]; s[j]="\0"; } main() {charitem[80]; printf("\nEnterastring: ");gets(item); printf("\n\nThestringis: \"%s\"\n",item); fun(item); printf("\n\nThestringofchangingis: \"%s\"\n",item); } 解题思路: 第一处: 要求是取出原字符串中所有数字字符组成一个新的字符串,程序中是使用变量j 来控制新字符串的位置,所以应改为: s[j++]=s[i];。 第二处: 置新字符串的结束符,所以应改为: s[j]='\0';. *************************************************** 请编写函数fun,函数的功能是: 将M行N列的二维数组中的字符数据,按列的 顺序依次放到一个字符串中。 例如,二维数组中的数据为: WWWW SSSS HHHH 则字符串中的内容应是: WSHWSHWSH。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入 你编写的若干语句。 给定源程序: #include #defineM3 #defineN4 voidfun(chars[][N],char*b) { inti,j,n=0; for(i=0;i { } b[n]='\0'; } main() {chara[100],w[M][N]={{'W','W','W','W'},{'S','S','S','S'},{'H','H','H','H'}}; inti,j; printf("Thematrix: \n"); for(i=0;i {for(j=0;j printf("\n"); } fun(w,a); printf("TheAstring: \n");puts(a); printf("\n\n"); NONO(); } 解题思路: 本题是把二维数组中的字符数据按列存放到一个字符串中。 1.计算存放到一维数组中的位置。 2.取出二维数组中的字符存放到一维数组(已计算出的位置)中。 参考答案: voidfun(chars[][N],char*b) { inti,j,n=0; for(i=0;i { for(j=0;j b[n]=s[j][i]; n=i*M+j+1; } } b[n]='\0'; } ※※※※※※※※※※※※※※※※※※※※※※※※※ 第03套: 程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。 所有学生数据均以二进制方式输出到文件中。 函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include #defineN5 typedefstructstudent{ longsno; charname[10]; floatscore[3]; }STU; voidfun(char*filename,STUn) {FILE*fp; fp=fopen(__1__,"rb+"); fseek(__2__,-1L*sizeof(STU),SEEK_END); fwrite(&n,sizeof(STU),1,__3__); fclose(fp); } main() {STUt[N]={{10001,"MaChao",91,92,77},{10002,"CaoKai",75,60,88}, {10003,"LiSi",85,70,78},{10004,"FangFang",90,82,87}, {10005,"ZhangSan",95,80,88}}; STUn={10006,"ZhaoSi",55,70,68},ss[N]; inti,j;FILE*fp; fp=fopen("student.dat","wb"); fwrite(t,sizeof(STU),N,fp); fclose(fp); fp=fopen("student.dat","rb"); fread(ss,sizeof(STU),N,fp); fclose(fp); printf("\nTheoriginaldata: \n\n"); for(j=0;j {printf("\nNo: %ldName: %-8sScores: ",ss[j].sno,ss[j].name); for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]); printf("\n"); } fun("student.dat",n); printf("\nThedataaftermodifing: \n\n"); fp=fopen("student.dat","rb"); fread(ss,sizeof(STU),N,fp); fclose(fp); for(j=0;j {printf("\nNo: %ldName: %-8sScores: ",ss[j].sno,ss[j].name); for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]); printf("\n"); } } 解题思路: 本题是考察如何从文件中读出数据,再把结构中的数据写入文件中。 第一处: 从指定的文件中读出数据,所以应填: filename。 第二处: 读取文件fp的最后一条记录,所以应填: fp。 第三处: 再把读出的记录,写入文件fp指定的位置上,所以应填: fp。 *************************************************** 给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。 请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #include #include typedefstructaa {intdata; structaa*next; }NODE; NODE*Creatlink(intn,intm) {NODE*h=NULL,*p,*s; inti; p=(NODE)malloc(sizeof(NODE)); h=p; p->next=NULL; for(i=1;i<=n;i++) {s=(NODE*)malloc(sizeof(NODE)); s->data=rand()%m;s->next=p->next; p->next=s;p=p->next; } returnp; } outlink(NODE*h) {NODE*p; p=h->next; printf("\n\nTHELIST: \n\nHEAD"); while(p) {printf("->%d",p->data); p=p->next; } printf("\n"); } main() {NODE*head; head=Creatlink(8,22); outlink(head); } 解题思路: 第一处: 指向刚分配的结构指针,所以应改为: p=(NODE*)malloc(sizeof(NODE)); 第二处: 在动态分配内存的下一行语句是,使用临时结构指针变量h保存p指针的初始位置,最后返回不能使用p,是因为p的位置已经发生了变化,所以应改为返回h。 *************************************************** 请编写函数fun,函数的功能是: 统计一行字符串中单词的个数,作为函数值返回。 一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 给定源程序: #include #include #defineN80 intfun(char*s) { } main() {charline[N];intnum=0; printf("Enterastring: \n");gets(line); num=fun(line); printf("Thenumberofwordis: %d\n\n",num); NONO(); } 解题思路: 本题是统计字符串中的单词数。 1.利用while循环语句和指针变量,当字符为空格时,则单词数k加1。 2.循环结束返回k。 参考答案: intfun(char*s) { intk=1; while(*s){ if(*s=='')k++; s++; } returnk; } ※※※※※※※※※※※※※※※※※※※※※※※※※ 第04套: 程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。 所有学生数据均以二进制方式输出到文件中。 函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include #defineN5 typedefstructstudent{ longsno; charname[10]; floatscore[3]; }STU; voidfun(char*filename) {FILE*fp;inti,j; STUs[N],t; fp=fopen(filename,__1__); fread(s,sizeof(STU),N,fp); fclose(fp); for(i=0;i for(j=i+1;j if(s[i].sno__2__s[j].sno) {t=s[i];s[i]=s[j];s[j]=t;} fp=fopen(filename,"wb"); __3__(s,sizeof(STU),N,fp);/*二进制输出*/ fclose(fp); } main() {STUt[N]={{10005,"ZhangSan",95,80,88},{10003,"LiSi",85,70,78}, {10002,"CaoKai",75,60,88},{10004,"FangFang",90,82,87}, {10001,"MaChao",91,92,77}},ss[N]; inti,j;FILE*fp; fp=fopen("student.dat","wb"); fwrite(t,sizeof(STU),5,fp); fclose(fp); printf("\n\nTheoriginaldata: \n\n"); for(j=0;j {printf("\nNo: %ldName: %-8sScores: ",t[j].sno,t[j].name); for(i=0;i<3;i++)printf("%6.2f",t[j].score[i]); printf("\n"); } fun("student.dat"); printf("\n\nThedataaftersorting: \n\n"); fp=fopen("student.dat","rb"); fread(ss,sizeof(STU),5,fp); fclose(fp); for(j=0;j
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 二级 程序 题库 100