c语言真题20套.doc
- 文档编号:567399
- 上传时间:2023-04-29
- 格式:DOC
- 页数:56
- 大小:428KB
c语言真题20套.doc
《c语言真题20套.doc》由会员分享,可在线阅读,更多相关《c语言真题20套.doc(56页珍藏版)》请在冰点文库上搜索。
第一套
下列正确的标识符是(C).
A、a+bB、6aC、_doD、%y
执行以下程序段后,输出结果和a的值是(B)。
inta=10;printf("%d",a++);
A、11和10B、10和11C、11和11D、10和10
以下不正确的if语句形式是(B)。
A、if(x =y)scanf("%d",&x)elsescanf("%d",&y); C、if(x>y&&x! =y);D、if(x==y)x+=y; inta=3,b=2,c=1;if(a>b&&b>c)a=b;elsea=c;则a的值为(C)。 A、1B、0C、2D、3 对for(表达式1;;表达式3)可以理解为(C). A、for(表达式1;表达式3;表达式3)B、for(表达式1;表达式1;表达式3) C、for(表达式1;1;表达式3)D、for(表达式1;0;表达式3) 运行结果是"1112"的程序段是: 请在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;j<=2;j++)printf("%3d",10*i+j);continue;} staticcharstr[10]="China";数组元素个数为(D)。 A、6B、9C、5D、10 以下程序的输出结果是: (C). fun(intx,inty,intz){z=x*x+y*y;}main() {inta=31;fun(5,2,a);printf("%d",a);} A、无定值B、29C、31D、0 文件包含中,被包含文件(B). A、可以是可执行文件.B、可以嵌套其它文件. C、可以是目标文件或源文件.D、必须用".h"为后缀. 下列程序段的输出结果是: (C). voidfun(int*x,int*y){printf("%d%d",*x,*y);*x=3;*y=4;} main(){intx=1,y=2;fun(&y,&x);printf("%d%d",x,y);} A、2112B、1234C、2143D、1212 1.在C程序中,main函数必须位于程序的最前面错误 2.表达式(j=3,j++)的值是4.错误 3.已知a=3,b=4,c=5,则逻辑表达式a||b+c&&b-c的值为0.【参考答案】错误 4.循环结构中的continue语句是使整个循环终止执行【参考答案】错误 5在实际编程中,do-while循环完全可以用for循环替换.【参考答案】正确 6引用数组元素时,数组元素下标必须是整型常量.【参考答案】错误 7如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。 正确 8带参数的宏定义不是进行简单的字符串替换,还要进行参数替换.【答案】正确 9下列的初始化的方式是正确的吗? charst[10];st="string";【答案】错误 10在定义结构体变量时不允许对它赋初值.【参考答案】错误 三.填空 设i,j,k均为int型变量,则执行完下面的for循环后,k的值为__10___. for(i=0,j=10;i<=j;i++,j--)k=i+j; 4.结构体是不同数据类型的数据集合,作为数据类型,必须先说明结构体_类型____,再说明结构体变量. 四.【程序设计】 功能: 将主函数中输入的字符串反序存放。 例如: 输入字符串"abcdefg",则应输出"gfedcba"。 注意: 请在Begin和End注释行之间填写代码,所有注释语句都不能删除。 #include"stdio.h"#include"string.h" #include"conio.h"#defineN81 voidfun(charstr[],intn) {/*********Begin**********/ 【参考代码】 inti,j; charc; for(i=0,j=n-1;i {c=str[i]; str[i]=str[j]; str[j]=c;} /**********End**********/ } voidmain() {voidTestFunc();chars[N];intl;printf("inputastring: ");gets(s); l=strlen(s);fun(s,l);printf("Thenewstringis: ");puts(s);TestFunc();} 五.【程序改错】 功能: 先从键盘上输入一个3行3列矩阵的各个元素的值,然后输 出主对角线上的元素之和sum。 #include"stdio.h" intfun() {inta[3][3],sum;inti,j; /**********ERROR**********/ a=0; for(i=0;i<3;i++) for(j=0;j<3;j++) /**********ERROR**********/ scanf("%d",a[i][j]); for(i=0;i<3;i++) /**********ERROR**********/ sum=sum+a[i][j]; /**********ERROR**********/ printf("sum=%f\n",sum); } voidmain() {fun();} 1【参考答案】sum=0;2【参考答案】scanf("%d",&a[i][j]); 3【参考答案】sum=sum+a[i][i];sum+=a[i][i];4【参考答案】printf("sum=%d\n",sum); 六.【程序填空】先将在字符串s中的字符按正序存放到t串中,然后把s中的 字符按逆序连接到t串的后面。 #include"stdio.h"#include"string.h" voidfun(chars[],chart[]) {inti,sl; /***********FILL***********/ sl=_____; for(i=0;i t[i]=s[i]; for(i=0;i /***********FILL***********/ t[sl+i]=_____; /***********FILL***********/ t[sl+i]=_____; } voidmain() {chars[100],t[100]; /***********FILL***********/ printf("\nPleaseenterstrings: ");_____("%s",s);fun(s,t); printf("Theresultis: %s\n",t);} 1【参考答案】strlen(s)2【参考答案】s[sl-i-1]s[strlen(s)-i-1] 3【参考答案】'\0'04【参考答案】scanf 第二套 若变量均已正确定义并赋值,以下合法的C语言赋值语句是(C)。 A、x+n=I;B、x==5;C、x=n/2.5;D、5=x=4+1; 用scanf函数输入数据,使得x=9.6,y=81.73选择正确的输入语句(D). A、scanf("x=%3f",x);scanf("y=%5f",&y);B、scanf("x=%f",&x);scanf("y=%f",y); C、scanf("x=%3.1f",&x);scanf("y=%f",&y);D、scanf("x=%f",&x);scanf("y=%f",&y); inta=1,b=2,c=3;if(a>c)b=a;a=c;c=b;则c的值为(C)。 A、1B、3C、2D、不一定 为了避免在嵌套的条件语句if-else中产生二义性,C语言规定: else子句总是与(A)配对。 A、其之前最近的未配对的ifB、其之后最近的ifC、同一行上的ifD、缩排位置相同的if 存在多层嵌套循环时,下列说法正确的是(D). A、continue语句可以中止所有循环B、break语句可以中止所有循环 C、continue语句能够中止包含该语句的最内层循 D、break语句能够中止包含该语句的最内层循环 下面程序正确的运行结果是(B).(答案中用大写字母U代表空格) main() {intnum=0;while(num<=2) {num++;printf("%3d",num);}} A、UU1B、UU1UU2UU3C、UU1UU2UU3UU4D、UU1UU2 inta[10];合法的数组元素的最小下标值为(D)。 A、10B、9C、1D、0 下面叙述中错误的是(B)。 A、在其它函数中定义的变量在主函数中也不能使用B、主函数中定义的变量在整个程序中都是有效的C、复合语句中定义的变量只在该复合语句中有效D、形式参数也是局部变量 设有宏定义#defineMAX(x,y)(x)>(y)? (x): (y),则F=4*MAX(2,3)的值为(B). A、3B、2C、12D、8 设有以下定义: intw[3][4]={{0,1},{2,4},{5,8}};int(*p)[4]=w; 则数值为4的表达式是(B). A、*w[1]+1B、p[1][1]C、p++,*(p+1)D、w[2][2] 1.printf函数的一般格式为: printf(格式控制,输出表列).【参考答案】正确 2在C程序中,%是只能用于整数运算的运算符【参考答案】正确 3逻辑表达式4>2&&1||5<3-! 0的值为1.【参考答案】正确 4continue语句对于while和do-while循环来说,意味着转去计算While表达式. 【参考答案】正确 5do-while循环由do开始,while结束,在while(表达式)后面不能加分号. 【参考答案】错误 6对任何一个二维数组的元素,都可以用数组名和两个下标唯一地加以确定.【正确 7每次调用函数时,都要对静态局部变量重新进行初始化.【参考答案】错误 8若有#defineS(a,b)a*b则语句area=S(3,2);area的值为6。 【参考答案】正确 9设有定义: inta[10],*p;则下列的语句是等价的.p=&a[0];p=a;正确 10共用体变量在引用时不能只用共用体变量名,必须使用某个成员名.【答案】正确 三.填空,1已知a=13,b=6,a%b的十进制数值为__1___. 2当a=3,b=2,c=1;时,执行以下程序段后b=__1___.if(a>b)a=b;if(b>c)b=c;elsec=b;c=a; 3若输入字符串: abcde<回车>,则以下while循环体将执行__0___次. while((ch=getchar())=='e')printf("*"); 4求字符串长度的库函数是_strlen____,只写函数名即可. 5feof(fp)函数用来判断文件是否结束,如果遇到文件结束,函数值为_非0值_,否则为__0__. 四【程序设计】 功能: 对任意输入的x,用下式计算并输出y的值。 (还可以尝试用case语句) -1x<0 y=0x=0 1x>0 #include"stdio.h" intfun(intn) {/*********Begin**********/ 【参考代码】 intm; if(n<0) m=-1; else if(n==0)m=0; elsem=1; returnm; /**********End**********/ } voidmain() {voidTestFunc(); intx,y; printf("enterx: "); scanf("%d",&x); y=fun(x); printf("x=%d,y=%d\n",x,y); TestFunc(); } 六改错-功能: 将6个数按输入时顺序的逆序进行排列. #include"stdio.h" voidsort(char*p,intm) {inti;charchange,*p1,*p2; for(i=0;i {/***********ERROR***********/ *p1=p+i;*p2=p+(m-1-i);change=*p1; *p1=*p2;*p2=change;}} main() {inti; /***********ERROR***********/ charp,num[6]; for(i=0;i<=5;i++) /***********ERROR***********/ scanf("%d",num[i]); p=&num[0]; /***********ERROR***********/ sort(*p,6); for(i=0;i<=5;i++) printf("%d",num[i]); } 【参考答案】p1=p+i;p2=p+(m-1-i);【参考答案】char*p,num[6]; 【参考答案】scanf("%d",&num[i]);【参考答案】sort(p,6); 【程序填空】功能: 输入3个数a,b,c,按从小到大的顺序输出。 (冒泡法或选择法,尝试用来程序设计) #include"stdio.h" main() {voidswap(int*p1,int*p2); intn1,n2,n3; int*pointer1,*pointer2,*pointer3; printf("pleaseinput3number: n1,n2,n3: "); scanf("%d,%d,%d",&n1,&n2,&n3); pointer1=&n1; pointer2=&n2; pointer3=&n3; /***********FILL***********/ if(_____)swap(pointer1,pointer2); /***********FILL***********/ if(_____)swap(pointer1,pointer3); /***********FILL***********/ if(_____)swap(pointer2,pointer3); printf("thesortednumbersare: %d,%d,%d\n",n1,n2,n3); } /***********FILL***********/ voidswap(_____) int*p1,*p2; {intp;p=*p1;*p1=*p2;*p2=p;} 【参考答案】n1>n2n2 【参考答案】n1>n3n3 【参考答案】n2>n3n3 【参考答案】p1,p2 第三套 若x,i,j,k都是int型变量,则计算x=(i=4,j=16,k=32)后,x的值为: (D). A、52B、16C、4D、32 执行以下程序段后,输出结果和a的值是(B)。 inta=10;printf("%d",a++);A、11和10B、10和11C、11和11D、10和10 以下程序的输出结果是: (A) main(){intm=5;if(m++>5)printf("%d\n",m);elseprintf("%d\n",m--);} A、6B、5C、7D、4 执行下面程序段后,i的值是(A). inti=10;switch(i) {case9: i+=1;case10: i--;case11: i*=3;case12: ++i;} A、28B、10C、9D、27 下面有关for循环的正确描述是(C)。 A、for循环是先执行循环体语句,后判断表达式B、在for循环中,不能用break语句跳出循环体C、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 D、for循环只能用于循环次数已经确定的情况 若chara[10];已正确定义,以下语句中不能从键盘上给a数组的 所有元素输入值的语句是(A)。 A、for(i=0;i<10;i++)a[i]=getchar();B、scanf("%s",a);C、gets(a);D、a=getchar(); 下面叙述中错误的是(B)。 A、在其它函数中定义的变量在主函数中也不能使用B、主函数中定义的变量在整个程序中都是有效的C、复合语句中定义的变量只在该复合语句中有效D、形式参数也是局部变量 file1.c中有命令,#include A、a在file1.c中应用extern说明.B、a在file1.c中有效,不必用extern说明. C、a在file1.c中不生效D、a在file1.c和file2.c中均不生效. 若有定义: intaa[8];则以下表达式中不能代表数组元素aa[1]的地址的是(C)。 A、&aa[1]B、&aa[0]+1C、&aa[0]++D、aa+1 1.在C程序中,main函数必须位于程序的最前面【参考答案】错误 2若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,而b中的值不变 【参考答案】正确 3逻辑表达式4>2&&1||5<3-! 0的值为1.正确 4break语句不能终止正在进行的多层循环.【参考答案】正确 5C语言中三种基本结构: 顺序选择循环,其结构内的每个部分都会被执行到.【答案】错误 6数值型数组整体不参加数据处理(即不参加各种运算),参加数据处理的只能是数组的元素. 【参考答案】正确 7在C语言中,函数名代表函数的入口地址.【参考答案】正确 8宏名有类型,其参数也有类型.【参考答案】错误 9数组名与指针变量是相互等价的.错误 10一个共用体变量中不能同时存放其所有成员.【参考答案】 正确 三1intx=2;z=++x+1;则x的值为__3___. 2当a=1,b=2,c=3时,执行以下程序段后c=__2___.if(a>c)b=a;a=c;c=b; 3设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是__3___. for(x=0,y=0;y! =123&&x<3;x++)scanf("%d",&y); 4.字符串比较的库函数是_____,只写函数名即可.strcmp 5调用fopen函数打开一文本文件,在"使用方式"这一项中,为追加而打开需填入 a或a+ 【程序设计】在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出主对角线元素的平方和,并在fun()函数中输出。 #include"stdio.h" voidmain() {inti,j,s,a[3][3]; intfun(inta[3][3]); voidTestFunc(); for(i=0;i<3;i++) {for(j=0;j<3;j++)scanf("%d",&a[i][j]);} s=fun(a);printf("Sum=%d\n",s);TestFunc();} intfun(inta[3][3]) {/*********Begin**********/ 【参考代码】 intsum=0,i; for(i=0;i<3;i++) sum=sum+a[i][i]*a[i][i]; returnsum; /**********End**********/ } 【程序改错】 功能: 输入10个数,要求输出这10个数的平均值 #include"stdio.h" floataverage(floatarray[10]) {inti;floataver,sum=array[0]; /***********ERROR***********/ for(i=0;i<10;i++) sum=sum+array[i]; aver=sum/10.0; return(aver); } voidmain() {/***********ERROR***********/ intscore[10],aver; inti; printf("input10scores: \n"); for(i=0;i<10;i++) /***********ERROR***********/ scanf("%f",score); printf("\n"); /***********ERROR***********/ aver=average(score[10]); printf("averagescoreis%5.2f",aver); } 【参考答案】for(i=1;i<10;i++)for(i=1;i<=9;i++ 【参考答案】floatscore[10
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 20