1、国家二级 C语言机试(操作题)模拟试卷 185及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:有 NxN矩阵,根据给定的 m(m #define N 4 void fun(int (*t)N, int m) int i, j; *found* for(i=0; i=0 ; j-) *found* tij+_2_=tij; *found* for(j=0; j *found* void fun(long s, long t) long s1=10; *t=s 10; while(s0) s=s 100; *t=s 10 * s1+*t; *found* s1=s1*100;
2、main() long s, t ; printf(“ nPlease enter s: “); scanf(“ ld“, s), fun(s, t); printf(“The result is: ld n“, t); 三、程序设计题 3 请编写函数 fun,它的功能是:求出 ss所指字符串中指定字符的个数,并返回此值。 例如,若输入字符串: 123412132,输入字符为: 1,则输出: 3。 注意:部分源程序在文件 PROGl C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include #include #define M
3、81 int fun(char*ss, char c) main() char aM, ch; void NONO(); printf(“ nPlease enter a string: “); gets(a); printf(“ nPlease enter a char: “); ch=getchar(); printf(“ nThe number of the char is: d n“, fun(a, ch); NONO(); void NONO() *本函数用于打开文件 ,输入测试数据,调用 fun函数,输出数据,关闭文件。* int i; FILE*rf, *wf; char aM,
4、 bM, ch; rf=fopen(“in dat“, “r“); wf=fopen(“out dat“, “w“); for(i=0 ; i=0; i一 )”是进行行元素中的值右移 m个位置,即把 tij元素放置在 tij+m上,因此第 二空应为 “m”。 第三空:循环 “for(j=0; j_3_; j+)”是对空出来的位置补 0,每行元素的前m位数据已经移动到后面,每行空处 m个元素,因此第三空为 “m”。 二、程序修改题 2 【正确答案】 (1)void fun (long s, long *t) (2)sl=sl*10; 【试题解析】 (1)根据 “*t=s 10”判断, t应该是个
5、指针变量,所以 “void fun(long s, long t)”语句中的 t只需改为 “voidfun(long s, long*t)”。 (2)分析函数内的循环过程可知 s1的用途是每次将 *t扩大,记录每次得到的奇数位的数字的权值, sl的权值每次增加 1位,因此第二个标识下应该是“sl=sl*10; ”。 三、程序设计题 3 【正确答案】 int cnt=0; char*p=ss; while(*p) if(*p=c)cnt+; p+; return cnt; 【试题解析】 如果不是串尾就进入 while循环,在循环过程中利用 if条件表达式判断当前字符是否为指定的字符,如果符合条件,那么对统计计数变量进行加 1操 作。