1、国家二级 C语言机试(操作题)模拟试卷 515及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:找出 100999之间 (含 100和 999)所有整数中各位上数字之和为 x(x为一正整数 )的整数,然后输出;符合条件的整数个数作为函数值返回。 例如,当 x值为 5时, 100999之间各位上数字之和为 5的整数有: 104、 113、122、 131、 140、 203、 212、 221、 230、 302、 311、 320、 401、 410、 500。共有 15个。当 x、值为 27时,各位数字之和为 27的整数是: 999。只有 1个。 请在程序的下划线处填入正确
2、的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! #include int fun(int x) int n, s1, s2, s3, t; n=0; t=100; /*found*/ while(t0):“); scanf(“%d“, printf(“nThe result is: %dn“, fun(x) ) ; z 二、程序修改题 2 给定程序 MODI1 C中函数 fun的功能是:从低位开始取出长整型变量 s中偶数位上的数,依次构成一个新数放在 t中。高位仍在高位,低位仍在低位。 例如,当 s
3、中的数为: 7654321时, t中的数为: 642。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! #include /* found*/ void fun (long s, long t) long sl=10; s /= 10; *t = s % 10; /* found*/ while (s #define N 16 typedef struct char num10; int s; STREC; void fun(STREC a) main () STREC sN=“GA005“,85, “GA003“,76,“G
4、A002“,69, “GA004“,85,“GA001“,91, “GA007“,72,“GA008“,64, “GA006“,87, “GA015“, 85, “GA013“,91,“GA012“,64, “GA014“,91,“GA011“,66, “GA017“,64,GA018“,64, “GA016“,72; int i;FILE *out ; fun(s); printf(“The data after sorted:n“); for(i=0;i0) 【试题解析】 函数目的是取出长整型变量 s中偶数位上的数。 (1)第一个标识下的形参 t被定义为一个 long型变量,而对应的主函数
5、中的实参却是一个地址值。因此, t在函数定义中应该被定义为一个指针变量,即 “void fun(long s, long t)”改为“void fun(longs,long *t)”。 (2)第二个标识下的 while循环控制表达式 “s0)”。 三、程序设计题 3 【正确答案】 STREC tmp; int i, j; for(i=0; iN; i+) for(j=i+1; jN; j+) if(ai saj s) tmp=ai; ai=aj; aj=tmp; 【试题解析】 (1)在 fun函数中,通过循环对成绩记录进行排序。 (2)首次查找到最大的记录,第二次循环查找第二大的记录,依次实现对成绩记录的排序。