2012年国家计算机二级C语言上机考试题库

举报
资源描述
第01套题:给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。例如,输入一个数:27638496,新的数:为739。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注 意:源 程 序 存 放 在 考 生 文 件 夹 下 的BLANK1.C 中。不得增行或删行,也不得更改程序的结构!给定源程序:#inc lude void fun(unsigned long*n)unsigned long x=0,i;int t;i=l;while(*n)t=*n%_ 1 _;if(t%2!=_ 2 _)x=x+t*i;i=i*10;*n=*n/10;)*n=_3_;)main()unsigned long n=-l;while(n99999999lln0)printf(Please input(0n 100000000):);sc anf(%ld,&n);fun(&n);printf(nThe result is:%ldn,n);)解题思路:第一处:t是通过取模的方式来得到*n的个位数字,所以应填:10。第二处:判断是否是奇数,所以应填:0。第三处:最后通形参n来返回新数x,所以应填:X,给定程序MODI1.C中 函 数 fu n 的功能是:计算n!。例如,给n输入5,则输出120.000000。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#inc lude double fun(int n)double result=1.0;if n=0return 1.0;while(n 1&n 170)result*=nreturn result;main()int n;printf(Input N:);sc anf(H%dn,&n);printf(Hnn%d!=%lfnnn,n,fun(n);)解题思路:第一处:条件语句书写格式错误,应改为:if(n=0)。第二处:语句后缺少分号。请编写一个函数f u n,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串-1234,则函数把它转换为整 数 值-1234。函数fun中给出的语句仅供参考。注意:部分源程序存在文件PROGLC文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#inc lude#inc lude long fun(c har*p)int i,len,t;/*len为串长,t为正负标识*/long x=0;len=strlen(p);if(p 0 D t=-l;len-;p+;else t=l;/*以下完成数字字符串转换为一个数字*/return x*t;)main。/*主 函 数*/c har s6;long n;printf(nEnter a string:n);gets(s);n=fun(s);printf(H%Idnn,n);NONO();)NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;in ti;c har s20J;long n;fp=fopen(c:testin.dat,T);wf=fopen(c:testout.dat,”w);for(i=0;i 10;i+)fsc anf(fp,H%sn,s);n=fun(s);fprintf(wf,n%Idnn,n);)fc lose(fp);fc lose(wf);)解题思路:本题是将一个数字字符串转换为个整数。参考答案:#inc lude#inc lude long fun(c har*p)(inti,len,为串长,t为正负 标 识*/long x=0;len=strlen(p);if(pO=-)t=-l;len-;p+;else t=l;/*以下完成数字字符串转换为一个数字*/while(*p)x=x*10-48+(*p+);return x*t;)main。/*主 函 数*/c har s6;long n;printf(HEnter a string:n);gets(s);n=fun(s);printf(M%ldnM,n);NONO();)NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;in ti;c har s20;long n;fp=fopen(,c:testin.dat,r);wf=fopen(c:testout.dat,wu);for(i=0;i 10;i+)fsc anf(fp,s);n=fun(s);fprintf(wf,n%ldn,n);)fc lose(fp);fc lose(wf);注意:由于NONO()这个函数是改卷人用的,与考生没有什么关系,故下面从第2套试题开始均省略NONO()第02套:给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注 意:源 程 序 存 放 在 考 生 文 件 夹 下 的BLANK1.C 中。不得增行或删行,也不得更改程序的结构!给定源程序:#inc lude void fun(c har*s,int a,double f)(1 fp;c har c h;fp=fopen(nfilel.txtu,nwu);fprintf(fp,n%s%d%fnH,s,a,f);fc lose(fp);fp=fopenCfilel.txt1,Hrn);printf(nThe result:nnM);c h=fgetc(fp);while(!feof(2)putc har(3一);c h=fgetc(fp);putc har(*n);fc lose(fp);m a i n()c h a r a 1 0 =H e l l o!H;i n t b=1 2 3 4 5;d o u b l e c=98.7 6;f u n(a,b,c);)解题思路:本题是考察先把给定的数据写入到文本文件中,再从该文件读出并显示在屏幕上。第一处:定义文本文件类型变量,所以应填:F I L E *。第二处:判断文件是否结束,所以应填:fPo第三处:显示读出的字符,所以应填:c h。给定程序M0 D 1 1.C中函数fu n的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。请改正函数fu n中指定部位的错误,使它能得出正确的结果。注意:不要改动mai n函数,不得增行或删行,也不得更改程序的结构!给定源程序:#inclu de v oid fu n(char *s)int i,j;for(i=0,j=0;s i!0 ;i+)if(s i=0,&s i=91)s j=s i;s j=O”;)main()char it emL8 0 J;pr int f(HnEnt er a s t r ing:n);get s(it em);pr int f(nnThe s t r ing is :%s n,it em);fu n(it em);pr int f(nnThe s t r ing of changing is :V%s un,it em);)解题思路:第一处:要求是取出原字符串中所有数字字符组成一个新的字符串,程序中是使用变量j来控制新字符串的位置,所 以 应 改 为:s j+=s i;o第二处:置新字符串的结束符,所以应改为:s j=W;.请编写函数f u n,函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。例如,二维数组中的数据为:WWWWS S S SH H H H则字符串中的内容应是:W S H W S H W S H o注意:部分源程序在文件P R O G 1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fu n的花括号中填入你编写的若干语句。给定源程序:#inclu de#define M 3#define N 4v oid fu n(char s N,char *b)(int i,j,n=O;for(i=0;i N;i+)/*请填写相应语句完成其 功 能*/blnJ=O;)main()charal 0 0,w MN=W/W/W/W ,S,S?Sint ij;pr int f(HThe mat r ix A n);for(i=0;iM;i+)for(j=0;jN;j+)pr int f(,%3 cM,w ijJ);pr int f(nn);fu n(w,a);pr int f(nThe A s t r ing:nn);pu t s(a);pr int f(nnnn);N O N O();)解题思路:本题是把二维数组中的字符数据按列存放到一个字符串中。1 .计算存放到一维数组中的位置。2 .取出二维数组中的字符存放到一维数组(已计算出的位置)中。参考答案:v oid fu n(char s N,char *b)int i,j,n=O;for(i=0;i N;i+)/*请填写相应语句完成其 功 能*/(for(j=0;j M ;j+)bnl=sji;n=i*M+j+1;bln=V;)第03套:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所 指文件中最后一个学生的数据-,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注 意:源 程 序 存 放 在 考 生 文 件 夹 下 的BLANK1.C 中。不得增行或删行,也不得更改程序的结构!给定源程序:#inc lude#define N 5typedef struc t student long sno;c har name10;float sc ore3;STU;void fun(c har.filename,STU n)FILE*fp;fp=fopen(_l_,rb+H);fseek(_2_,-1 L*sizeof(STU),SEEK_END);fwrite(&n,sizeof(STU),1,3);fc lose(fp);)main()STU tN=1000l,MMaChaon,91,92,77,10002,1CaoKai1,75,60,88,10003,nLiSi;85,70,78,10004,HFangFangH,90,82,87,10005,ZhangSan,r,95,80,88;STU n=10006,ZhaoSiH,55,70,68),sslNJ;int ij;FILE*fp;fp=fopen(student.dat,wb1);fwrite(t,sizeof(STU),N,fp);fc lose(fp);fp=fopen(student.dat,nrbH);fread(ss,sizeof(STU),N,fp);fc lose(fp);printf(nThe original data:nnn);for(j=0;jN;j+)printf(nnNo:%ld Name:%-8s Sc ores:M,ssj.sno,ssj.name);for(i=0;i3;i+)printf(u%6.2f n,ssj.sc orei);printf(,nu);)fun(nstudent.dat,n);printf(nThe data after modifing:nnn);fp=fopen(student.dat,nrbH);fread(ss,sizeof(STU),N,fp);fc lose(fp);for(j=0;jN;j+)printf(nn
展开阅读全文
温馨提示:
金锄头文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新


电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号