1、国家二级 C语言机试(操作题)模拟试卷 197及答案与解析 一、程序填空题 1 函数 fun的功能是:将形参 a所指数组中的前半部分元素中的值和后半部分元素中的值对换。形参 n中存放数组中数据的个数,若 n为奇数,则中间的元素不动。 例如:若 a所指数组中的数据依次为: 1、 2、 3、 4、 5、 6、 7、 8、 9,则调换后为: 6、 7、 8、 9、 5、 1、 2、 3、 4。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行 ,也不得更改程序的结构 ! #include #define N
2、 9 void fun(int a, int n) int i, t, P; *found* p=(n 2=0)?n 2: n 2+_1_; for (i=0; i #inolude void fun(char s, int n) char a80, *p; int i; *found* s=p; for(i=0; i void fun(char*a) main() char s81; void NONO(); printf(“Enter a string: n“); gets(s); fun(s); printf(“The string after deleted: n“); puts(s)
3、; NONO(); void NONO() *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FILE*in, *out; int i; char s81; in=fopen(“in daL“, “r“); out: fopen(“out dat“, “w“); for(i=0; i10; i+) fscanf(in, “ s“, s); fun(s); fprintf(out, “ s n“, s); fclose(in); fclose(out); 国家二级 C语言机试(操作题)模拟试卷 197答案与解析 一、程序填空题 1 【正确答案】 (1)1 (2)i (3)ap+
4、i 【试题解析】 第一空: “p=(n 2=0)?n 2: n 2+_1_; ”和“ai=ap+_2_; ”“n 2=0”判断是否是偶数, ai和 ap+_2_交换,如果 n是偶数, a0和 an 2交换,如果 n是奇数,那么 a0和 an 2+1交换,依此类推,故 n为偶数时 ai和 ai+n 2交换, n为奇数时 ai和 ai+n 2+1交换。因此如果 n是奇数的话, p应该等于 n 2+1,故第一空处应为 “1”。 第二空:由上分析可知, ai和 ai+p交换,故第二空应为 “i”。 第三空: “t=ai; ai=ap+i; ”,故第三处应该是把 ai赋值给 ap+i, ai保存在 t中
5、,故第三空应为 “ap+i”。 二、程序修改题 2 【正确答案】 (1)p=s; (2)while(*p+); 【试题解析】 (1)变量初始化应是将形参数组地址 s传给工作指针 p。因此,应将“s=p; ”改为 “p=s; ”。 (2)do while循环的目的是把 p指向的字符串内容拷贝到 a字符串的后面,但第二标识下 while语句没有使用分号技术,故第二标识下应改成 “while(*p+); ”。 三、程序设 计题 3 【正确答案】 int j=0 ; char*p=a; while(*p) if(*p !=*)aj+=*p ; p+; aj= 0; 【试题解析】 (1)首先利用工作指针指向字符串,当指针不指向串尾时,就对字符串进行循环判断。 (2)在循环中利用 if判断表达式,判断是字符是否为 “*”,如果不是 “*”将其拷贝到字符串,否则跳过 “*”字符。 (3)所有字符处理完后,记得在新串 s的末尾加上结束符 “ 0”。