【真题1】 给定程序的功能是分别统计字符串中大写字母和小写字母的个数。 例如,给字符串ss输入:AaaaBBb123CCccccd, 则输出结果应为:upper = 5,lower = 9 #include < stdio.h >void fun ( char *s, int *a, int *b ) {while ( *s ) { if ( *s >= 'A' && *s < = 'Z' ) /**********found**********/ ___1___ ; if ( *s >= 'a' && *s < = 'z' ) /**********found**********/ ___2___ ; s++; } } main( ) { char s[100]; int upper = 0, lower = 0 ; printf( "\nPlease a string : " ); gets ( s ); fun ( s, & upper, &lower ); /**********found**********/ printf( "\n upper = %d lower = %d\n", ___3___ ); } (2011年2月) 解析: 本题的考核点是C语言中输入输出函数及指针的使用。 题中第一个空填"(*a)++":程序中,a是一个整型指针,要使a指向的数据实 现递增,则要把指针改为实际数据。 同样道理,题中第二个空填" (*b)++ "或相同作用的语句。 题中第三个空填"upper, lower":根据题义要求输出统计的字符串中大写字母 和小写字母的个数。 答案:【1】(*a) ++ 【2】(*b)++ 【3】upper,lower 【真题2】 下列给定程序中,函数fun()的功能是将字符串s 中位于偶数位置的字符 或ASCII码为奇数的字符放入字符串t 中(规定第一个字符放在第0 位中)。 例如:字符串中的数据为ADFESHDI,则输出应当是AFESDI。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include < conio.h >#include < stdio.h >#include < string.h >#define N 80 /**********************found***********************/ void fun(char s, char t[ ]) { int i, j=0; for(i=0; i< strlen(s);i++) /**********************found***********************/ if(i%2=0||s[i]%2!=0) t[j++]=s[i] ; t[j]='\0'; } main() { char s[N], t[N]; clrscr(); printf("\nPlease enter string s :"); gets(s); fun(s,t); printf("\nThe result is :%s\n",t); } (2011年2月) 解析: (1)错误: void fun(char s, char t[ ]) 正确:void fun(char *s, char t[ ]) (2)错误: if(i%2=0||s[i]%2!=0) 正确:if(i%2==0||s[i]%2!=0) 错误1:由于本题中函数的功能是对字符串进行处理,而不是对单个字符进行处 理,因此,函数的参数应为字符串指针。 错误2:if语句中要用关系运算符,而不是赋值运算符。 【真题3】 请编写函数fun(),它的功能是计算下列级数和,和值由函数值返回。 S=1-x+x2/2!-x3/3!+…+(-1*x)n/n! 例如,当n=15,x=0.5时,函数值为0.606531。 注意:部分源程序给出如下。 请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入所编 写的若干语句。 试题程序: #include< conio.h >#include< stdio.h >#include< math.h >double fun(double x, int n) {……} main() { clrscr(); printf("%f ",fun(0.5,15)); } (2011年2月) 解析: double fun(double x, int n) { int i,j=1; double s=1.0,s1=1.0; for(i=1;i< =n;i++) { j=-1*j; s1=s1*i; /*各项中的阶乘*/ s=s+j*pow(x,i)/s1; /*按公式求出*/ } return s; } 本程序中用s1 来表示每项的分母(即各项中的阶乘),要注意本程序中s和 s1 的初值都为1。注意到本题的公式中是加减相间的,这里要学会使用语句j =-1*j来实现。 |