1、二级 C 语言-190 (1)及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充函数 proc(),该函数的功能是判断一个数是否为素数。该数是素数时,函数返回字符串:“yes!”,否则函数返回字符串:“no!”,并在主函数中输出。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的横线上填入所编写的若干表达式或语句。 试题程序: #includestdlib.h #includeconio.h #includestdio.h 1 int i, m; m=1; for(i= 2; in
2、; i+) if( 3) m=0; break; if(m=1 else return(“no!“); void main() int k=0; system(“CLS“); printf(“Input: “); scanf(“%d“, printf(“%s/n“, proc(k); (分数:30.00)二、程序改错题(总题数:1,分数:40.00)2.下列给定程序中,函数 proc()的功能是:先从键盘上输入一个 3 行 3 列的矩阵的各个元素的值,然后输出主对角线元素之和。 例如:输入 1 2 3 4 5 6 7 8 9,则矩阵为 1 2 3 4 5 6 7 8 9 输出为 Sum=15。
3、 请修改函数 proc()中的错误,使它能得出正确的结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdio.h void proc() int arr33, sum; int i, j; /*found* sum=1; printf(“please input 3*3 array: /n“); for(i=0; i3; i+) for(j=0; j3; j+) /*found* scanf(“%d“, arrij); for(i=0; i3; i+) sum=sum+arrii; printf(“Sum=%d/n“, sum);
4、 void main() proc(); (分数:40.00)_三、程序设计题(总题数:1,分数:30.00)3.学生的记录由学号和成绩组成,M 名学生的数据已在主函数中放入结构体数组 stu 中,请编写函数proc(),它的功能是:函数返回指定成绩的学生数据,指定的成绩在主函数中输入。若没找到指定的成绩,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的花括号中填入所编写的若干语句。 试题程序: #includestdio.h #includestdlib.h #define M
5、16 typedef struct char num10; int s; STREC; STREC proc(STREC*a, int b) void main() STREC stuM=“GA005“, 76, “GA003“, 89, “GA002“, 64, “GA004“, 75, “GA001“, 88, “GA007“, 65, “GA008“, 96, “GA006“, 69, “GA015“, 85, “GA013“, 78, “GA012“, 62, “GA014“, 60, “GA011“, 73, “GA017“, 72, “GA018“, 98, “GA016“, 94
6、; STREC h; int m; int i; printf(“The original data: /n“); for(j=0; iM; i+) if(i%4=0) printf(“/n“); /每行输出 4 个学生记录 printf(“%s%3d“, stui.num, stui.s); printf(“/n/nEnter the score:“); scanf(“%d“, h=proc(stu, m); printf(“The data: “); printf(“/n%s%4d/n“, h.num, h.s); printf(“/n“); (分数:30.00)_二级 C 语言-190
7、(1)答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充函数 proc(),该函数的功能是判断一个数是否为素数。该数是素数时,函数返回字符串:“yes!”,否则函数返回字符串:“no!”,并在主函数中输出。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的横线上填入所编写的若干表达式或语句。 试题程序: #includestdlib.h #includeconio.h #includestdio.h 1 int i, m; m=1; for(i= 2; in; i+) if( 3)
8、m=0; break; if(m=1 else return(“no!“); void main() int k=0; system(“CLS“); printf(“Input: “); scanf(“%d“, printf(“%s/n“, proc(k); (分数:30.00)解析:char*proc(int n) 2 n%i=0解析 由整个程序可知,第一空应为函数 proc()的函数头。根据主函数中的调用可知形参的个数和类型,因此,第一处填“char*proc(int n)”。素数为只能被 1 和它本身整除的整数。要判断一个整数是否为素数,要看它是否能被除 1 和小于它本身之外的数整除,因
9、此,第二处填“2”;第三处填“n%i=0”。二、程序改错题(总题数:1,分数:40.00)2.下列给定程序中,函数 proc()的功能是:先从键盘上输入一个 3 行 3 列的矩阵的各个元素的值,然后输出主对角线元素之和。 例如:输入 1 2 3 4 5 6 7 8 9,则矩阵为 1 2 3 4 5 6 7 8 9 输出为 Sum=15。 请修改函数 proc()中的错误,使它能得出正确的结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdio.h void proc() int arr33, sum; int i, j; /*fo
10、und* sum=1; printf(“please input 3*3 array: /n“); for(i=0; i3; i+) for(j=0; j3; j+) /*found* scanf(“%d“, arrij); for(i=0; i3; i+) sum=sum+arrii; printf(“Sum=%d/n“, sum); void main() proc(); (分数:40.00)_正确答案:()解析:(1)错误:sum=1; 正确:sum=0; (2)错误:scanf(“%d“, arrij); 正确:scanf(“%d“, 解析 由函数 proc()可知,变量 sum 中存
11、放的是矩阵主对角线元素之和。其初始值应该为 0,因此,“sum=1;”应改为“sum=0;”。在 C 语言当中,scanf 为格式化输入,变量应该要带地址符。因此,“scanf(“%d“, arrij);”应改为“scanf(“%d“, ”。三、程序设计题(总题数:1,分数:30.00)3.学生的记录由学号和成绩组成,M 名学生的数据已在主函数中放入结构体数组 stu 中,请编写函数proc(),它的功能是:函数返回指定成绩的学生数据,指定的成绩在主函数中输入。若没找到指定的成绩,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。 注意:部分源程序给出如下。 请勿改动 main()函数
12、和其他函数中的任何内容,仅在函数 proc()的花括号中填入所编写的若干语句。 试题程序: #includestdio.h #includestdlib.h #define M 16 typedef struct char num10; int s; STREC; STREC proc(STREC*a, int b) void main() STREC stuM=“GA005“, 76, “GA003“, 89, “GA002“, 64, “GA004“, 75, “GA001“, 88, “GA007“, 65, “GA008“, 96, “GA006“, 69, “GA015“, 85,
13、“GA013“, 78, “GA012“, 62, “GA014“, 60, “GA011“, 73, “GA017“, 72, “GA018“, 98, “GA016“, 94; STREC h; int m; int i; printf(“The original data: /n“); for(j=0; iM; i+) if(i%4=0) printf(“/n“); /每行输出 4 个学生记录 printf(“%s%3d“, stui.num, stui.s); printf(“/n/nEnter the score:“); scanf(“%d“, h=proc(stu, m); pri
14、ntf(“The data: “); printf(“/n%s%4d/n“, h.num, h.s); printf(“/n“); (分数:30.00)_正确答案:()解析:STREC proc(STREC*a, int b) int i; STREC str=“/0“, -1; /当没有指定的学号,则给一个-1 for(i=0; iM; i+) if(ai.s=b) /通过 if 语句来判断其中是否有指定的学号 str=ai; return str; /把找到的学号返回到主函数中 解析 要返回指定成绩的学生数据,首先应该将所有学生的成绩与指定成绩相比较。如果有学生的成绩与指定成绩相等,则将该学生的记录返回给主函数,否则将学号置成空串,成绩置-1 返回给主函数。