1、国家二级 C语言机试(操作题)模拟试卷 128及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:找出 100 999之间 (含 100和 999)所有整数中各位上数字之和为 x(x为一正整数 )的整数,然后输出;符合条件的整数个数作为函数值返回。 例如,当 x值为 5时, 100 999之间各位上数字之和为 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“, x); print: f(“ nThe result is: d n“, fun(x); 二、程序修改题 2 给定程序 MODI1 C中函数 fun的功能是:从低位开始取出长整型变量 s中偶数位上的数,依次构成一个新数放在 t中。高位仍在高位,低位仍在低位。 例如,
3、当 s中的数为: 7654321时, t中的数为: 642。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! #include *found* void fun(long s, long t) long s1=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, “GA002“, 69
4、, “GA004“, 85, “GA001“, 91, “GA007“, 72, “A008“, 64), “GA006“, 87, “GA015“, 85, “GA013“, 91, “GA012“, 64, “GA014“, 91, “GA011“, 66, “GA017“, 64, “GA018“, 64, “GA016“, 72; int i; FTLE *out; fun(s); printf(“The data after sorted: n“); for(i=0, i0) 【试题解析】 函数目的是取出长整型变量 s中偶数位上的数。 (1)第一个标识下的形参 t被定义为一个 lon
5、g型变量,而对应的主函数中的实参却是一个地址值。因此, t在函数定义中应该被定义为一个指针 变量,即 “void fun(long s, long t)”改为 “void fun(long s, 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)首次查找到最大的记录,第二次循环查找第二大的记录,依次实现对成绩记录的排序。