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