《C语言试题总结.doc》由会员分享,可在线阅读,更多相关《C语言试题总结.doc(476页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第一套下列正确的标识符是(C ).A、a+bB、6aC、_doD、%y执行以下程序段后,输出结果和a的值是(B)。 int a=10; printf(%d,a+);A、11 和 10B、10 和 11C、11 和 11D、10 和 10以下不正确的if语句形式是(B)。A、if(xy&x!=y);D、if(x=y) x+=y;int a=3,b=2,c=1; if(ab & bc)a=b; else a=c;则a的值为(C)。A、1B、0C、2D、3对for(表达式1; ;表达式3)可以理解为( C).A、for(表达式1;表达式3;表达式3)B、for(表达式1;表达式1;表达式3)C、fo
2、r(表达式1;1;表达式3)D、for(表达式1;0;表达式3)运行结果是 11 12的程序段是:请在A处填写正确内容(B )。for(i=1;i=2;i+) _A_A、for(j=1;j=2;j+)printf(%3d,10*i+j);break;B、for(j=1;j=2;j+)printf(%3d,10*i+j);break;C、for(j=1;j=2;j+)printf(%3d,10*i+j);continue;D、for(j=1;jb) a=b; if(bc) b=c; else c=b; c=a;设i,j,k均为int型变量,则执行完下面的for循环后,k的值为_. for(i=0
3、,j=10;i=j;i+,j-) k=i+j;【空 1】【参考答案】10static int a33=1,2,3,4,5,6,7,8,9;其中a12的值为_.【空 1】【参考答案】6结构体是不同数据类型的数据集合,作为数据类型, 必须先说明结构体_,再说明结构体变量.【空 1】【参考答案】-【程序设计】功能:将主函数中输入的字符串反序存放。例如:输入字符串abcdefg,则应输出gfedcba。注意: 请在Begin 和 End 注释行之间填写代码, 所有注释语句都不能删除。-*/#include stdio.h#include string.h#include conio.h#define
4、N 81void fun(char str,int n) /*Begin*/ /* End */ void main() void TestFunc(); char s N; int l; printf(input a string:);gets(s); l=strlen(s); fun(s,l); printf(The new string is :);puts(s); TestFunc();void TestFunc() FILE *IN,*OUT; char sIN20,*sOUT; int iLENGTH; IN=fopen(in.dat,r); if(IN=NULL) printf(
5、Please Verify The Currernt Dir.It May Be Changed); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Please Verify The Current Dir. It May Be Changed); fscanf(IN,%s,sIN); iLENGTH=strlen(sIN); sOUT=sIN; fun(sIN,iLENGTH); fprintf(OUT,%sn,sOUT); fclose(IN); fclose(OUT);【参考代码】 int i,j; char c;for(i=0,j=n-1;ij;i
6、+,j-) /*或者for(i=0,j=n-1;in/2;i+,j-)*/ c=stri;stri=strj;strj=c;【程序改错】功能:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输 出主对角线上的元素之和sum。-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include stdio.hint fun() int a33,sum; int i,j; /*ERROR*/ a=0; for(i=0;i3;i+) for(j=0;j3;j+) /*ERROR*/ scanf(%d,aij); for(i=0;i3;i+) /*ERROR*/ sum=sum+aij;
7、/*ERROR*/ printf(sum=%fn,sum);void main() fun();【改错1】【参考答案】sum=0;【改错2】【参考答案】scanf(%d,&aij);=【改错3】【参考答案】sum=sum+aii;sum+=aii;sum=aii+sum;sum+=aij=i;sum=sum+aij=i; sum=aij=i+sum;【参考答案】printf(sum=%dn,sum);【程序填空】-功能:先将在字符串s中的字符按正序存放到t串中,然后把s中的 字符按逆序连接到t串的后面。-请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:不得增行或删
8、行,也不得更改程序的结构!-*/#include stdio.h#include string.hvoid fun (char s, char t) int i, sl; /*FILL*/ sl = _; for(i=0; isl; i+) ti = si; for (i=0; ic)b=a;a=c;c=b;则c的值为(C)。A、1B、3C、2D、不一定为了避免在嵌套的条件语句 if-else 中产生二义性,C语言规定:else子句总是与(A)配对。A、其之前最近的未配对的ifB、其之后最近的ifC、同一行上的ifD、缩排位置相同的if存在多层嵌套循环时,下列说法正确的是(D ).A、cont
9、inue语句可以中止所有循环B、break语句可以中止所有循环C、continue语句能够中止包含该语句的最内层循环D、break语句能够中止包含该语句的最内层循环下面程序正确的运行结果是(B ).(答案中用大写字母U代表空格)main() int num=0; while(num(y)?(x):(y),则F=4*MAX(2,3)的值为( B).A、3B、2C、12D、8设有以下定义:int w34=0,1,2,4,5,8;int (*p)4=w;则数值为4的表达式是( B).A、*w1+1B、p11C、p+,*(p+1)D、w22判断printf 函数的一般格式为:printf (格式控制,
10、输出表列).【参考答案】正确在C程序中,%是只能用于整数运算的运算符【参考答案】正确逻辑表达式42&1|5b) a=b; if(bc) b=c; else c=b; c=a;【参考答案】1=若输入字符串:abcde,则以下while循环体将执行 _ 次. while(ch=getchar()=e) printf(*);【参考答案】0=求字符串长度的库函数是_,只写函数名即可.【参考答案】strlen=feof(fp)函数用来判断文件是否结束,如果遇到文件结束,函数值为_, 否则为_.【空 1】【参考答案】非0值=【空 2】【参考答案】0【程序设计】功能:对任意输入的 x,用下式计算并输出 y
11、的值。(还可以尝试用case语句) -1 x0注意: 请在Begin 和 End 注释行之间填写代码, 所有注释语句都不能删除。-*/#include stdio.hint fun(int n) /*Begin*/ /* End */ void main () void TestFunc(); int x,y; printf(enter x:); scanf(%d,&x); y=fun(x); printf(x=%d,y=%dn,x,y); TestFunc();void TestFunc() FILE *IN,*OUT; int i; int iIN; long int iOUT; IN=f
12、open(in.dat,r); if(IN=NULL) printf(Please Verify The Currernt Dir.It May Be Changed); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Please Verify The Current Dir. It May Be Changed); for(i=0;i5;i+) fscanf(IN,%d,&iIN); iOUT=fun(iIN); fprintf(OUT,%ldn,iOUT); fclose(IN); fclose(OUT);【参考代码】 int m; if(n=0) i
13、f(n0) m=1; else m=0; else m=-1;return m;或 int m; if(n=0) if(n0) m=-1; else m=0; else m=1;return m;【程序改错】功能:将6个数按输入时顺序的逆序进行排列.-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include stdio.hvoid sort(char *p,int m) int i; char change,*p1,*p2; for(i=0;im/2;i+) /*ERROR*/ *p1=p+i; *p2=p+(m-1-i); change=*p1; *p1=*p2; *p2
14、=change; main( ) int i; /*ERROR*/ char p,num6; for(i=0;i=5;i+) /*ERROR*/ scanf(%d,numi); p=&num0; /*ERROR*/ sort(*p,6); for(i=0;in2n2*pointer2*pointer2n3n3*pointer3*pointer3n3n3*pointer3*pointer35) printf(%dn,m); else printf(%dn,m-); A、6B、5C、7D、4执行下面程序段后,i的值是( A).int i=10;switch(i)case 9: i+=1; case
15、 10: i-; case 11: i*=3; case 12: +i;A、28B、10C、9D、27下面有关 for 循环的正确描述是( C)。A、for 循环是先执行循环体语句,后判断表达式B、在 for 循环中,不能用 break 语句跳出循环体C、for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来D、for 循环只能用于循环次数已经确定的情况针对下列程序段回答问题( B).for(t=1;t=100;t+) scanf(%d,&x); if(x=0时什么也不输出B、最多允许输出100个非负整数C、printf函数永远也不执行D、当x0时整个循环结束若char a10;已
16、正确定义,以下语句中不能从键盘上给a数组的所有元素输入值的语句是(D)。A、for(i=0;i10;i+)ai=getchar();B、scanf(%s,a);C、gets(a);D、a=getchar();下面叙述中错误的是( B)。A、在其它函数中定义的变量在主函数中也不能使用B、主函数中定义的变量在整个程序中都是有效的C、复合语句中定义的变量只在该复合语句中有效D、形式参数也是局部变量file1.c中有命令,#include ,若file2.c中有全局静态变量a,则(B ).A、a在file1.c中应用extern说明.B、a在file1.c中有效,不必用extern说明.C、a在fil
17、e1.c中不生效D、a在file1.c和file2.c中均不生效.若有定义:int aa 8;则以下表达式中不能代表数组元素aa1的地址的是(C)。A、&aa1B、&aa0+1C、&aa0+D、aa+1判断在C程序中,main函数必须位于程序的最前面【参考答案】错误若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,而b中的值不变【参考答案】正确逻辑表达式42&1|5c) b=a; a=c; c=b;【空 1】【参考答案】2设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是_. for (x=0,y=0;y!=123&x3;x+) scanf (%d,
18、&y);【空 1】【参考答案】3字符串比较的库函数是_,只写函数名即可.【空 1】【参考答案】strcmp调用 fopen 函数打开一文本文件,在使用方式这一项中, 为追加而打开需填入_.【空 1】【参考答案】aa+【程序设计】-功能:在键盘上输入一个3行3列矩阵的各个元素的值(值 为整数),然后输出主对角线元素的平方和,并在 fun()函数中输出。注意: 请在Begin 和 End 注释行之间填写代码, 所有注释语句都不能删除。-*/#include stdio.h void main() int i,j,s,a33; int fun(int a33); void TestFunc(); f
19、or(i=0;i3;i+) for(j=0;j3;j+) scanf(%d,&aij); s=fun(a); printf(Sum=%dn,s); TestFunc();int fun(int a33) /*Begin*/ /* End */ void TestFunc() FILE *IN,*OUT; int m; int n; int i33; int o; IN=fopen(in.dat,r); if(IN=NULL) printf(Read File Error); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Write File Error);
20、 for(m=0;m3;m+) for(n=0;n3;n+) fscanf(IN,%d,&imn); o=fun(i); fprintf(OUT,%dn,o); fclose(IN); fclose(OUT);【参考代码】int sum=0,i;for(i=0;i3;i+) sum=sum+aii*aii; return sum; 【程序改错】-功能:输入10个数,要求输出这10个数的平均值-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include stdio.hfloat average(float array10) int i; float aver,sum=array
21、0; /*ERROR*/ for(i=0;i10;i+) sum=sum+arrayi; aver=sum/10.0; return(aver);void main( ) /*ERROR*/ int score10,aver ; int i; printf(input 10 scores:n); for(i=0;i10;i+) /*ERROR*/ scanf(%f, score); printf(n); /*ERROR*/ aver=average(score10); printf(average score is %5.2f,aver);【改错1】【参考答案】for(i=1;i10;i+)for(i=1;i=9;