1、国家二级( C语言)机试模拟试卷 209及答案与解析 一、程序填空题( 30分) 1 给定程序中,函数 fun的功能是:求 ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参 n所指变量中。 ss所指字符串数组中共有 M个字符串,且串长 #include #define M 5 #define N 20 int fun(char (*ss)N, int *n) int i, k=0, len= N; /*found*/ for(i=0; i #include *found* void fun(char s, char t) int i, d; d=strlen
2、(s); for(i=0; i #include void proc(int a, int b, long*c) void main() int a, b; long c; system(“CLS“); printf(“Input a, b; “); seanf(“ d d“, &a, &b); proc(a, b, &c); printf(“The result is: ld n“, c); 国家二级( C语言)机试模拟试卷 209答案与解析 一、程序填空题( 30分) 1 【正确答案】 M k 【试题解析】 第一空:循环的目的是在 M个字符串中寻找长度最短的字符串,因此循环变量 i从 0变
3、化到 M-1,故第一空处应为 “M”。 第二空: *n记录最小字符串的长度,由审题分析可知,字符串 ssi长度比 min小,则交换最小长度值和下标位置,故第二空处应为 “”。 第三空:变量 k记录了最小字符串的下标位置,函数的返回值是最短的字符串所在的行下标,故第三空处应为 “k”。 二、程序修改题( 30分) 2 【正确答案】 (1)void fun(char*s, char*t) (2)t2*d=0; 【试题解析】 (1)fun函数中的 s和 t对应于主函数中数组的名, fun函数中的 s、 t传递的应该是地址,所以第一个错误标识下的 “voidfun(char s, chart)“语句中
4、 s、 t定义的是字符型变量,应改为 “void fun(char*s, char*t)“。 (2)连接之后,新字符串的尾应该添加尾符指示位,原来的串算上尾符长度应该是 d,所以第二个标识下的 “t2*d 1= 0; “应该改为 “t2*d= 0; “。 三、程序设计题( 40分) 3 【正确答案 】 void proc(int a, int b, long * c) *c=(b 10)*1000+(b 10)*100+(a 10)*10+a 10; 【试题解析】 按题目中的要求,要得到整数 c,首先要得到整数 a和 b的个位和十位上的数,可以通过取余和整除来实现。再将其分别乘以 1000, 100, 10, 1就可以得到所要求的整数 c。