《计算机等级考试《二级C语言程序设计》机考操作题题库(8)附答案》由会员分享,可在线阅读,更多相关《计算机等级考试《二级C语言程序设计》机考操作题题库(8)附答案(22页珍藏版)》请在金锄头文库上搜索。
1、2015 年计算机等级考试 二级 C 语言程序设计机考操作题题库(8)本卷共分为3 大题15 小题,作答时间为240 分钟,总分200分,120 分及格。一、程序填空题(共50 分)1、请补充函数proc(),该函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,若一维数组中的数据是:11 2 2 2 3 4 4 5 5 6 6 67 7 8 10 10 。删除后,数组中的内容应该是:12 3 4 5 6 7 8 10 。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容, 仅在函数proc()的
2、横线上填入所编写的若干表达式或语句。试题程序:2 、请补充 main()函数,该函数的功能是:输出一个44 的矩阵, 要求必须使用行指针表示输出变量。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在main()函数的横线上填入所编写的若干表达式或语句。试题程序:3 、给定程序的功能是将n 个人的考试成绩进行分段统计,考试成绩放在a 数组中,各分段的人数存到b 数组中:成绩为60 69的人数存到b0中,成绩为 70 79的人数存到b1中,成绩为 80 89的人数存到b2中,成绩为 90 99的人数存到b3中,成绩为 l00的人数存到b4中,成绩为 60 分以下的人数
3、存到b5中。例如,当a 数组中的数据是:93 、 85 、,77 、 68 、 59 、 43 、 94 、 75 、 98 ,调用该函数后,b 数组中存放的数据应是:1、 2、 1、 3、 0、 2。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容, 仅在横线上填入所编写的若干表达式或语句。试题程序:4 、 数组 xxM保存着一组 4 位无符号整数, 其元素的个数通过变量num 传人函数proc()。请补充函数proc(),该函数的功能是:从数组 XX 中找出个位和百位上的数字相等的所有无符号整数,结果保存在数组yy 中,其个数由函数proc()返回。例如,当xx8=
4、11112413 2321 2222 4245 3333 14145335)时,yy6=1111 22223333 1414。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc 的横线上填入所编写的若干表达式或语句。试题程序:5、请补充 main()函数,该函数的功能是:打印出1 10000 中满足个位数字的立方等于其本身的所有的数。本题的结果为:164 125 216 729注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在main()函数的横线上填入所编写的若干表达式或语句。试题程序:二、程序改错题(共100 分)6 、下
5、列给定程序中,函数proc()的功能是:根据整型形参n,计算如下公式的值。例如,若n=12 ,则应输出0 618026。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:7 、下列给定程序中,函数proc()的功能是:用递归算法计算斐波拉契级数列中第n 项的值。从第一项起,斐波拉契级数序列为1, 1, 2, 3, 5, 8, 13 , 21 ,例如,若给n 输入 8,该项的斐波拉契级数值为21 。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:8 、
6、下列给定程序中,函数proc()的功能是:依次取出字符串中所有的数字字符,形成新的字符串,并取代原字符串。例如原始字符串是“ab45c6djfd789”,则输出后的字符是“456789”。请修改函数proc()中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:9 、下列给定的程序中,函数proc()的功能是:用选择法对数组中的n 个元素按从大到小的顺序进行排序。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:10 、下列给定程序中,函数proc()的功能是:对
7、M 名学生的学习成绩,按从低到高的顺序找出前 m(m 10) 名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:三、程序设计题(共50 分)11 、请编写函数proc(),对长度为 9 个字符的字符串,除首、尾字符外,将其余7 个字符按 ASC码值降序排列。例如,原来的字符串为HabcdefA,则排序后输出为HfedcbaA。注意:部分源程序给出如下。请勿改动main()和其他函数中的任何内容,仅在函数proc()中填入所编写的若干语
8、句。试题程序:12 、请编写函数proc(),该函数的功能是:移动一维数组中的内容,若数组中有n 个整数,要求把下标从p 到 n-1(p n-1)的数组元素平移到数组的前面。例如,一维数组中的原始内容为1, 2, 3, 4, 5, 6, 7, 8, 9, 10 , 11 , 12 , 13 , 14 ,P 的值为 4。移动后,一维数组中的内容应为5, 6, 7, 8, 9, 10 11 , 12 , 13 , 14 , 1,2, 3, 4。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容, 仅在函数proc()的花括号中填入所编写的若干语句。试题程序:13 、请编写函数
9、proc(),该函数的功能是:将两个两位数的正整数num1 , num2合并形成一个整数放在num 中。合并的方式是:将num1数的十位和个位数依次放在num 数的十位和千位上,num2数的十位和个位数依次放在c 数的百位和个位上。例如,当num1=64, num2=18时,调用到该函数后,num=4168。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容, 仅在函数proc()的花括号中填入所编写的若干语句。试题程序:14 、请编写函数proc(),该函数的功能是:计算 n 门课程的平均分,计算结果作为函数值返回。例如,有6 门课程的成绩是90 5, 72 , 80
10、, 61 5, 55 , 60 ,则函数的值为69 83 。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容, 仅在函数proc()的花括号中填入所编写的若干语句。试题程序:15 、请编写一个函数void proc(char*str),其功能是: 将字符串str 中所有下标为偶数位置上的字母转化为大写( 若该位置上不是字母,则不转换) 。例如,若输入字符串: “ thankyou6 very much ”, 则应输出: “ TbAnKYoU6 vErY MuCh”。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容, 仅在函数proc()的花括号中
11、填入所编写的若干语句。试题程序:以下为参考答案部分,大部分试题都有解析哦1、参考答案【 1】 t=arrEi【 2】 arrj+=t【解析】要实现删去一维数组中所有相同的数,可以通过将不同的字符放在原数组中来实现。当后一个字符跟前一个字符相同时,不做任何操作,因此【1】填“t=arri”;当后一个字符与前一个字符不同时,放入数组arr 中,因此【 2】填“arej+=t”。2、参考答案【 1】 arr【 2】 *(*(p+i)+j)【解析】题目中要求必须使用行指针表示输出变量,由程序可知变量p 为行指针,其应该初始化为数组的首地址,因此【1】处应填“arr”;每输出一个数组元素时,变量p 为上
12、一行的末地址加上该行的偏移量,因此【2】处填“*(*(p+i)+j)”。3、参考答案【 1】 n【 2】 else【 3】 a,b【解析】分段统计题。fun()函数中第一个循环的功能是将数组b 清零;第二个循环的作用是分别记录各分数段的人数,具体步骤是遍历数组a 取出第 i 个考生的成绩, 将此成绩依次做判断, 找到它的分数段,然后将记录该分数段的人数的变量加1,遍历结束数组b 中存放的就是各分数段人数的记录。4、参考答案【 1】 xxi 101【 2】 yyn+=xxi【 3】n【解析】要找出个位和百位上的数字相等的所有无符号整数,首先要得到数组xx 中每一个元素的个位和百位数字,然后进行比
13、较。 因此,【 1】 处填 xxi 10 。当个位和百位相等时,把数组 xx 中的该元素放到数组yy 中。因此,【2】处填yyn+=xxi。由函数proc()可知,数组 yy 的个数存放在变量n 中,最后返回到主函数当中。因此,【3】处填n。5、参考答案【 1】 i 10 【 2】 k*k*k=i【解析】 要得到个位数字的立方等于其本身的所有数,首先要得到1 10000 中所有数字的个位数,因此【1】处填“i 10 ”;变量k 中存放每一个数字的个位数,要满足题目中要求,因此【2】“k*k*k=i”。6、参考答案:(1)错误:intproc(intn)正确:floatproc(intn)(2)
14、错误:for(i=2; in ; i+)正确:for(i=2; i=n; i+)【解析】由主函数中的调用以及函数proc()的返回值可知,函数 proc()的返回值类型应为float型数据。因此,“intproc(int n) ”应改为“floatproc(intn) ”;由题目中所给公式可知,循环中应该包含n 的值,因此,“for(i=2; in ; i+)”应改为“for(i=2; i=n;i+)”。7、参考答案(1)错误:switch(g);正确:switch(g)(2)错误:case1; case 2: return 1;正确:case 1: return 1; case2: retu
15、rn1;【解析】 由 C 语言的语法规则可知,switch语句后面是没有分号的,因此,“ switch(g);”要把后面的分号去掉;在C 语言中,case 语句后面是冒号而不是分号,因此,“case1;case 2: return 1;”应改为“case1: return 1; case2: return1;”。8、参考答案9、参考答案(1)错误:p=j正确:p=j ;(2)错误:p=j ;正确:p=i ;【解析】根据C 语言的语法规则每一条语句都要以分号结束。因此,“p=j ”后要加上分号“;”。每次比较后要把小的下标赋值给p,因此,“p=j ;”应改为“p=i ;”。10 、参考答案(1)
16、错误:*t=calloe(m, sizeof(STU);正确:(structss*)calloc(m, sizeof(STU);(2)错误:for(i=j=0; iM ; j+)正确:for(i=j=0; iM ; i+)(3)错误:tk s=bj s;正确:tk=bj;【解析】由函数proc()可知,变量 t 是指向动态存储空间的变量,因此不能间接访问运算符,而函数calloc的返回值类型为void*,要进行显式类型转换,因此“*t=calloc(m,si-zeof(STU);”应改为“(structss*)calloc(m, sizeof(STU);”。由程 序 可知 ,变 量i为 控制 学生 个 数的 变 量 , 因此 “ for(i=j=11 、参考答案【解析】按照题目中要求,求除首、尾字符外,将其余7 个字符按ASC码值降序排列。首先需要判断除首、尾字符之外,其余7 个字符 ASC码值的大小,将不符合顺序要求的字符互换。12 、参考答案【解析】题目中要求把下标从p 到 n-1 的数组元素平移到数组的前面,可以通过每一次循环将最后一个元素放在第一个位置上,使其成为第一个元素,其