1、二级 C语言机试-250 及答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)请补充 main()函数,该函数的功能是:打印出 110000 中满足个位数字的立方等于其本身的所有数。本题的结果为:1 64 125 216 729注意:部分源程序已给出。请勿改动主函数 main和其他函数中的任何内容。试题程序:#includestdlib.h#includestdio.hvoid main()int i, k;system(“CLS“);for(i=1; i10000; i+)k= (1) ;if( (2) )printf(“%4d“, i);(分数:
2、30.00)填空项 1:_填空项 1:_二、改错题(总题数:1,分数:30.00)1.下列给定的程序中,函数 proc()的功能是:计算并输出 m以内最大的 6个能被 7或 11整除的自然数之和。m 的值由主函数传入。例如,若 m的值为 600,则函数的值为 3515。请修改程序中的错误,使它能得到正确结果。注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。试题程序:#includestdlib.h#includestdio.h#includeconio.hint proc(int k)int m=0, mc=0;/*found*while(k=2)me+;k-;retu
3、rn m;void main()system(“CLS“);printf(“%d/n“, proc(600);(分数:30.00)填空项 1:_三、编程题(总题数:1,分数:40.00)2.编写一个函数,该函数可以统计一个长度为 2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为 abcdefabcdeabceabcdef,子字符串为 cd,则应当输出 3。注意:部分源程序已给出。请勿改动主函数 main和其他函数中的任何内容。试题程序:#includestdlib.h#includeconio.h#includestdio.h#includestring.hint proc(ch
4、ar * str, char * substr)void main()char str81, substr3;int n;system(“CLS“);printf(“输入主字符串: “);gets(str);printf(“输入子字符串: “);gets(substr);puts(str);puts(substr);n=proc(str, substr);printf(“n=%d/n“, n);(分数:40.00)_二级 C语言机试-250 答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)请补充 main()函数,该函数的功能是:打印出 11000
5、0 中满足个位数字的立方等于其本身的所有数。本题的结果为:1 64 125 216 729注意:部分源程序已给出。请勿改动主函数 main和其他函数中的任何内容。试题程序:#includestdlib.h#includestdio.hvoid main()int i, k;system(“CLS“);for(i=1; i10000; i+)k= (1) ;if( (2) )printf(“%4d“, i);(分数:30.00)填空项 1:_ (正确答案:i%10)解析:填空项 1:_ (正确答案:k*k*k=i)解析:解析 要得到个位数字的立方等于其本身所有数,首先要得 110000 中所有数
6、字的个位数。因此1处填 i%10;变量 k中存放每一个数字的个位数,要满足题目中要求,因此2k*k*k=i。二、改错题(总题数:1,分数:30.00)1.下列给定的程序中,函数 proc()的功能是:计算并输出 m以内最大的 6个能被 7或 11整除的自然数之和。m 的值由主函数传入。例如,若 m的值为 600,则函数的值为 3515。请修改程序中的错误,使它能得到正确结果。注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。试题程序:#includestdlib.h#includestdio.h#includeconio.hint proc(int k)int m=0,
7、mc=0;/*found*while(k=2)me+;k-;return m;void main()system(“CLS“);printf(“%d/n“, proc(600);(分数:30.00)填空项 1:_ (正确答案:(1)错误:while(k=2) n(mc6)正确:while(k=2)(mc6)(2)错误:if(k%7=0)|(k%11=0)正确:if(k%7=0)|(k%11=0)(3)错误:m=k;正确:m=m+k;)解析:解析 变量 k和 me分别存放的是主函数传递的 m的值和能被 7或 11整除的数的个数。因此条件k=2 和 mc6 必须同时成立。因此 while(k2)(
8、mc6)应改为 while(k=2)(mc6);在 C语言中,“=”是赋值符号,“=”是判断两个数是否相等的符号,因此 if(k%7=0)|(k%=0)应改为if(k%11=0)|(k%11=0);最终结果要求输出最大的 6个能被 7或 11整除的自然数之和并放在变量 m中,因此 m=k应改为 m=m+k。三、编程题(总题数:1,分数:40.00)2.编写一个函数,该函数可以统计一个长度为 2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为 abcdefabcdeabceabcdef,子字符串为 cd,则应当输出 3。注意:部分源程序已给出。请勿改动主函数 main和其他函数中的任
9、何内容。试题程序:#includestdlib.h#includeconio.h#includestdio.h#includestring.hint proc(char * str, char * substr)void main()char str81, substr3;int n;system(“CLS“);printf(“输入主字符串: “);gets(str);printf(“输入子字符串: “);gets(substr);puts(str);puts(substr);n=proc(str, substr);printf(“n=%d/n“, n);(分数:40.00)_正确答案:(int proc(char * str, char*substr)im i, j=0; /j表示其相同的个数for(i=0; stri+1!=/0; i+)if(stri=substrr0stri+1=substr1)/长度为 2的字符串在另一个字符串中出现的次数j+; /把其放到 j中return j; /最后把其个数返回到主函数中)解析:解析 要计算出主字符串中包含子字符串的个数,应该检查主字符串中从第一个到最后一个字符。每出现一个计数变量加 1,最后将得到的个数返回给主函数。