【真题1】 函数fun 的功能是:将字符串tt 中的小写字母改为对应的大写字母,其 它字符不变。例如,若输入"Ab,cD",则输出"AB,CD"。 #include < conio.h >#include < stdio.h >#include < string.h >char *fun(char tt[]) { int i; for(i=0;tt[i];i++) /************found************/ if(('a'< =tt[i])&&(tt[i]< =__1___)) /************found************/ tt[i]-=__2____; return(tt); } main() { char tt[81]; printf("\nPlease enter a string:"); gets(tt); printf("\nThe result string is:\n%s",fun(tt)); } (2011年2月) 解析: 本题着重考察考生对C 语言中一些简单算法的掌握情况。 答案:【1】'z' 【2】32 【真题2】 下列给定程序中,函数fun()的功能是根据整型形参m,计算如下公式 的值。 y=1-1/(2×2)+1/(3×3)-1/(4×4)+…+(-1)(m+1)/(m×m) 例如:m 中的值为5,则应输出0.838611。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include < conio.h >#include < stdio.h >double fun(int m) { double y=1.0; /**********************found***********************/ int j=1; int i; for(i=2; i< =m; i++) { j=-1*j; /**********************found***********************/ y+=1/(i * i); } return(y); } main() { int n=5; clrscr(); printf("\nThe result is %lf\n" ,fun(n)); } (2011年2月) 解析: (1)错误:int j=1; 正确:double j=1.0; (2)错误:y+=1/(i * i); 正确:y+=j/(i * i); 错误1:为了做后面的除法运算,j要定义为实型数,否则除得的结果将为整 数。 错误2:题中公式是加减相间的运算,通过j来实现。 【真题3】 请编写函数fun,其功能是:计算并输出给定10 个数的方差: ┌ 1 10 ┐0.5 S=│ ─ Σ (Xk-X')^2│ └ 10 k=1 ┘ 1 10 其中X'=─ Σ Xk 10 k=1 例如,给定的10 个数为95.0、89.0、76.0、65.0、88.0、72.0、85.0、81.0、 90.0、56.0,输出为s=11.730729。 注意:部分源程序在文件prog.c 中。 请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入你编 写的若干语句。 #include < stdio.h >#include < math.h >double fun(double x[10]) {……} main() { double s, x[10]={95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0}; int i; printf("\nThe original data is :\n"); for(i=0;i< 10;i++)printf("%6.1f",x[i]); printf("\n\n"); s=fun(x); printf("s=%f\n\n",s); } (2011年2月) 解析: 本题的考核点是c 语言中for 循环语句的使用。 提示思路:本题要求计算给定数的方差,方差是指总体各单位的标志值与其算 术平均数离差的平方之和,除以单位数后的平方根。根据所给公式,第一个公 式中用到X'的值,所以先运算出X'的值,X'是一个求和运算,可通过一个循环 累加实现,求s 值也是一个累加的过程,然后对此和开根,开根运算可通过函 数sqrt()实现。 #include < stdio.h > #include < math.h > double fun(double x[10]) { int i; /*定义变量*/ double avg=0.0; double sum=0.0; double abs=0.0; double fc; for (i=0;i< 10;i++) /*循环开始*/ sum+=x[i]; /*计算已结定的10 个数之和,并将其值赋给变量sum 中*/ avg=sum/10; /*计算已结定的10 个数的平均值,并将其值赋给变量avg*/ for (i=0;i< 10;i++) /*循环开始*/ abs+=(x[i]-avg)*(x[i]-avg); /*计算(Xk-X')的平方和,并将其值赋给变量 abc*/ fc=sqrt(abs/10) ; /*sqrt(abs/10)函数是计算abs/10 的平方根*/ return fc; /*返回结果*/ } |