【真题1】 下列给定程序中,函数fun()的功能是:删除字符串s 中所有空白字符 (包括Tab 字符、回车符及换行符)。输入字符串时用"#"结束输入。 试题程序: #include < string.h >#include < stdio.h >#include < ctype.h >fun(char *p) { int i, t; char c[80]; for(i=0,t=0;p[i];i++) if(!isspace(*(p+i))) 1___; c[t]='\0'; strcpy(p,c); } main() {char c,s[80]; int i=0; printf("Input a string: "); c=getchar(); while(__2___) { s[i]=c;i++;c=getchar();} ___3___; fun(s); puts(s); } (2011年2月) 解析: 填空1:在这个循环中,要实现的是将空格去掉的功能。所以在判断语 句成立的情况下要对c[t++]赋值,c[t]是结果字符串数组,p[i]是原数组,如 果是空格那么p[i]向右移,c[t]不动。 填空2:根据题意本程序的目的是将字符串中的空格、回车、换行符删掉,在输 入字符串时的结束标志是′#′,注意一定不要写成′#′。 填空3:字符串要以′\0′结束,这是C语言的规定,在上面的循环输入结束后所 有的字符都是作为字符输入的,没有结束符。 答案:【1】c[t++]=p[i] 【2】c!= '#' 【3】s[i]= '\0' 【真题2】 下列给定程序中,函数fun()的功能是:根据整型形参n,计算如下公式 的值。 A1=1,A2=1/(5+A1),A3=1/(5+A2),…,An=1/(5+A(n-1)) 例如,若n=10,则应输出0.192582。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include < conio.h >#include < stdio.h >float fun(int n) { /**********************found***********************/ int A=1; int i; /**********************found***********************/ for(i=1;i< =n;i++) A=1.0/(5+A); return A; } main() { int n; clrscr(); printf("\nPlease enter n: "); scanf("%d",&n); printf("A%d=%lf\n",n,fun(n)); } (2011年2月) 解析: (1)错误:int A=1; 正确:float A=1; (2)错误:for(i=1;i< =n;i++) 正确:for(i=2;i< =n;i++) 错误1:A为实型数,应定义为float类型。 错误2:由题意,A1=1,从A2开始,An=1/(5+A(n-1)),所以循环应从2 开始。 【真题3】 请编写一个函数fun(),它的功能是:求出1 到m(含m)之内能被7 或 11 整除的所有整数放在数组a中,通过n 返回这些数的个数。 例如,若传给m的值为50,则程序输出: 7 11 14 21 22 28 33 35 42 44 49 注意:部分源程序给出如下。 请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入所编 写的若干语句。 试题程序: #include< conio.h >#include< stdio.h >#define M 100 void fun(int m, int *a, int *n) { ……} main() { int aa[M],n,k; clrscr(); fun(50,aa,&n); for(k=0;k< n;k++) if((k+1)%20==0) /*每行输出20 个数*/ {printf("%4d",aa[k]); printf("\n"); } else printf("%4d",aa[k]); printf("\n"); } (2011年2月) 解析: void fun(int m, int *a, int *n) { int i,j=0; for(i=1;i< =m;i++) if(i%7==0||i%11==0) /*求出1到m(含m)之内能被7 或11 整除的所 有整数放在数组a中*/ a[j++]=i; *n=j; /*返回这些数的个数*/ } 本题要找出能被7 或11 整除的所有整数,注意数学中的"或"和C语言中的"或" 的区别,但在此处,if条件语句中用了"||"运算符,若要找能同时被7 和11 整 除的所有整数则在if()中应用"&&"运算符。 |