1、国家二级 C+机试(操作题)模拟试卷 175及答案与解析 一、基本操作题 1 给定程序中,函数 fun的功能是:判断形参 s所指字符串是否是 ”回文 ”(Palindrome),若是,函数返回值为 1;不是,函数返回值为 0。 ”回文 ”是正读和反读都一样的字符串 (不区分大小写字母 )。 例如, LEVEL和 Level是 ”回文 ”,而 LEVLEV不是 ”回文 ”。 请在程序的中括号处填入正确的内容并把中括号删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANKl C中。 不得增行或删行,也 不得更改程序的结构 ! 试题程序: #include #include #includ
2、e int fun(char*s) char*p, *rp; *found* lp=【 1】; rp=s+strlen(s)一 1; while(toupper(*ip)=toupper (* rp)&(iprp) *found* lp+; rp【 2】; *found* if(iprp)【 3】; else return 1; main() char s81; printf(“Enter a string: “); scanf(“ s“, s); if(fun(s) printf(“ n “ s “is a Pal indrome n n“, s); else printf(“ n “ s
3、“isnt a palindrome n n“, s); 二、简单应用题 2 下列给定程序中,函数 fun的功能是:根据整形参 m的值,计算如下公式的值。 例如,若 m中的值为 5,则应输出 0 536389。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件 MODI1 C中,不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序:#includedouble fun(int m)double y=1 0; 2nt i; *found* for(i=2; i 三、综合应用题 3 请编写函数 fun,其功能是:计算并输出下列多项式的值。 例如,当 n=10
4、时,函数值为 0 909091。 注意:部分源程序在文件 PROGl C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序:#include#include#includedouble fun(int n)void main() FILE*wf; system(“CLS“); printf(“ f n“, fun(10); * wf=fopen(“out dat“,“w“); fprintf(wf, “ f“, fun(10); fclose(wf); * 国家二级 C+机试(操作题)模拟试卷 175答案与解析 一、基本操作题 1
5、【正确答案】 (1)s (2)- (3)return 0 【试题解析】 填空 1:根据函数体 fun中,对变量 1p和 rp的使用可知, 1p应指向形参 s的起始地址, rp指向 s的结尾地址,所以应填 s。 填空 2: rp是指向字符串的尾指针,当每做一次循环 rI)向前移动一个位置,所以应填: -。 填空 3:当 lp和 rp相等时,表示字符串是回文并返回 1,否则就返回 0,所以应填 retum 0。 二、简单应用题 2 【正确答案】 (1)for(i=2; i=m; i+) (2)y-=1 0 (i*i); 【试题解析】 (1)使用 for循环计算公式,必须计算到 m,所以应改为 for(i=2;i=m; i+)。 (2)在除法运算中,如果除数和被除数都是整数,那么所除结果也是整数,因此应改为 y-=1 0 (i*i)。 三、综合应用题 3 【正确答案】 double fun(int n) int i; double s=0 0; for(i=1; i=n; i+) s=s+1 0 (i*(i+1); *求级数的和 * return s; 【试题解析】 本题要求级数的和,由多项式的形式可知,应使用循环语句实现,循环的通项为 1 n(n+1)。本程序首先定义了和变量及循环变量,然后运用一个for语句求出级数的和,最后将和变量 s返回。