2013全国计算机等级考试新大纲二级C语言题库及参考答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

参考答案第一套题一、选择题1-10DBCADACDBB11-20BABAAAABAD21-30DBDABDDDBD31-40DADABDCDAD二、程序填空题本题是根据给定的公式来计算函数的值。第一处:程序中使用双精度double类型进行计算,所以函数的返回值类型也为double,所以应填:double。第二处:当i等于1时,则返回f1函数的值,所以应填:f1。第三处:如果i不等于1,则返回f2函数的值,所以应填:f2。三、程序修改题解题思路:第一处:试题要求返回字符串的首地址,所以应改为:char*fun(char*s,char*t)第二处:取字符串指针ss的下一个位置,所以应改为:ss++;。第三处:取字符串指针tt的下一个位置,所以应改为:tt++;。四、程序设计题解题思路:本题是考察字符串的操作。1.由于函数fun1是将字符串中字符循环左移一个位置,并通过实参w返回循环左移一个位置的字符串。2.利用循环for语句来操作多少个字符(m)需要循环左移。参考答案:voidfun(char*w,intm)/*可调用fun1函数左移字符*/{inti;for(i=0;im;i++)fun1(w);}第二套题一、选择题1-10DCABCDCBCA11-20ADCABCDDAA21-30DADDBAADCD31-40DBDDABCCCA二、程序填空题解题思路:第一处:计算好的平均值通过形参av返回,所以应填:*av。第二处:计算小于平均值且最接近平均值的位置j,所以应填:i。第三处:返回该数,所以应填:x[j]。三、程序修改题解题思路:第一处:函数的返回是浮点型数,所以应改为:floatfun(intn)。第二处:for的终止条件应是i=n。四、程序设计题解题思路:本题是利用两重循环给二维数组右上三角元素中的值乘以m。参考答案:intfun(inta[][N],intm){inti,j;for(i=0;iN;i++)for(j=i;jN;j++)a[i][j]*=m;}第三套题一、选择题1-10DDCBCCBCBA11-20BADADAADAC21-30ADDADDBDDD31-40AABCDDBBBD二、程序填空题解题思路:第一处:如果n是奇数,则中间的元素不动,所以应填:1。第二处:使用for循环语句来交换数组元素的值,所以应填:i。第三处:使用中间变量t来交换的,所以应填:t。三、程序修改题解题思路:第一处:在函数fun体中,k是一个浮点型变量,所以应改为:floatk;。第二处:三个数比较大小,第1个条件是第1个比第2个小,则交换。第3个条件是第2个比第3个小,则也交换。第2个条件是应该第1和第3个小,则交换就符合题意了,所以应改为:if(*a*c)。四、程序设计题解题思路:本题是找出最高成绩,再把N名学生的成绩等于最高成绩的记录存入b所指的数组中。具体操作请看答案程序中的说明。参考答案:intfun(STREC*a,STREC*b){inti,max=a[0].s,n=0;for(i=1;iN;i++)if(maxa[i].s)max=a[i].s;/*找出最高成绩*/for(i=0;iN;i++)if(max==a[i].s)b[n++]=a[i];/*找相等的最高成绩并存入数组b中*/returnn;/*返回符合条件的人数*/}第四套题一、选择题1-10DDCBCCBCBA11-20CCDBCACCAB21-30DBBADDBAAA31-40BBDABBDBDD二、程序填空题解题思路:第一处:利用for循环语句,对数组中的各元素进行逆置,所以终止值为n/2。第二处:进行交换数组中元素的值,由于是依次是首和尾交换,所以应填:i。第三处:使用中间变量t来交换的,所以应填:a[n-i-1]。三、程序修改题解题思路:第一和第二处:*p错写成*P,'0'错写成'o'。四、程序设计题解题思路:本题是从学生记录体中找出给定的学号。具体操作请看答案程序中的说明。参考答案:STRECfun(STREC*a,char*b){STRECc;inti;c.num[0]='\0';/*置初始空串*/c.s=-1;/*置成绩为-1*/for(i=0;iN;i++)if(strcmp(a[i].num,b)==0){/*判断学号是否相等*/strcpy(c.num,a[i].num);/*相等,则对学号进行赋值*/c.s=a[i].s;/*相等,则对成绩进行赋值*/break;/*退出循环体*/}returnc;/*返回结构体变量*/}第五套题一、选择题1-10DDCBCCBCBA11-20BCBADADCD21-30ADAAACADDD31-40BDBDBAACAB二、程序填空题同第四套三、程序修改题同第四套四、程序设计题同第四套第六套题一、选择题1-10BACBBBACDB11-20BABBDCAACA21-30DDCDABDDDD31-40DACCBDCDDD二、程序填空题解题思路:第一处:在for循环中终止值要判断字符串是否结束符,所以应填:s[i]。第二处:判断是否是数字,所以应填:'9'。第三处:字符串中数字字符出现的次数n,并存放在形参t所指的变量中,所以应填:*t=n。三、程序修改题解题思路:第一处:由于x是整型指针变量,所以地址不能赋值给整型变量,因此必须取x地址上的值,所以应改为t=*x;*x=y;。第二处:已交换后的值存放在t中,所以返回值应为return(t);。四、程序设计题解题思路:本题是利用for循环语句以及取模%运算来得出符合条件的整数并存入a所指的数组。参考答案:voidfun(int*a,int*n){inti;*n=0;for(i=7;i1000;i++)if(((i%7)==0||(i%11)==0)&&(i%77)!=0)a[(*n)++]=i;}第七套题一、选择题1-10BDBDCCCBBB11-20BDCDABABAD21-30ACAABAADBD31-40DDDCADDADA二、程序填空题解题思路:第一处:要求返回处理好的字符,所以应填:char。第二处:判断该字符是否是数字,所以应填:ch='9'。第三处:只要减去'0'的ASCII值,即可得到要求的结果,所以应填:'0'。三、程序修改题解题思路:第一处:把指针p所指的值赋值给b[k]中。第二处:把空格字符赋值给b[k++]中,而不是一个空格的字符串。四、程序设计题解题思路:本题是计算链表结构中成绩的平均分。具体操作请看答案程序中的说明。参考答案:#includestdio.h#includestdlib.hdoublefun(STREC*h){STREC*p=h-next;/*由于头结点中没有存放数据*/doubleav=0.0;/*对计算成绩平均值的变量进行初始化*/intn=0;while(p!=NULL){/*判断链表是否结束*/av=av+p-s;/*对成绩进行累加*/p=p-next;/*到下一个结点位置*/n++;/*人数加1*/}av/=n;/*计算成绩平均值*/returnav;/*返回成绩平均值*/}第八套题一、选择题1-10DDCBCCBCBA11-20ADCCCDCCCD21-30ABAACDABDC31-40BCCCCCADDD二、程序填空题解题思路:第一处:取外循环的控制变量,所以应填:t=i。第二处:内循环的起始变量,应该是i+2,所以应填:i。第三处:新字符串处理完后应添加字符串结束符,所以应填:'\0'。三、程序修改题解题思路:第一处:要判断t的最后一项绝对小于指定的数,由于t是实数,那么应改为while(fabs(t)=num)。第二处:t是s除以n的值,而不是取余数,所以应改t=s/n;。四、程序设计题解题思路:本题是利用字符串拷贝和字符串连接来生成新的字符串。参考答案:voidfun(chara[],charb[],intn){strncpy(b,a,n);b[n]=0;strcat(b,a+n+1);}第九套题一、选择题1-10BBBBBBDBCC11-20BBBDDDDDDD21-30ABADDDDAAD31-40DADAADBADB二、程序填空题解题思路:第一处:把第1列上的数存放到第1行上,所以应填:0。第二处:for循环的增量值,由于循环是从大到小递减,所以应填:j--。第三处:把临时数组中的元素成为最后一列,所以应填:j。三、程序修改题解题思路:第一处:由于返回值是实数型值,所以在函数名前加上double。第二处:语句后缺少分号。四、程序设计题解题思路:本题是根据给定的公式计算结果。使用for循环语句依次求出每一项的值,分别进行累加并把结果存入变量s中,循环结束后再对s求平方根,结果仍存入s中,最后返回s。参考答案:doublefun(intm){doubles=0.0;inti;for(i=1;i=m;i++)s+=log(1.0*i);s=sqrt(s);returns;}第十套题一、选择题1-10DDCBCCBCBA11-20ADBCDABCAD21-30DDBCDDBABD31-40ABBDDDABDD二、程序填空题解题思路:第一处:变量k在函数体fun中已经使用,所以应填:k。第二处:共N行,所以应填:N。第三处:变量值交换,所以应填:a[k][i]。三、程序修改题解题思路:第一处:外for循环的初始值应是strlen(t)-1。第二处:由于是按升序排序,所以应if(t[j]t[j+1])。四、程序设计题解题思路:本题是考察考生在字符串指定位置上的字母转换为大写。给出的程序是由i来控制字符串所在的位置,字符串指针p是指向形参ss,再使用while循环语句对p进行控制来判断字符串是否结束,在循环体中使用if条件语句来判断位置i是否为奇数且p所指的当前字符是否为'a'至'z'的字母,如果满足这两个条件,则把该小写字母转换成大写字符,小写字母与大写字母的差是32,所以只小写字母减去32,即可得到该字母的大写字母,且转换后的字母仍存放到原字符串的位置上,转换结束后,最后通过形参ss返回已转换后的字符串。参考答案:voidfun(char*ss){char*p=ss;inti=0;while(*p){if((i%2)&&(*p='a'&&*p='z'))*p-=32;p++;i++;}returnss;}

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功