1、国家二级( C语言)机试模拟试卷 324及答案与解析 一、程序填空题( 30分) 1 二、程序修改题( 30分) 1 给定程序 MODll C中 fun函数的功能是:求 S=aaaa - -aaa-aa-a (此处 aaaa 表示 n个 a, a和 n的值在 1至 9之间 ) 例如 a: 3, n=6,则以上表达式为: s=333333-33333-3333-333-33-3 其值是: 296298 a和 n是 fun函数的形参,表达式的值作为函数值传回 main函数。 请改正程序中的错误,使 它能计算出正确的结果。 注意;不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! #i
2、nclude long fun (int a, int n) int j ; /*found*/ long s=0, t=0; for (j = 0 ; j 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() *本函数用于打开文件,输入数据,调用函 数,输出数据,关闭文件。 * FILE*in, *out ; int i; ch
3、ar s81; in=fopen(”in dat”, ”r”); out=fopen(”out dat”, ”w”); for(i=0; i10; i+) fscanf(in, ” s”, s); fun(s); fprintf(out, ” s n”, s); fclose(in); fcloSe(out); 国家二级( C语言)机试模拟试卷 324答案与解析 一、程序填空题( 30分) 1 【正确答案】 N tij tji 【试题解析】 第一空:在主函数 中 fun函数的调用形式是 “fun(t);”, t是数组名,故 fun函数的参数是指针,因此第一空处应为 “N”。 第二空: “_2_
4、=tij+tji;”是将对称元素相加存放在左下三角元素中,左下三角元素可表示为 tij,故第二空处应为 “tij”。 第三空: “_3_=0;”是将右上三角元素置 0,右上三角元素可表示为 tji,故第三空为 “tji”。 二、程序修改题( 30分) 1 【试题解析】 ( 1)当进入第一循环, “t=t*10+a;”语句,如果输 入的 a是 3,并且利用题目中给出的初始化值 1,计算得出 t的值为 13,而实际应该是 1,由此可知 t的初值设置不正确,不应该是 1。所以将 “long s=0,t=1;”改为 “long s=0,t=0;”。 ( 2)循环中通过语句 “t=t%10;”来获得每一
5、项,每循环一次, t的值应缩小 10倍,这里应该用除以 10来实现,而不能用 “%”求余数。所以将 “t=t%10;”改为 “t=t/10;”。 三、程序设计题( 40分) 2 【正确答案】 int i=0; char *p=a; while(*p i+; p+; while(*p) if(*p!=*) ai=*p; i+; p+; ai=0; 【试题解析】 ( 1)首先,使用一个指针 p指向串的起始位置,然后对指针 p指向的字符进行判断,并且如果是 “*”,将其拷贝到字符串,这样确定了由头开始的第一个非 “*”的位置。 ( 2)然后,在循环过程中对由第一个非 “*”字符起始到串尾的字符进行判断,如果不是 “*”就将其拷贝到字 符串 a,否则跳过。 ( 3)最后,在新生成的字符串尾加 0。