1、全国计算机二级 C语言上机试题 19+2015年及答案解析(总分:30.00,做题时间:90 分钟)1.程序通过定义学生结构体变量,存储了学生的学号、姓名和 3门课的成绩。函数 fun的功能是将形参 a所指结构体变量 s中的数据进行修改,并把 a中地址作为函数值返回主函数,在主函数中输出修改后的数据。 例如:a 所指变量 s中的学号、姓名、和三门课的成绩依次是:10001、“ ZhangSan “、95、80、88,修改后输出 t中的数据应为:10002、“LiSi “、96、81、89。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下
2、的 BLANK1.C中。不得增行或删行,也不得更改程序的结构! 给定源程序: #include #include struct student long sno; char name10; float score3; ; /*found*/ _1_ fun(struct student *a) int i; a-sno = 10002; strcpy(a-name, “LiSi“); /*found*/ for (i=0; isno, t-name); for (i=0; iscorei); printf(“/n“); (分数:10.00)_2.给定程序 MODI1.C中函数 fun的功能是:
3、从 N个字符串中找出最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 给定源程序: #include #include #define N 5 #define M 81 /*found*/ fun(char (*sq)M) int i; char *sp; sp=sq0; for(i=0;i if(strlen( sp) sp=sqi ; /*found*/ return sq; main() char strNM, *longest; int
4、i; printf(“Enter %d lines :/n“,N); for(i=0; i printf(“/nThe N string :/n“,N); for(i=0; i longest=fun(str); printf(“/nThe longest string :/n“); puts(longest); (分数:10.00)_3.函数 fun的功能是:将 a、b 中的两个两位正整数合并形成一个新的整数放在 c中。合并的方式是:将 a中的十位和个位数依次放在变量 c的百位和个位上,b 中的十位和个位数依次放在变量 c的十位和千位上。例如,当 a45,b=12。调用该函数后,c=2415
5、。 注意: 部分源程序存在文件 PROG1.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数 main和其它函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 给定源程序: #include void fun(int a, int b, long *c) main() int a,b; long c; printf(“Input a, b:“); scanf(“%d%d“, fun(a, b, printf(“The result is: %ld/n“, c); NONO(); (分数:10.00)_全国计算机二级 C语言上机试题 19+2015年答案解析(总分:30
6、.00,做题时间:90 分钟)1.程序通过定义学生结构体变量,存储了学生的学号、姓名和 3门课的成绩。函数 fun的功能是将形参 a所指结构体变量 s中的数据进行修改,并把 a中地址作为函数值返回主函数,在主函数中输出修改后的数据。 例如:a 所指变量 s中的学号、姓名、和三门课的成绩依次是:10001、“ ZhangSan “、95、80、88,修改后输出 t中的数据应为:10002、“LiSi “、96、81、89。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1.C中。不得增行或删行,也不得更改程序的结构! 给定源
7、程序: #include #include struct student long sno; char name10; float score3; ; /*found*/ _1_ fun(struct student *a) int i; a-sno = 10002; strcpy(a-name, “LiSi“); /*found*/ for (i=0; isno, t-name); for (i=0; iscorei); printf(“/n“); (分数:10.00)_正确答案:(第一处:必须定义结构指针返回类型,所以应填:struct student *。 第二处:分别对成绩增加 1分,
8、所以应填:a-scorei。 第三处:返回结构指针 a,所以应填:a。)解析:2.给定程序 MODI1.C中函数 fun的功能是:从 N个字符串中找出最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 给定源程序: #include #include #define N 5 #define M 81 /*found*/ fun(char (*sq)M) int i; char *sp; sp=sq0; for(i=0;i if(strlen( sp
9、) sp=sqi ; /*found*/ return sq; main() char strNM, *longest; int i; printf(“Enter %d lines :/n“,N); for(i=0; i printf(“/nThe N string :/n“,N); for(i=0; i longest=fun(str); printf(“/nThe longest string :/n“); puts(longest); (分数:10.00)_正确答案:(第一处: 要求返回字符串的首地址,所以应改为:char *fun(char (*sq)M)。 第二处: 返回一个由变量
10、sp控制的字符串指针,所以应改为:return sp;。)解析:3.函数 fun的功能是:将 a、b 中的两个两位正整数合并形成一个新的整数放在 c中。合并的方式是:将 a中的十位和个位数依次放在变量 c的百位和个位上,b 中的十位和个位数依次放在变量 c的十位和千位上。例如,当 a45,b=12。调用该函数后,c=2415。 注意: 部分源程序存在文件 PROG1.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数 main和其它函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 给定源程序: #include void fun(int a, int b, long *c) main() int a,b; long c; printf(“Input a, b:“); scanf(“%d%d“, fun(a, b, printf(“The result is: %ld/n“, c); NONO(); (分数:10.00)_正确答案:( )解析: