国家二级C语言机试(程序修改题)模拟试卷31
程序修改题
1.下列给定程序中,规定输入的字符串全部为字母,fun函数的功能是:统计a所指字符串中每个字母在字符串中出现的次数(统计时不区分大小写),并将出现次数最多的字母输出(如果有多个相同,输出一个即可)。
例如,对于字符串dadbcdbabdb,对应的输出应为b或d。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
(1)b[i]=0; (2)b[a[i]-’a’]++; (3)if(b[max]<b[i])
解析:要统计字符串中每个字符在这个字符串中出现的次数,可以设数组b中存放每个字符出现的次数,b[0]存放字符a的次数,b[1]存放字符b的次数……统计之前为数组b各元素赋初值为0。然后依次取出字符串的每个字符进行判断,使对应数组b加1。max初始值为0,与数组b中的每个元素进行比较,如果小于,就把下标进行交换。
(1)数组a存放的是字符串,数组b为整型数组,存放的是每个字符的个数,应将数组b每个元素初始化为0。
(2)小写字母的ASCII码值减去a的ASCII码值即为相应字母的下标值,相应下标值的数组元素的值增加1。
(3)最大值小于被比较数时,把被比较数的下标值赋给max,max中存放的总是当前最大值。
2.在主函数中用键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数fun的功能是:计算数组元素中所有值为正数的平均值(不包括0)。
例如,数组中元素中的值依次为:39,-47,21,2,-8,15,0,则程序的运行结果为19.250000。
请改正程序中的错误,使它能得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
试题程序:
(1)double sum=0.0;
(2)sum/=c;
解析:本题考查:变量的数据类型,区别int整型和double双精度型;除法运算符“/”。
(1)变量定义错误,变量sum存放所有数据的和,应定义为double型。
(2)C语言中的除法运算符是“/”。
3.下列给定程序中,函数fun的功能是:找出一个大于给定整数m且紧随m的素数,并作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
(1)if(i%k==0)
(2)if(k==i)
解析:(1)判断当前数是否为素数,若存在一个数(除1和其自身)能整除当前数,则跳出本次循环,所以if条件应为i%k==0。
(2)如果i是素数,则循环结束时k==i,将该值返回。
4.下列给定程序中,函数fun的功能是:将长整型数中各位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为87653142时,t中的数为8642。
请改正程序中的错误,使它能得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
试题程序:
(1)if(d%2==0)
(2)s/=10;
解析:本题考查:if语句条件表达式,注意“==”和“=”的区别;除法运算符“/”。
(1)分析程序,在if的条件表达式中,不应该出现赋值运算符“=”,应使用“==”运算符。
(2)这里是一个运算符的错误,表示除法的运算符是“/”。
5.下列给定程序的功能是:读入一个整数k(2≤k≤10000),输出它的所有质因子(即所有为素数的因子)。
例如,若输入整数2310,则应输出2,3,5,7,11。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
(1)IsPrime(int n) (2)if(!(n%i))
解析:本题考查:函数定义的格式;if条件的判断语句。这些知识点必须掌握,因为经常考到。
(1)函数定义格式错误,函数定义时后面不能加“;”,所以应该去掉分号。
(2)根据题意可知,if条件语句判断n是否可以整除i,如果不能整除则为质因子,所以if!(n%i)应改为if(!(n%i))。
6.下列给定程序中,函数fun的功能是:从s所指字符串中,找出t所指字符串的个数作为函数值返回。
例如,当s所指字符串中的内容为\\
(1)if(*r==*p) {r++;p++;}
(2)if(*r==’\0’)
解析:本题考查:if语句,考生需要根据题意确定if语句的判断条件;字符串结束标识,所有的字符串都要以’\0’结尾,上机考试常考知识点,考生一定要牢记;复合赋值运算,常用于循环控制和变量的累加、累乘。
从字符串s中找出子串t的方法是:从第1个字符开始,对字符串进行遍历,若s串的当前字符等于t串的第1个字符,两个字符串的指针自动加1,继续比较下一个字符;若比较至字符串t的结尾,则跳出循环;若s串的字符与t串的字符不对应相同,则继续对s串的下一个字符进行处理。
7.下列给定程序中,函数fun的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中,x和y的值不相等,z和y的值不相等。
例如,当x的值为9,y的值为11,z的值为15时,函数值为-3.50。
请改正程序中的错误,使它能得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
试题程序:
(1)#de6ne FU(m,n)(m)/(n)
(2)retum(value);
解析:本题考查C语言的宏定义,其格式为:#define标识符字符串,中间要用空格分开。在该题中,标识符为Fu(m,n),字符串为(m/n),由题干信息可知,m、n均为表达式,且先进行表达式运算,再进行除法运算,所以此处应为(m)/(n)。
8.下列给定程序中,函数fun的功能是:在整数10到55之间,查找能被3整除且有一位上的数值是5的数,把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定函数中a1放个位数,a2放十位数
本文档预览:3600字符,共9797字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载