1、国家二级 C语言机试(操作题)模拟试卷 41及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:统计形参 S所指字符串中数字字符出现的次数,并存放在形参 t所指的变量中,最后在主函数中输出。例如,形参 S所指的字符串为: abcdef35adgh3ksdf7。输出结果为: 4。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 ! #include VOid fun(char *s, int *t) int i, n; n=0; /*found*/ for(i=0
2、; _1_ !=0; i+) /*found*/ if(Si=0 Si #include void fun (char str10, int m, char *pt) /*found*/ Int k, q, i ; for (k=0; k 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); NONO(); ) void NONO() *本函数 用于打开文件,输入数据
3、,调用函数,输出数据,关闭文件。 * FILE * in, *out; int i; char s81; in=fopen(“in dat”, “r”); out=fopen(“out dat”, “w”); for(i=0; i=0且 si=0且 si=9,故第二空处应为 “9”。 第三空:这里是将数字字符出现的次数存放 在形参 t里, n记录了数字字符的个数,而形参 t是指针变量,故第三处应为 “*t=n”。 二、程序修改题 2 【正确答案】 (1)int k, q, i; (2)pti=strk1ij 【试题解析】 函数的功能是将 m(1m10)个字符串连接起来。 (1)第一标识下是整型
4、变量 k、 q和 i的定义,根据 C语言中整型变量的定义方式,第一标识下应为 “int k, q, i; ”。 (2)第二个标识下的 “pti=strk, i; ”语句应该将 str中的字符依次拷贝到 pt中 ,根据 C语言中对二维数组每一位的取值,应该是 strki,所以 “pti=strk,i; ”改为 “pti=strki; 三、程序设计题 3 【正确答案】 int j=0; char *p=a; while(*p=*)p+; while(*p) aj+=*p; p+; aj= 0; 【试题解析】 该程序功能是将字符串中的前导 “*”号全部删除,中间和尾部的 “*”号不删除。本题的解题过程首先确定由串起始位置开始的第一个非 “*”进行判断,将 不是 “*”的字符拷贝到字符串。 解题思路 (1)首先,使用一个指针 p指向串的起始位置,然后对指针 p指向的字符进行判断,并且如果是 “*”,那么跳过该字符,这样确定了由头开始的第一个非 “*”的位置。 (2)然后,在循环过程中将第一个非 “*”字符起始到串尾的字符拷贝到字符串 a。 (3)最后,在新生成的字符串尾加 0。