1、国家二级( C语言)机试模拟试卷 271及答案与解析 一、程序填空题( 30分) 1 二、程序修改题( 30分) 2 给定程序 MODll C中函数 fun的功能是:将 s所指字符串中的字母转换为按字母序列的后续字母 (但 Z转换为 A, z转换为 a),其他字符不变。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! #include #include void fun(char*s) *found* while(*s!=) if(*s=A”保存第 i行元素的最后一个元 素 tiN-1,故第二空应为 “tiN-
2、1”。 第三空:此处是右边被移出矩阵的元素绕回左边,即将 x内保存的元素放在每行的第一位置,故第三空应为 “0”。 二、程序修改题( 30分) 2 【正确答案】 (1)while(*s)或 while(*s!=0)或 while(*s!=0) (2)s+j 【试题解析】 (1)第一个错误标识下的 “while(*s!=)“语句原意是 s不指向字符串尾就进入下面的循环,所以对于指针判断不为尾符的语句应该是 “while(*s)“或者 “while(*s!=0)“或者 “while(*s!=0)“。 (2)第二个标识下 “(*s)+; “是对字符内容加 1,而原题是对字符位置加 1,所以将其改为 “s+; “。 三、程序设计题( 40分) 3 【正确答案】 int i=0; char*p, *q; p=q=a; while(*p) p+; p一一; while(*p=*) p; while(q=p) ai=*q; i+; q+; ai= 0; 【试题解析】 (1)首先,使用一个指针 p指向串尾,然后对指向串尾的指针 p指向的字符进行判断,如果是 “*“,指针 p就跳过,这样来设置一个指针变量 q指向字符串的头位置。 (2)然后,将由字符串起始到最后一个字母之间的字符拷贝到字符串 a。 (3)最后,在新生成的字符串尾加 0。