1、第五章单选有以下程序,程序运行后的输出结果是( )#include #include int main()char a20=”ABCD0EFG0”,b=”IJK”;strcat(a,b); printf(“%sn”,a);return 0;A.ABCDE0FG0IJKB.ABCDIJKC.EFGIJKD.IJK有以下程序,程序运行后的输出结果是 ( )#includeint main()char s=012xy08s34f4w2;int i, n=0;for(i=0;si!=0;i+)if(si=0&si=9) n+;printf(%dn,n); return 0;A.7B.0C.8D.3下列
2、选项中,能够满足若字符串s1等于字符串s2,则执行ST要求的是 ( )A.if(strcmp(s2,s1)=0)ST;B.if(s1-s2=0)ST;C.if(strcpy(s1,s2)=1)ST;D.if(s1=s2)ST;以下选项中正确的语句组是( )A.char s;s=BOOK!;B.char s;s=BOOK!;C.char s10;s=BOOK!;D.char s=BOOK!;以下数组定义中错误的是( )A.int x23=1,2,3,4,5,6;B.int x23=1,2,3,4,5,6;C.int x3=0;D.int x3=1,2,3,4,5,6;若有定义语句:int m=5
3、,4,3,2,1,i=4;则下面对m数组元素的引用中错误的是 ()A.mm0B.m2*2C.m-iD.mmi下列选项中,能正确定义数组的语句是( )A.int num;B.int N=2008;int numN;C.int num02008;D.#define N 2008int numN;有以下程序,程序运行时若输入:how are you? I am fine则输出结果是( )#includeint main()char a30,b30;scanf(%s,a);gets(b);printf(%sn %sn,a,b);return 0; A.how are you? I am fine B.
4、how are you? I am fineC.howare you?I am fineD.how are you?下面是有关C语言字符数组的描述,其中错误的是( )A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数组C.字符数组中的内容不一定是字符串D.字符数组只能存放字符串有以下程序,程序运行后的输出结果是( )#include #include int main()char x=”STRING”;x0=0;x1=0;x2=0;printf(“%d %dn”,sizeof(x),strlen(x);return 0;A.7 0B.6 1C.7 1D.6 3若
5、要定义一个具有5个元素的整型数组,以下错误的定义语句是( )A.int a5=0;B.int b=0,0,0,0,0;C.int i=5,di;D.int c2+3;有以下程序,程序运行后的输出结果是 ( )#include#includeint main() char a510=“china”,”beijing”,”you”,”tiananmen”,”welcome”;int i,j; char t10;for(i=0;i4;i+) for(j=i+1;j0) strcpy(t,ai); strcpy(ai,aj); strcpy(ai,t); puts(a3);return 0;A.chi
6、naB.beijingC.welcomeD.tiananmen程序设计/*编写函数int fun(int lim, int aaMAX),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求出的素数的个数。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */#include#include#define MAX 100int fun(int lim, int aaMAX)/*Begin*/*End*/ int main() FILE *wf; int limit,i,sum; int
7、aaMAX; printf(输入一个整数); scanf(%d,&limit); sum=fun(limit,aa); for(i=0;isum;i+) if(i%10=0&i!=0) /*每行输出10个数*/ printf(n ); printf(%5d ,aai); /*/ wf=fopen(debug2.out,w); sum=fun(15,aa); for(i=0;isum;i+) fprintf(wf,%dn,aai); fclose(wf);/*/return 0;【参考代码】 int i,j,k=0; for(i=2;i=lim;i+) for(j=2;j=i) aak+=i;
8、return k; /*请编写函数fun,函数的功能是:求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。 例如,若二维数组中的值为 1 3 5 7 9 2 9 9 9 4 6 9 9 9 8 1 3 5 7 0 则函数值为61。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:*/#include#include#define M 4#define N 5int fun( int a MN) /*Begin*/ /* End */void main() FILE *wf; int aaMN
9、=1,3,5,7,9,2,9,9,9,4,6,9,9,9,8,1,3,5,7,10; int i, j, y; printf (The original data is :n ); for(i=0; iM;i+) for (j=0; jN;j+) printf(%6d ,aaij); printf(n ); y=fun(aa); printf(nThe sun: %dn ,y); printf(n );/*/ wf=fopen(debugout10.dat,w); fprintf (wf,%d,y); fclose(wf);/*/ 【参考代码】 int i,j,sum=0; for(i=0;i
10、M;i+) for(j=0;jN;j+) if(i=0|i=M-1|j=0|j=N-1) sum=sum+aij; return sum; /*编写一个函数,从传入的num个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用*作为结束输入的标志)。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:*/#include#include#includevoid fun(char a81, int num, char max)/*Begin*/* End */void main() FILE *wf; char
11、 ss1081,ps81; char s381=abcd,deg,diegns,p81; int i=0,n; printf(输入若干个字符串:); gets(ssi); puts(ssi); while(!strcmp(ssi, *)=0) /*用4个星号作为结束输入的标志*/ i+; gets(ssi); puts(ssi); n=i; fun(ss,n,ps); printf(nmax=%sn,ps);/*/ wf=fopen(debugout15.dat,w); fun(s,3,p); fprintf(wf,%s,p); fclose(wf);/*/【参考代码】int i=0; str
12、cpy(max,a0); /*找出最长的一个字符串*/ for(i=0;inum;i+) if(strlen(max)strlen(ai) strcpy(max,ai); /*请编写一个函数fun,它的功能是:求出1到m(含m)之内能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。 例如,若传给m的值为50,则程序输出: 7 11 14 21 22 28 33 35 42 44 49 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */#include#include#define M 100in
13、t fun(int m, int a) /*Begin*/ /* End */void main() FILE *wf; int aaM,n,k; n=fun(50,aa); for(k=0;kn;k+) if(k+1)%20=0) /*每行输出20个数*/ printf(%4d,aak); printf(n); else printf(%4d,aak); printf(n);/*/ wf=fopen(debugout4.dat,w); for(k=0;kn;k+) fprintf(wf,%dn,aak); fclose(wf);/*/【参考代码】 int i,j=0; for(i=1;i=m
14、;i+) if(i%7=0|i%11=0) aj+=i; return j; /*返回这些数的个数*/ /*请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转为整数的函数)。例如,若输入字符串-1234,则函数把它转换为整数值-1234。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:*/#include #include long fun(char p) /*Begin*/ /* End */void main() FILE *wf; char s6; long n;
15、printf(Enter a string:n); gets(s); n=fun(s); printf(%ldn,n);/*/ wf=fopen(debugout13.dat,w); fprintf (wf,%ld,fun(-1234); fclose(wf);/*/【参考代码】long n=0,i=0; int flag=1; if(pi=-) /*负数时置flag为-1*/ i+;flag= -1; else if(pi=+) /*正数时置flag为1*/ i+; while(pi!=0) n=n*10+pi-0;/*将字符串转成相应的整数*/ i+; return n*flag; /*请
16、编写一个函数void fun(char ss),其功能是:将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入abc4EFg,则应输出aBc4EFg。 注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:*/#include #include void fun ( char ss) /*Begin*/ /* End */void main()char tt100;FILE *out,*in;printf(Please enter an character string with
17、in 50 characters:n);gets(tt);printf(nnAfter changing,the stringn%s,tt);fun(tt);printf(nbecomesn %s,tt);/*/in=fopen(in.dat,r);out=fopen(debugout14.dat,w);fgets(tt,16,in);strcat(tt,After changing the string);fun(tt);fprintf(out,%s,tt);fclose(in);fclose(out);/*/【参考代码】 int i,n=0; while(ssi) n+; i+; for(
18、i=0;i=a&ssi=z)&i%2!=0) /*将下标为奇数位置的字母转换成大写*/ ssi=ssi-32; ssi=0;/*编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。例如,分别输入下面两个字符串: FirstString SecondString 则程序输出:FirstStringSecondString注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:*/#include#includevoid fun(char p1,cha
19、r p2) /*Begin*/ /* End */void main() FILE *wf,*in; char s180,s240; char p180=FirstString,p240=SecondString; printf(Enter s1 and s2:n) ; scanf(%s%s,s1,s2); printf(s1=%sn,s1); printf(s2=%sn,s2); printf(Invoke fun(s1,s2):n); fun(s1,s2); printf(After invoking:n); printf(%sn,s1);/*/ in=fopen(in.dat,r); w
20、f=fopen(debugout16.dat,w); fscanf(in,%s %s,p1,p2); fun(p1,p2); fprintf(wf,%s,p1); fclose(in); fclose(wf);/*/【参考代码】 int i,j; for(i=0;p1i!=0;i+); for(j=0;p2j!= 0;j+) p1i+=p2j; p1i= 0;/*请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。 例如,输入17,则应输出4 6 8 9 10 12 14 15 16。注意:部分源程序给出如下。请勿改动main函数和其他函数中的
21、任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序: */#include#includeint fun(int m, int xx) /*Begin*/ /* End */void main() FILE *wf; int m, n, zz100; printf(nPlease enter an integer number between 10 and 100: ); scanf(%d,&n); m=fun(n,zz); printf(nnThere are %d non-prime numbers less than %d: ,m,n); for(n=0;nm;n+) pr
22、intf(n %4d,zzn);/*/ wf=fopen(debugout7.dat,w); m=fun(30,zz); for(n=0;nm;n+) fprintf(wf,%dn,zzn); fclose(wf);/*/【参考代码】int i,j,n=0; for(i=4;im;i+) /*找出大于1小于整数m的非素数*/ for(j=2;ji;j+) if(i%j=0) break; if(ji)xxn+=i; return n; /*返回非素数的个数*/ /*请编写一个函数 void fun(char tt,int pp),统计在tt字符串中a到z26个字母各自出现的次数,并依次放在pp
23、所指数组中。例如,当输入字符串abcdefghabcdeabc后,程序的输出结果应该是:3 3 3 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:*/#include #include void fun(char tt,int pp ) /*Begin*/ /* End */void main( ) FILE *wf; char aa1000; int bb26, k; system(CLS); printf(nPle
24、ase enter a char string : ) ; scanf(%s,aa); fun(aa,bb); for (k=0 ;k26 ; k+) printf(%dn,bbk) ;/*/ wf=fopen(debugout2.dat,w); fun (abcdefgabcdeabc,bb) ; for (k=0 ;k26 ; k+) fprintf(wf,%dn,bbk) ; fclose(wf);/*/【参考代码】 int i; for(i=0;i=a&tti=z) pptti-a+; 程序改错/*下列给定程序中,函数fun的功能是:删除字符串s中所有空白字符(包括Tab符、回车符及换
25、行符)。输入字符串时用#结束输入。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:*/#include #include #include fun(char *p) int i, t; char c80; for(i=0,t=0;pi;i+) if(!isspace(*(p+i) ct+=pi;/*ERROR*/ ct=0; strcpy(p,c);void main()char c,s80; int i=0; printf(Input a string: ); c=getchar(); while(c!=#) si=
26、c;i+;c=getchar(); si=0; fun(s); puts(s);【参考答案】ct=0;ct=0;/*下列给定程序中,函数fun的功能是:求出数组中最大数和次最大数,并把最大数和a0中的数对调、次最大数和 a1 中的数对调。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:*/#include#define N 20/*ERROR*/void fun(int a,int n); int i, m, t, k; for(i=0; in;i+) /*ERROR*/ m=0; for(k=i+1; kam) m=
27、k; t=ai; ai=am; am=t; void main() int bN=11,5,12,0,3,6,9,7,10,8,n=10,i; for(i=0; in; i+) printf(%d ,bi); printf(n); fun(b,n); for(i=0; in; i+) printf(%d , bi); printf(n);【参考答案】void fun(int a,int n)【参考答案】m=i;/*下列给定程序中,函数fun的功能是:先从键盘上输入一个3行、3列的矩阵的各个元素的值,然后输出主对角线元素之和。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main
28、函数,不得增行或删行,也不得更改程序的结构。试题程序:*/#include void fun() int a33,sum; int i,j;/*ERROR*/ sum=1; for (i=0;i3;i+) for (j=0;j3;j+)/*ERROR*/ scanf(%d,aij); for(i=0;i3;i+) sum=sum+aii; printf(Sum=%dn,sum);void main()fun();【参考答案】sum=0;【参考答案】scanf(%d,&aij);请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:
29、 */#include double fun(int x)/*ERROR*/ int sum=0.0; int c=0, I=0; while(xI!=0) if(xI0) sum+=xI; c+; I+; /*ERROR*/ sum=sumc; return sum;void main() int x1000; int i=0; printf(nPlease enter some data(end with 0) :); do scanf(%d,&xi); while(xi+!=0); printf(%fn,fun(x);【参考答案】double sum=0;double sum=0.0;f
30、loat sum=0;float sum=0.0;【参考答案】sum=sum/c;sum/=c;程序填空/*请补充函数fun,该函数的功能是:求一维数组xN的平均值,并对所得结果进行四舍五入(保留两位小数)。例如,当x10=15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0,结果为:avg=15.030000。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序: */#include #include double fun(double x10) int i; lon
31、g t; double avg=0.0; double sum=0.0; for(i=0;i10;i+)/*FILL*/ 1 ; avg=sum/10;/*FILL*/ avg= 2 ;/*FILL*/ t= 3 ; avg=(double)t/100; return avg;void main() double avg,x10=15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0; int i; printf(nThe original data is :n); for(i=0;i10;i+)printf(%6.1f,xi); printf(nn
32、); avg=fun(x); printf(average=%fnn,avg);【参考答案】sum+=xi;sum=sum+xi;【参考答案】avg*1000;1000*avg;【参考答案】(avg+5)/10 ;(5+avg)/10;/*请补充函数fun,该函数的功能是:整除x且是偶数的数,把这些数保存在数组bb中,并按从大到小的顺序输出。例如当x=20时,依次输出:20 10 4 2。注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序:*/#include void fun(int k,int bb) int i; int j=0;/*FILL*/ for( 1 ;i=0;i-)printf(%d ,bbi);int main() int k=1; int bb100; printf(nPlease input X=); scanf(%d,&k); fun(k,bb); return 0;【参考答案】k%i=0&i%2=0i%2=0&k%i=0(k%i