1、国家二级 C语言机试(操作题)模拟试卷 139及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:把形参 S所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动 (注:字符串的长度大于等于 2)。例如,形参 S所指的字符串为:abedefgh,执行结果为: ahcbedgf。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删 行,也不得更改程序的结构 ! #include void fun(char *s) int i,
2、n, k; char c; n=0, for(i=0, si!= 0; i+) n+; *found* if(n 2=-O)k=n-_1_; else k=n-2; *found* c=_2_; for(i=k-2; i=1; i=i-2)si+2= si; *found* s1=_3_; main() char s80=“abcdefgh“; printf(“ nThe original string is: s n“, s); fun(s); printf(“ nThe result is: s n“, s); 二、程序修改题 2 给定程序 MODI1 C中 fun函数的功能是:求 s=a
3、aaa - -aaa-aua-a(此处 aaaa表示 11个 a, a和 n的值在 1至 9之间 ) 例如 a=3, n=6,则以上表达式为: s=333333-33333-3333-333-33-3 其值是: 296298 a和 n是 fun函数的形参,表达式的值作为函数值传回 main函数。 请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! #include long fun(int a, int n) int j; *found* long s=0, t=1; for(j=0; j #include void fun(c
4、har *tt, int PP) main() char aa1000; int bb26, k ; void NONO(); printf(“ nPlease enter a char string: “); scanf(“ s“, aa); fun(aa, bb); for(k=0; k=a&*p=z)PP*p-a+=1; p+; 【试题解析】 该程序功能是统计字符串中 26个字母各自出现的次数。解题思路,从已给部分源程序的 main主函数开始入手,函数形参指针 tt接受主函数中字符数组 aa的起始地址,形参 pp接受主函数中的 bb数组的起始地址, bb数组的每一个元素都是计数器, bb0中统计字母 “a”的个数, bb1中统计字母 “b”的个数,依此类推, bb25中统计字母 “z”的个数。