1、国家二级( C语言)机试模拟试卷 293及答案与解析 一、程序填空题( 30分) 1 给定程序中,函数 fun的功能是:在形参 s所指字符串中的每个数字字符之后插入一个 *号。例如,形参 s所指的字符串为: det35adh3kjsdf7。执行结果为: def3*5*adh3*kjsdt7*。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BI ANK1 C中。 不得增行或删行,也不得更改程序的结构 ! #include void fun(char*s) int i, j, n; for(i=0; si!= 0; i+) *found
2、* if(si=0【 1】 sii; j ) *found* sj+1=【 3】; sj+1=*; i=i+1; main() char s80=“ba3a54cd23a“; printf(“ nThe original string is: s n“, s); fun(s); printf(“ nThe result is: s n“, s); 二、程序修改题( 30分) 2 给定程序 MODll C中函数 fun的功能是:从 3个红球, 5个白球, 6个黑球中任意取出 8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。 组合数作为函数值返回。正确的组合数应该是 15。程
3、序中 i的值代表红球数, j的值代表白球数, k的值代表黑球数。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! #include int fun() int i, j, k, sum=0; printf(“ nThe result: n n“); *found* for(i=0; i=0&K #define N 80 int fun(int a, int n) main() int aN=2, 2, 2, 3, 4, 4, 5, 6, 6, 6, 6, 7, 7, 8, 9, 9, 10, 10, 10, 1
4、0), i, n=20; void NONO(); printf(”The original data: n”); for(i=0; i=0【 1】 si=0和 sii; j-)“循环中移动后面的字符了,故while的条件是没有达到字符串结束位, n+,即第二空处应填 “0“或 “ 0“。 第三空: “for(j=i+n+1; ji; j-)“循环是将数字字符后面的字符往后移动一位,从最后一个字符开始往后移动,故 sj+1=sj,即第三空处为 “sj“。 二、程序修改题( 30分) 2 【正确答案】 (1)for(i=1; i=0&k=1&K=0&k=n) aj=t, return j; 【试题解析】 (1)首先,设置一个临时变量,初值设置为一维数组的第一个元素。 (2)然后,依次将数组的元素与临时变量比较,如果相同,则继续取数组下一个元素与临时变量比较:如果不同。则将临时变量的值赋值到数组的第一个元素,同时将此与临时变量不同的数组元素赋值给临时变量。 (3)循环执行,直到所有的数据处理完毕。