资源描述:
《计算机等级考试二级上机模拟试题(4)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、上机考试模拟试题(4)一、填空题函数fun的功能:逆置数组元素中的值,形参m给出数组中数据的个数。例如,若x所指数组中的数据依次为9、8、7、6、5,则逆置后依次为5、6、7、8、9。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#includevoidfun(inta[],intm){inti,temp;for(i=0;i<___1___;j++){temp=a[i];a[i]=a[m-1-___2_
2、___];___3___=temp;}}main(){intx[9]={9,8,7,6,5},i;printf("Theoriginaldata:");for(i=0;i<5;j++)printf("%4d",x[i]);printf("");fun(x,5);fun(x,5)printf("Thedataafterinvert:");for(i=0;i<5;i++)printf("%4d",x[i]);printf("");}二、改错题下列给定程序中,函数fun的功能是
3、根据输入的三个边长(整型值),判断能否构成三角形;构成的是等边三角形,还是等腰三角形。若能构成等边三角形函数,返回3;若能构成等腰三角形函数,返回2;若能构成三角形函数,返回1;若不能构成三角形函数,返回0。请修改函数fun中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#includeintfun(intx,inty,intz){if(x+y>z&&y+z>x&&x+z>y){/*******error*********/if(x=
4、=y&&y==z)return1;elseif(x==y‖y==z‖x==z)return2;elsereturn3;}elsereturn0;}main(){intx,y,z,shape;printf("Inputx,y,z:");scanf("%d%d%d",&x,&y,&z);printf("x=%d,y=%d,z=%d",x,y,z);shape=fun(x,y,z);printf("Theshape:%d",shape);}三、编程题假定输入的字符串中只包含字母
5、和“#”号,请编写函数fun,它的功能是:删除字符串中所有的“#”号。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为“##w#e1##come###”,删除后,字符串中的内容则应当是“welcome”。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#includevoidfun(char*s){}main(){charstr[81];FILE*out
6、;printf("Enterastring:");gets(str);fun(str);printf("Thestringafterdeleted:");puts(str);out=fopen("outfile.dat","w");strcpy(str,"###T#ES#T#######");fun(str);fprintf(out,"%s",str);fclose(out);}上机考试模拟试题(4)参考答案及解析一、填空题[答案](1)m/2(2)i(3)a[m-i-1][解析]本题中
7、函数功能是逆置数组元素的值。此类题的解题思路,是在简单的两个数值交换的基础上,增加对数值定位的功能,也就是确定要交换的数值在数组中的位置。从已给部分源程序的mam主函数开始入手,“fun(x,5);”语句调用fun函数,实现本题要求。第一空:对于数组中的元素进行逆置,根据上面的分析,整个数组中元素交换的循环次数,应该只需要交换整个数组长度的一半的次数。所以,第一空填“m/2”。第二空:其中,元素逆置,就是第一个和最后一个交换,依次类推。个数为m的数组中,与第i个元素相对应需要交换的元素是第m-i
8、-1个元素,所以第二空填“i”。第三空:根据两个元素交换的算法,第i个和第m-i-1个元素交换的过程,这里应填“a[m-i-1]”。二、改错题[答案](1)retum3;(2)return1;[解析]本题中函数的功能是判断能否构成三角形;构成的是等边三角形,还是等腰三角形,利用if语句判断三边值之间的关系,然后根据判断结果,返回题干中要求的值。(1)第一个标识下的语句“if(x==y&&y==z)”说明x、y、z三个值相等,即三边相等,是等边三角形,根据题干要求,fun函数应该返回3,所以应将“