1、二级 C 语言-338 (1)及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充函数 proc(),该函数的功能是:判断某一个年份是否为闰年。 例如,1900 年不是闰年,2004 年是闰年。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的横线上填入所编写的若干表达式或语句。 试题程序: #includestdlib.h #includestdio.h #includeconio.h int proc(int m) int flag=0; if(m%4=0) if( 1) fla
2、g=1; if( 2) flag=1; return 3; void main() int year; system(“CLS“); printf(“Input the year: “); scanf(“%d“, if(proc(year) printf(“%d is a leap year./n“, year); else printf(“%d is not a leap year./n“, year); (分数:30.00)二、程序改错题(总题数:1,分数:40.00)2.下列给定程序中,函数 proc()的功能是:从字符串 str 中,删除所有小写字母 c。 请修改程序中的错误,使它能得
3、出正确的结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdio.h void proc(char*str) int i, j; for(i=j=0; stri!=“/0“; i+) if(stri!=“c“) /*found* strj=stri; /*found* stri=“/0“; void main() char str80; printf(“/nEnter a string: “); gets(str); printf(“The original string: “); puts(str); proc(str); pr
4、intf(“The string after deleted: “); puts(str); printf(“/n/n“); (分数:40.00)_三、程序设计题(总题数:1,分数:30.00)3.下列给定程序中,函数 proc()的功能是:从字符串 str 中,删除所有小写字母 c。 请修改程序中的错误,使它能得出正确的结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdio.h void proc(char*str) int i, j; for(i=j=0; stri!=“/0“; i+) if(stri!=“c“) /*fo
5、und* strj=stri; /*found* stri=“/0“; void main() char str80; printf(“/nEnter a string: “); gets(str); printf(“The original string: “); puts(str); proc(str); printf(“The string after deleted: “); puts(str); printf(“/n/n“); (分数:30.00)_二级 C 语言-338 (1)答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补
6、充函数 proc(),该函数的功能是:判断某一个年份是否为闰年。 例如,1900 年不是闰年,2004 年是闰年。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的横线上填入所编写的若干表达式或语句。 试题程序: #includestdlib.h #includestdio.h #includeconio.h int proc(int m) int flag=0; if(m%4=0) if( 1) flag=1; if( 2) flag=1; return 3; void main() int year; system(“CLS“); pr
7、intf(“Input the year: “); scanf(“%d“, if(proc(year) printf(“%d is a leap year./n“, year); else printf(“%d is not a leap year./n“, year); (分数:30.00)解析:m%100!=0 m%400=0 flag解析 闰年是指能够被 4 整除,但不能同时被 100 整除,或者能够被400 整除的数,因此,第一处填“n%100!=0”;第二处填“n%400=0”;由函数 proc()可知,变量 flag是一个年份是否为闰年的标志,由主函数中的函数调用可知应返回该年份是
8、否为闰年,因此,第三处填“flag”。二、程序改错题(总题数:1,分数:40.00)2.下列给定程序中,函数 proc()的功能是:从字符串 str 中,删除所有小写字母 c。 请修改程序中的错误,使它能得出正确的结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdio.h void proc(char*str) int i, j; for(i=j=0; stri!=“/0“; i+) if(stri!=“c“) /*found* strj=stri; /*found* stri=“/0“; void main() char st
9、r80; printf(“/nEnter a string: “); gets(str); printf(“The original string: “); puts(str); proc(str); printf(“The string after deleted: “); puts(str); printf(“/n/n“); (分数:40.00)_正确答案:()解析:(1)错误:strj=stri; 正确:strj+=stri; (2)错误:stri=“/0“; 正确:strj=“/0“; 解析 按照题目要求删除所有的小写字母“c”,可以将字符串中所有不是小写字母“c”的字符放入字符串 s
10、tr 中,形成一个新的字符串,因此,“strj=stri;”应改为“strj+=stri;”。最后为新的字符串添加结束符,由函数 proc()可知,变量 j 为新的字符串的下标,因此,“stri=“/0“;”应改为“strj=“/0“;”。三、程序设计题(总题数:1,分数:30.00)3.下列给定程序中,函数 proc()的功能是:从字符串 str 中,删除所有小写字母 c。 请修改程序中的错误,使它能得出正确的结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdio.h void proc(char*str) int i, j;
11、 for(i=j=0; stri!=“/0“; i+) if(stri!=“c“) /*found* strj=stri; /*found* stri=“/0“; void main() char str80; printf(“/nEnter a string: “); gets(str); printf(“The original string: “); puts(str); proc(str); printf(“The string after deleted: “); puts(str); printf(“/n/n“); (分数:30.00)_正确答案:()解析:proc(int aN) int i, j, max=a00; /首先把第一个数放到 max 中 for(i=0; i4; i+) for(j=0; jN; j+) if(maxaij) /整型二维数组中最大元素的值放到 max 中 max=aij; return max; 解析 要求出二维数组中最大元素的值,需要比较二维数组中每一个元素的值。首先,定义变量 max用来存放最大元素的值,将其初始化为二维数组中第一个元素的值。然后将其与后面的每一个元素进行比较,将二维数组中最大元素的值放到变量 max 当中,并将其返回给主函数。