1、C 语言考试题目111。 在考生文件夹下的给定程序 modi53.c 中,函数 fun 的功能是:将从键盘上输入的每个单词的第一个字母写为大写字母,输入时各单词必须用空格隔开,用.结束输入。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!#include int fun(char *c,int status)/*found*/if (c= ) return 1;elseif(status return 0;main()int flag=1;char ch;printf(“请输入一字符串,用点号结束输入!n“);do ch=get
2、char();flag=fun(putchar(ch);while(ch!=.);printf(“n“);第 1 处内容填写有误第1处操作错误题面要求操作:内容为if (*c= ) return 1;实际操作结果:内容为if(c=)return1;第 2 处内容填写有误第2处操作错误题面要求操作:内容为*c+=A-a;实际操作结果:内容为c+=A-a;222。请编写函数 fun,它的功能是:计算并输出 n(包括 n)以内能被 5 或 9 整除的所有自然数的倒数之和。例如,在主函数中从键盘给 n 输入 20 后,输出为:s=0.583333。注意:要求 n 的值不大于 100。部分源程序在考生文
3、件夹下的文件 prog188.c 中。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。include double fun(int n)main() int n; double s;printf(“nInput n: “); scanf(“%d“,s=fun(n);printf(“nns=%fn“,s);NONO();NONO()/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */FILE *rf, *wf ; int n, i ; double s ;rf = fopen(“bc188.in“, “r“)
4、;wf = fopen(“bc188.out“, “w“) ;for(i = 0 ; i double fun(int n)int i; double sum=0.0; /*将 sum 定义为双精度型变量,并给其赋初值为0.0*/if(n0/*found*/else if ( k _3_ 0 )return 1L;main() int k = 10 ;printf(“%d!=%ldn“, k, fun ( k ) ;第 1 处内容填写有误第1处操作错误题面要求操作:内容为if (k 0)实际操作结果:内容为if(k_1_0)第 2 处内容填写有误第2处操作错误题面要求操作:内容为return
5、(k*fun(k-1);实际操作结果:内容为return(k*fun(_2_);第 3 处内容填写有误第3处操作错误题面要求操作:内容为else if ( k=0 )实际操作结果:内容为elseif(k_3_0)444. 请编写函数 fun,其功能是:计算并输出 3 到 n 之间所有素数的平方根之和。例如,在主函数中从键盘给 n 输入 100 后,输出为:sum=148.874270。注意:要求 n 的值大于 2 但不大于 100。部分源程序在考生文件夹下的文件 prog192.c 中。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。#incl
6、ude #include double fun(int n)main() int n; double sum;printf(“nnInput n: “); scanf(“%d“,sum=fun(n);printf(“nnsum=%fnn“,sum);NONO();NONO()/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */FILE *rf, *wf ; int n, i ; double s ;rf = fopen(“bc192.in“, “r“) ;wf = fopen(“bc192.out“, “w“) ;for(i = 0 ; i #include
7、 double fun(int n)int i,j=0; /*定义两个整型变量*/double s=0; /*定义变量 s 为双精度型*/for (i=3;i#define MAXLINE 20fun ( char *pstr6) int i, j ;char *p ;for (i = 0 ; i 0)p = *(pstr + i) ;/*found*/pstri = _2_ ;/*found*/*(pstr + j) = _3_ ;main( ) int i ;char *pstr6, str6MAXLINE ;for(i = 0; i 0)实际操作结果:内容为if(strcmp(*(pst
8、r+i),_1_)0)第 2 处内容填写有误第2处操作错误题面要求操作:内容为pstri = pstrj;实际操作结果:内容为pstri=_2_;第 3 处内容填写有误第3处操作错误题面要求操作:内容为*(pstr + j) = p ;实际操作结果:内容为*(pstr+j)=_3_;666.在考生文件夹下的给定程序 modi31.c 中,函数 fun 的功能是:从 N 个字符串中找出最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。请改正程序中的错误,使它能得出正确结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!#include
9、 #include #define N 5#define M 81/*found*/fun(char (*sq)N)int i; char *sp;sp=sq0;for(i=0;i#include #include #include /*found*/void fun(char s,char t)int i,d;d=strlen(s);for(i=0;idouble fun(int n)main() int n; double s;printf(“Input n: “); scanf(“%d“,s=fun(n);printf(“s=%fn“,s);NONO();NONO()/* 请在此函数内打
10、开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */FILE *rf, *wf ; int n, i ; double s ;rf = fopen(“bc189.in“, “r“) ;wf = fopen(“bc189.out“, “w“) ;for(i = 0 ; i double fun(int n)double m=1.0;int i;double p=1.0;for(i=1;i0f(x) = 0 x=0 或 x=2(x-1)/(x-2) x#include float f( double x)if (x = 0.0 | x = 2.0)/*found*/return _
11、1_;else if (x #include #include #define N 20int fun(int *a,int n) int i,m,t,k;for (i=0;iam) k=m;t=ai;ai=am;am=t;main() int x,bN=11,5,12,0,3,6,9,7,10,8,n=10,i;system(“cls“);for (i=0;iam) m=k;实际操作结果:内容为if(akam)k=m;2222. 给定程序的功能是计算并输出下列级数的前 N 项之和 SN,直到 SN+1 大于 q 为止,q 的值通过形参传入。2 3 4 N+1SN = + + + + 1 2
12、3 N例如,若 q 的值为 50.0,则函数值为 50.416687。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 blank19.c 中。不得增行或删行,也不得更改程序的结构!#include double fun( double q ) int n; double s;n = 2;s = 2.0;/*found*/while (s _1_ q)s=s+(double)(n+1)/n;/*found*/_2_ ;printf(“n=%dn“,n);/*found*/_3_ ;main ( )printf(“%fn“, fun(50);
13、第 1 处内容填写有误第1处操作错误题面要求操作:内容为while (s#include double fun(double x9)main() double s,a9=12.0,34.0,4.0,23.0,34.0,45.0,18.0,3.0,11.0;int i;printf(“nThe original data is :n“);for(i=0;i#include void fun (char *s, char *t, char *u) int i, j, sl, tl, k, ul=0;sl = strlen(s); tl = strlen(t);for (i=0; i=sl) for
14、 (k=0; k=ul)/*found*/uul+ = _2_ ;/*found*/_3_=0;main() char s100, t100, u100;printf(“nPlease enter string s:“); scanf(“%s“, s);printf(“nPlease enter string t:“); scanf(“%s“, t);fun(s, t, u);printf(“The result is: %sn“, u);第 1 处内容填写有误第1处操作错误题面要求操作:内容为if (ti = uk) break;实际操作结果:内容为if(ti=uk)_1_;第 2 处内容填
15、写有误第2处操作错误题面要求操作:内容为uul+ = ti;实际操作结果:内容为uul+=_2_;第 3 处内容填写有误第3处操作错误题面要求操作:内容为uul=0;实际操作结果:内容为_3_=0;本题考核点为字符串的查找,赋值操作。题中第一空填“break;“:break 为跳出循环的语句。“if (ti = uk) break;“当 ti=uk,即 uk中的字符已经在字符指针 t 做指向的字符数组中存在,循环就结束。题中第二空填“ti“:“uul+ = ti;“是将 ti赋给 uul,然后 ul 加 1。题中第三空填“uul“:“uul=0;“,字符串的最后一个字符应该是0的。本评析仅作参
16、考。1. 在考生文件夹下的给定程序 modi56.c 中,函数 fun 的功能是:根据整型形参 m,计算如下公式的值。1 1 1 1y = + + + + 100100 200200 300300 mm例如,若 m=2000,则应输出:0.000160。请改正程序中的错误,使它能得出正确结果。#include #include #include /*found*/fun (int m) double y=0,d;int i;/*found*/for (i=100,i#define N 80int fun(int a, int n)main() int aN=2,2,2,3,4,4,5,6,6,
17、6,6,7,7,8,9,9,10,10,10,10,i,n=20;printf(“The original data :n“);for(i=0; ivoid fun( int m, int k )int aa20, i;for( i = 0; m; i+ ) /*found*/aai = _1_;/*found*/m /= _2_;for( ; i; i- )/*found*/printf( “%d“, _3_ i-1 );main()int b, n;printf( “nPlease enter a number and a base:n“ );scanf( “%d %d“, fun( n,
18、 b );本题的考核点是数制的转换。将十进制正整数转换为 k 进制(2k9)数的方法:将已知的十进制正整数反复除 k,余数为 k-1,相应位为 k-1;余数为 0,相应位为 0。从低位向高位逐次进行,一直到用 k 去除后,商为 0 时为止,最后一次除法所得的余数为 Xn,则 XnXn-1Xn-2X1X0。题中第一个空填“m%k“:此语句是将十进制的整型数据 m 转换为k 进制数据时,将余数保存在数组 aa 中。题中第二个空填“k“:此语句是将十进制的整型数据 m 转换为 k进制数据时,每除一次 k 后,把商重新赋值给正整数 m,以便重复取余。题中第三个空填“aa“:在 for 循环之后,i 即为转换成的 k 进制数的位数,所以根据题意要求,此语句应该是:“printf(“%d“, aai - 1);“。