1、国家二级 C语言机试(操作题)模拟试卷 18及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:对形参 SS所指字符串数组中的 M个字符串按长度由短到长进行排序。 SS所指字符串数组中共有 M个字符串,且串长 #include #define M 5 #define N 20 void fun(char(*ss)N) int i, j, k, nM; char tN; for(i=0; inj) _2_; if(k!=i) Strcpy(t, s si); strcpy(ssi, ssk); /*found*/ strcpy(ssk, _3_ ); nk=ni; main()
2、char ssMN=“shanghai”, “guangzhou”, “beijing”, “tianjing”, “cchongqing”); int i; printf(“ nThe original strings are : n”); for(i=0; i /*found*/ void fun(long s, long t) long s1=10; s =10; *t=s 10; /*found*/ while(s void fun(int(*s)10, int *b, int *n, int mm, int nn) main() int w1010=33, 33, 33, 33),
3、44, 44, 44, 44), 55, 55, 55, 55, i,j; int a100=0), n=0 ; Void NONO(); printf(“The matrix: n”); for(i=0; inj,则把 j赋给 k,即第二空处应为 “k=j”。 第三空: if(k!=i)说明找到了新的更短的字符串,那么把它和第 i个字符串交换,因此第三空处应为 “t”。 二、程序修改题 2 【正确答案】 (1)void fun(long s, long *t) (2)while(s0) 【试题解析】 函数目的是取出长整型变量 s中偶数位上的数。 (1)第一个标识下的形参 t被定义为一个 lo
4、ng型变量,而对应的主函 数中的实参却是一个地址值。因此, t在函数定义中应该被定义为一个指针变量,即 “void fun(long s, long t)”改为 “void fun(long s,long*t)”。 (2)第二个标识下的 while循环控制表达式 “s0)”。 三、程序设计题 3 【正确答案】 int i, j ; for(i=0; imm; i+) for(j=0; jnn; j+) b*n=*(*(s+i)+j); *n=*n+1: 【试题解析】 该程序功能是将 M行、 N列的二维数组中的数据,按行的顺序依次放到一维数组中。本题中首先要清楚数组元素在通常情况下是按行存放的,而如果要实现按行存放,其对应关系应为: s00, s01, s02, , s0M1, s10, s11, , sN-1M1。