计算机二级C语言上机题库含答案解析

举报
资源描述
第05套:给定程常中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和ato畸字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意r 源言序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include void fun(char*s,int a,double f)1 fp;char str100,strl100,str2100;int al;double fl;fp=fopenCfilel.txt,Hw);fprintf(fp,H%s%d%fn,s,a,f);_ 2 _;fp=fopen(filel.txt,rn);fscanf(_ 3,%s%s%s*,str,strl,str2);fclose(fp);al=atoi(strl);fl=atof(str2);printf(,nThe result:nn%s%d%fn,str,al,fl);)main()char a10=,Hello!n;int b=12345;double c=98.76;fun(a,b,c);)解题思路:本题是考察先把给定的数据写入到文本文件中,再从该文件读出并转换成相应的整数、浮点数显示在屏幕上。第一处:定义文本文件类型变量,所以应填:FILE*。第二处:关闭刚写入的文件,所以应填:fclose(fp)。第三处:从文件中读出数据,所以应填:fp。给定程序MODI1.C中函数fun的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(mW10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#include#deflne N 10typedef struct ss char num10;int s;STU;STU*fun(STU a,int m)STU bN,*t;int ij,k;t=(STU*)calloc(sizeof(STU),m)for(i=0;iN;i+)bi=ai;for(k=0;km;k+)for(i=j=0;ibj.s)j=i;t(k)=bg);bU.s=O;)return t;)outresult(STU a,FILE*pf)int i;for(i=0;i10)printf(nGive the number of the students who have better score:*);scanf(n%d,&m);pOrder=fun(a,m);printf(n*THE RESULT*n);printf(nThe top:nn);for(i=0;im;i+)printf(n%s%dnn,pOrderi.num,pOrderi.s);free(pOrder);解题思路:第一处:语句最后缺少分号。第二处:应该使用方括号,而不是圆括号。像此类,使用编译,即可发现。请编写函数fu n,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,一维数组中的数据是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10o删除后,数组中的内容应该是:2 3 4 5 6 7 8 9 10。注意:部分源程序在文件PROGLC中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#define N 80int fun(int a,int n)main()intaN=2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10,i,n=20;printf(nThe original data:nn);for(i=0;in;i+)printf(,%3d,ai);n=fun(a,n);printf(,nnThe data after deleted:nn);for(i=0;in;i+)printf(%3d,ai);printf(nn);NONO();)解题思路:本题是删除已排序过数组中的相同数。1.取出数组中的第1个数存放在临时变量k中,再利用for循环来依次判断所有的数。2.如果取出的数和k相比,如果不相同,则仍存放在原数组中,其中存放的位置由j来控制,接着把这个数重新存入k。如果相同,则取下一数。参考答案:int fun(int a,int n)int i,j=1,k=a0;for(i=1;i n;i+)if(k!=ai)aj+=ai;k=ai;aO=0;return j;)第06套:给定程谆中,函数fun的功能是根据形参i的值返回某个函数的值。当调用正确时,程序输出:xl=5.000000,x2=3.000000,xl*xl+xl*x2=40.000000请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意r 源叁序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include double fl(double x)return x*x;double f2(double x,double y)return x*y;1 fun(int i,double x,double y)if(i=Dreturn _ 2(x);elsereturn _ 3 _(x,y);)main()double xl=5,x2=3,r;r=fun(l,xl,x2);r+=fun(2,xl,x2);printf(nxl=%f,x2=%f,xl*xl+xl*x2=%fnn,xl,x2,r);解题思路:本题是根据给定的公式来计算函数的值。第一处:程序中使用双精度double类型进行计算,所以函数的返回值类型也为double,所以应填:doubleo第二处:当i等于1时,则返回门函数的值,所以应填:flo第三处:如果i不等于1,则返回&函数的值,所以应填:给定程序MODH.C中函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include char fun(char*s,char*t)int sl=O,tl=O;char*ss,*tt;ss=s;tt=t;while(*ss)sl+;(*ss)+;while(*tt)tl+;(*tt)+;if(tlsl)return t;else return s;main()char a80,b80,*p,*q;int i;printf(nEnter a string:*);gets(a);printf(nEnter a string again:*);gets(b);printf(nnThe longer is:nnn%sn,fun(a,b);解题思路:第一处:试题要求返回字符串的首地址,所以应改为:char*fun(char*s,char*t)第 二处:取字符串指针ss的下一个位置,所以应改为:SS+;。第三处:取字符串指针tt的下一个位置,所以应改为:tt+;o:K:K rjc ejw rjC rj*rj*rji:;:;:rC rjC:rjw rj*rji rjw rji rjw请编写函数fun,函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。例如,字符串市原有的内容为:ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是:DEFGHIJKABCo注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#include#define N 80void funl(char*w)/*本函数的功能是将字符串中字符循环左移一个位置*/(int i;char t;t=w0;for(i=0;istrlen(w)-l;i+)wi=wi+l;wstrlen(w)-l=t;void fun(char*w,int m)/*可调用funl函数左移字符*/main()char aN=ABCDEFGHIJK;int m;printf(nThe original string:n);puts(a);printf(nnnEnter m:n);scanf(n%dH,&m);fun(a,m);printf(nThe string after moving:nn);puts(a);printf(nnn);NONO();)解题思路:本题是考察字符串的操作。1,由于函数funl是将字符串中字符循环左移一个位置,并通过实参w返回循环左移一个位置的字符串。2.利用循环for语句来操作多少个字符(m)需要循环左移。参考答案:void funl(char*w)/*本函数的功能是将字符串中字符循环左移一个位置*/(int i;char t;t=w0;for(i=0;istrlen(w)-l;i+)wi=wi+l;wstrlen(w)-l=t;void fun(char*w,int m)/*可调用funl函数左移字符*/int i;for(i=0;i m;i+)funl(w);)第07套:程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。函数fun的功能是输出这位学生的信息。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的件果。注鲁:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include typedef struct int num;char name9;char sex;struct int year,month,day;birthday;float score3;STU;void show(STU_1_)int i;printf(nn%d%s%c%d-%d-%d,tt.num,tt.name,tt.sex,tt.birthday.year,tt.birthday.month,tt.birthday.day);fora=0;i3;i+)printf(n%5.1f,-2);printf(nn);)main()STU std=l/Zhanghua;M1,1961,10,8,76.5,78.0,82.0;printf(nA student data:nn);show(3);)解题思路:本题是利用结构体变量存储了一名学生的信息。第一处:tt变量在函数体fun已经使用,所以应填:也第二处:利用循环分别输出学生的成绩数据,所以应填:tt.scorei。第三处:函数的调用,所以应填:std。:R*2*2*2*2*2*5*2*给定程序MODH.C中 函 数 fu n 的功能是:求出数组中最大数和次最大数,并把最大数和a0中的数对调、次最大数和al中的数对调。请改正程序中的错误,使它能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#define N 20int fun(int*a,int n)int i,m,t,k;for(i=0;i2;i+)m=0;for(k=i+l;kam)k=m;t=ai;ai=am;am=t;main()int x,bN=11,5,12,0,3,6,9,7,10,8,n=10,i;for(i=0;in;i+)printf(H%d,bi);printf(nnn);fun(b,n);for(i=
展开阅读全文
温馨提示:
金锄头文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关资源
正为您匹配相似的精品文档
相关搜索

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


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