C语言习题精选_第1页
C语言习题精选_第2页
C语言习题精选_第3页
C语言习题精选_第4页
C语言习题精选_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言习题精选程序设计基本概念选择题C语言规定,必须用(C)作为主函数(A)function(B)include(C)main(D)stdio一个C程序可以包含任意多个不同名的函数,但有且仅有一个(B),一个C程序总是从()开始执行。(A)过程(B)主函数(C)函数(D)includeC源程序是由(A)构成的(A)函数(B)函数和过程(C)超文本过程(D)子程序(A)是C程序的基本构成单位(A)函数(B)函数和过程(C)超文本过程(D)子程序下列说法正确的是(c)一个函数的函数体必须要有变量定义和执行部分,二者缺一不可一个函数的函数体必须要有执行部分,可以没有变量定义一个函数的函数体可以没有变量定义和执行部分,函数可以是空函数以上都不对下列说法正确的是(D)main函数必须放在C程序的开头main函数必须放在C程序的最后main函数可以放在C程序的中间部分,即在一些函数之前在另一个函数之后,但在执行C程序时是从程序开头执行的main函数可以放在C程序的中间部分,即在一些函数之前在另一些函数之后,但在执行C程序时是从main函数开始的下列说法正确的是(C)在执行C程序时不是从main函数开始的C程序书写格式严格限制,一行内必须写一个语句C程序书写格式自由,一个语句可以分写在多行上C程序书写格式严格限制,一行内必须写一个语句,并要有行号在C语言中,每个语句和数据定义是用(C)结束(A)句号(B)逗号(C)分号(D)括号下列字符串是标识符的是(A)(A)_HJ(B)9_student(C)long(D)LINE1以下说法正确的是(C)C语言程序总是从第一个定义的函数开始执行在C语言程序中,要调用的函数必须在main()函数中定义C语言程序总是从main()函数开始执行C语言程序中的main()函数必须放在程序的开始部分(D)不是C语言提供的合法关键字()(A)switch(B)print(C)case(D)defaultC语言提供的合法关键字是(B)(A)break(B)print(C)funition(D)endC语言提供的合法关键字是(A)(A)continue(B)procedure(C)begin(D)append填空题一个C源程序至少包含一个(),即()一个函数由两部分组成,它们是()和()函数体一般包括()和()函数体的范围是()C语言是通过()来进行输入和输出的在C语言中,凡在一个标识符后面紧跟着一对圆括弧,就表明它是一个()C语言的关键字都用(小写){大写或小字}主函数名后面的一对圆括号中间可以为空,但一对圆括号不能()C程序设计的初步知识选择题C语言中不能用来表示整常数的进制是(D)(A)十进制(B)十六进制(C)八进制(D)二进制在C语言中,反斜杠字符是(D)(A)\n(B)\t(C)\v(D)\\在ASCII代码表中可以看到每一个小写字母比它相应的大写字母的ASCII码A(A)大32(B)大64(C)小32(D)小1设d为字符变量,下列表达式不正确的是(C)(A)d=97(B)d=’a’(C)d=”a”(D)d=’g’10+’a’+1.5-567.345/’b’的结果是(B)(A)long(B)double(C)int(D)unsignedfloat在C语言中,运算对象必须是整型数的运算符是(A)(A)%(B)/(C)%和/(D)**为表示关系x>=y>=z,应使用C语言表达式(A)(A)(y<=x)&&(y>=z)(B)(x>=y)AND(y>=z)(C)(x>=y>=z)(D)(x>=y)&(y>=z)若欲表示在if后a不等于0的关系,则能正确表示这一关系的表达式为(D)(A)a<>0(B)!a(C)a=0(D)a/;[C语言常量包括数值常量(整型常量(十进制八进制)实型常量)和字符型常量(字符常量字符串常量)]下列常数中,合法的C常量是(A)(A)”x-y”(B)’105’(C)’Be’(D)7ff下列常数中,合法的C常量是(A)(A)-0.(B)’105’(C)‘AB’(D)3+5下列常数中,合法的C常量是(A)(A)’\n’(B)e-310(C)’DEF’(D)’1234’下列常数中,不合法的C常量是(B)(A)-0x2a1(B)lg3(C)’[‘(D)”CHINA”下列常数中,不合法的C常量是(B)(A)-0x3b1(B)123e+2.3(C)’}’(D)6e+7下列符号中,可以作为变量名的是(C)(A)+a(B)12345e(C)a3B(D)5e+0写出下列正确的输出结果BAmain(){intx,y,z;x=y=1;z=x++-1;printf(“%d,%d\t”,x,z);z+=-x+++(++y||++z);printf(“%d,%d”,x,z);}(A)2,03,-1(B)2,13,0(C)2,02,1(D)2,10,1写出下面程序的输出结果()main(){intx=40,y=4,z=4;x=y==z;printf(“%d”,x);x=x==(y-z);printf(“%d”,x);}(A)40(B)41(C)11(D)10写出下面程序的输出结果()main(){intI,j;I=16;j=(I++)+I;printf(“%d”,j);I=15;printf(“%d%d”,++I,I);}(A)321615(B)331515(C)341516(D)341615若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值为()(A)1(B)2(C)2.0(D)2.5下列程序的执行结果是()#definesum10+20main(){intb=0,c=0;b=5;c=sum*b;printf(“%d”,c);}(A)100(B)110(C)70(D)150表达式(double)(20/3)的值为()(A)6(B)6.0(C)2(D)3填空题如果intI=3;则k=(I++)+(I++)+(I++),则k=(),I=();如果intI=3;则k=(I++)+(++I)+(I++),则k=(),I=();如果intI=3;则k=(++I)+(++I)+(I++),则k=(),I=();如果intI=3;则k=(++I)+(++I)+(++I),则k=(),I=();已知在ASCII字符集中,字母A的序号为65,下面程序的输出结果为()main(){charc=’A’;intI=10;c=c+10;I=c%I;Printf(“%c,%d\n”,c,I);}C语言的数据类型有四大类,其分别为(),(),(),()。C语言的数据类型中构造类型包括三种,它们是(),(),()。C语言基本数据类型包括(),(),(),()。在C语言中,常量有不同的类型,包括(),(),()和()。符号常量是指()。整型常量和实型常量也称为(),它们有正负值之分。C语言中,习惯上符号常量名用(),变量用()。{大写或小写}C语言在定义变量的同时说明变量的(),系统在编译时就能根据变量定义及其()为它分配相应大小的存储空间。在C语言中,用来标识变量名,符号常量名,函数名,数组名,类型名,文件名的有效字符序列称为()整型变量可分为(),(),(),()四种,分别用(),(),(),()表示。在一个整常量后面加一个字母()或(),则认为是longint型常量。在C语言中,实数有两种表示形式,即()和()。下面的程序main(){printf(“___ab_c\t_de\rfg\n”);printf(“h\ti\b\b\j___k”);}运行结果是()在C语言中,系统在每一个字符串的结尾自动加一个”字符串结束标志符”即()以便系统据此判断字符串是否结束。表达式10+’a’+1.5-0.5*’B’的结果是()表达式10+’a’+1.5-567.345/’b’的结果是()型数据在TURBOC中,单精度实数的数值范围约在()之间。下面的程序:main(){floatx;intI;x=3.6;I=(int)x;printf(“x=%f,I=%d”,x,I);}运行结果为()在C语言中,表达式的类型有(),(),(),(),(),()。分析下面的程序:main(){inta,b,c;a=b=c=1;a+=b;b+=c;c+=a;printf(“(1)%d\n”,a>b?a:b);printf(“(2)%d\n”,a>c?a--:c++);(a>=b>=c)?printf(“AA”):printf(“CC”);printf(“\na=%d,b=%d,c=%d\n”,a,b,c);}运行结果为()用C语言描述下列命题a小于b或小于ca和b都大于ca或b中有一个小于ca是奇数若x=3,y=2,z=1,求下列表达式的值:x<y?y:xx<y?x++:y++z+=x<y?x++:y++sizeof用于计算出各个数据类型使用多少内存空间,若有语句:I=sizeof(int);j=sizeof(char),则I=();j=()若I=sizeof(float);j=sizeof(double),则I=(),j=().在C语言中,可以利用(),将一个表达式的值转换成指定的类型。顺序结构(基本语句)一.选择题C语言中调用printf函数进行输出时需要注意,在格式控制串中,格式说明与输出项的个数必须相同。如果格式说明的个数小于输出项的个数,多余的输出项将();如果格式说明的个数多于输出项的个数,则对于多余的格式将输出不定值(或0)。(A)不予输出(B)输出空格(C)照样输出(D)输出不定值或0在scanf函数的格式控制中,格式说明的类型与输入项的类型应该一一对应匹配。如果类型不匹配,系统将()。(A)不予接收(B)并不给出出错信息,但不可能得到正确数据(C)能接收到正确输入(D)给出出错信息,不予接收输入以下程序的输出结果是()main(){intI=011,j=11,k=0x11;printf(“%d,%d,%d\n”,I,j,k);}(A)9,11,17(B)9,11,11(C)11,11,11(D)11,11,16以下程序的输出结果是()#include<stdio.h>main(){printf(“%d\n”,NULL);}(A)不确定的值(因变量无定义)(B)0(C)-1(D)1以下程序的输出结果是()main(){charc1=’6’,c2=’0’;printf(“%c,%c,%d,%d\n”,c1,c2,c1-c2,c1+c2);}(A)输出出错信息(B)6,0,6,102(C)6,0,7,6(D)6,0,5,7有如下定义:intx=10,y=5,z;则语句printf(“%d\n”,z=(x+=y,x/y));的输出结果是()(A)1(B)0(C)4(D)3以下程序的输出结果是()main(){inta=-1,b=4,k;k=(++a<=0)&&!(b--<=0);printf(“%d%d%d\n”,k,a,b);}(A)104(B)004(C)103(D)003若有定义:intx,y;chara,b,c;并有以下输入数据(此处,<cr>代表换行符)12<cr>ABC<cr>则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是:(A)scanf(“x=%dy=%d”,&x,&y);a=getchar();b=getchar();c=getchar();(B)scanf(“%dy%d”,&x,&y);a=getchar();b=getchar();c=getchar();(C)scanf(“%d%d%c%c%c%c%c%c”,&x,&y,&a,&a,&b,&b,&c,&c);(D)scanf(“%d%d%c%c%c”,&x,&y,&a,&b,&c);若已定义inta=25,b=14,c=19;以下三项运算符(?:)所构成的语句的执行结果是()a++<=25&&b--<=2&&c++?printf(“***a=%d,b=%d,c=%d\n”,a,b,c):printf(“###a=%d,b=%d,c=%d\n”,a,b,c)(A)(***a=25,b=14,c=19)(B)(***a=26,b=13,c=19)(C)(###a=25,b=14,c=19)(D)(###a=26,b=13,c=19)以下C程序,正确的运行结果是()(注_代表空格)main(){longy=-34567;printf("y=%-8ld\n",y);printf("y=%-08ld\n",y);printf("y=%08ld\n",y);printf("y=%+8ld\n",y);}(A)y=__-34567(B)y=-34567(C)y=-34567(D)y=__-34567y=-__34567y=-34567y=-34567y=-0034567y=-0034567y=-0034567y=-0034567y=00034567y=-34567y=+_-34567y=__-34567y=+34567二.填空题C语言中的语句可分为五类,即()、()、()、()、()。由一次函数调用加一个分号构成一个()语句。printf是C语言提供的标准输出函数,它的作用是()。printf函数的”格式控制”包括两部分,它们是()和()。如果想输出字符”%”,则应该在”格式控制”字符串中用()表示。符号’&’是()运算符,&a是指()。scanf函数的”格式控制”后面应当是(),而不是()。C语言中的空语句就是()。返回语句的功能是从()返回()。复合语句是由一对()括起来的若干语句组成的。下列程序的输出结果是()#include<stdio.h>main(){charb[]=”ABCDEFG”;char*chp=&b[7];while(--chp>&b[0])putchar(*chp);putchar(‘\n’);}下列程序的输出结果是()main(){intx=2,y,z;x*=3+2;printf(“%d\n”,x);x*=y=z=4;printf(“%d\n”,x);x=y=z;printf(“%d\n”,x);x=(y=z);printf(“%d\n”,x);}下列程序的输出结果是()main(){printf(“%d”,1<4&&4<7):printf(“%d”,1<4&&7<4);printf(“%d”,(2<5));printf(“%d”,!(1<3)||(2<5));printf(“%d”,!(4<=6)&&(3<=7));}下列程序的输出结果是()main(){intx,y;x=16;y=(x++)+x;printf(“%d\n”,y);x=15;printf(“%d,%d\n”,++x,x);x=20;y=x--+x;printf(“%d\n”,y);x=13;printf(“%d,%d”,x++,x);}阅读程序main(){charstr1[]="peopleandcomputer",str2[10];char*p1=str1,*p2=str2;scanf("%s",p2);printf("%s",p2);printf("%s\n",p1);}运行上面的程序,输入字符串PEOPLEANDCOMPUTER,则程序的输出结果是()。编程题从键盘输入一个大写字母,要求改用小写字母输出;编写程序,判断某一年是否闰年;编写求方程ax2+bx+c的解x的程序;选择结构下列运算符中优先级最高的是()。(A)>(B)+(C)&&(D)!=逻辑运算符运算对象的数据类型()。(A)只能是0和1(B)只能是.T.或.F.(C)只能是整型或字符型(D)任何类型的数据能正确表示x的取值范围在[0,100]和[-10,-5]内的表达式是()。(A)(X<=-10)||(x>=-5)&&(x<=0)||(x>=100)(B)(x>=-10)&&(x<=-5)||(x>=0)&&(x<=100)(C)(x>=-10)&&(x<=-5)&&(x>=0)&&(x<=100)(D)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)以下程序的运行结果是()。Main(){intc,x,y;x=1;y=1;c=0;c=x++||y++;printf(“\n%d%d%d\n”,x,y,c);}(A)110(B)211(C)221(D)001以下程序的运行结果是()。Main(){intc,x,y;x=0;y=0;c=0;c=x++&&y++;printf(“\n%d%d%d\n”,x,y,c);}(A)100(B)110(C)011(D)001两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是()。Main(){intx;scanf(“%d”,&x);if(x++>5)printf(“%d”,x);elseprintf(“%d\n”,x--);}(A)7和5(B)6和3(C)7和4(D)6和4写出下面程序的运行结果()。Main(){intx=1,y=1,z=0;if(z<0)if(y>0)x=3;elsex=5;printf(“%d\t”,x);if(z=y<0)x=3;elseif(y==0)x=5;elsex=7;printf(“%d\t”,x);printf(“%d\t”,z);}(A)170(B)370(C)550(D)151写出下面程序的运行结果()。Main(){intx,y=1,z=0;if(y!=0)x=5;printf(“x=%d\t”,x);if(y==0)x=3;elsex=5;printf(“x=%d\t\n”,x);x=1;if(z<0)if(y>0)x=3;elsex=5;printf(“x=%d\t\n”,x);if(z=y<0)x=3;elseif(y==0)x=5;elsex=7;printf(“x=%d\t”,x);printf(“z=%d\t\n”,z);if(x=z=y)x=3;printf(“x=%d\t”,x);printf(“z=%d\t\n”,z);}(A)x=5x=5(B)x=5x=5(C)x=5x=5(D)x=5x=5x=1x=1x=5x=1x=7z=0x=5z=0x=7z=0x=7z=0x=3z=1x=3z=0x=3z=1x=3z=0若有以下函数关系x<0时y=2xx>0时y=xx=0时y=x+1下面程序段能正确表示以上关系的是()。(A)y=2x;(B)y=2x;(C)if(x>=0)(D)y=x+1;if(x!=0)if(x<=0)if(x>0)y=x;if(x<=0)if(x>0)y=x;if(x==0)y=x+1;elsey=x+1;if(x<0)y=2x;elsey=x+1;elsey=x;elsey=2x;elsey=x;若有以下变量定义:floatx;inta,b;则正确的switch语句是()。(A)switch(x)(B)switch(x)(C)switch(a+b)(D)switch(a+b){case1.0:printf(“ok”);{case1,2:printf(“ok”);{case1:printf(“ok”);{case1:printf(“ok”);case2.0:printf(“this”);case.3:printf(“this”);case2*a:printf(“this”);case1+2:printf(“this”);}}}}填空题1.以下两条if语句合并成一条if语句为()。if(a<=b)x=1;elsey=2;if(a>b)printf(“****y=%d\n”,y);elseprintf(“####x=%d\n”,x);2.以下程序的功能是计算一元二次方程ax2+bx+c=0的根,补足程序中空缺的语句。#include<math.h>main(){floata,b,c,_abs,_derta,_doublea,part1,part2;printf(“entera,b,c:”);scanf(“%f%f%f”,&a,&b,&c);if()if()printf(“noanswerduetoinputerror\n”);elseprintf(“thesinglerootis%f\n”,-c/b);else{_derta=b*b–4*a*c;_doublea=2*a;part1=-b/(2*a);_abs=abs(_derta);part2=sqrt(_abs)/_doublea;if()printf(“complexroot\nrealpart=%fimagepart=%f\n”,part1,part2);elseprintf(“realroots\nroot1=%froot2=%f\n”,part1+part2,part1-part2);}}3.以下程序段的运行结果是()。intx=1,y=0;switch(x){case1:switch(y){case0:printf(“x=1y=0\n”);break;case1:printf(“x=1\n”);break;}case‘2’:printf(“x=2\n”);}4.根据以下if语句写出与其功能相同的switch语句。(x的值在0-100之间)if语句:if(x<60)m=1;elseif(x<70)m=2;elseif(x<80)m=3;elseif(x<90)m=4;elseif(x<100)m=5;switch语句:switch(){()m=1:break;case6:m=2;break;case7:m=3;break;case8:m=4;break;()m=5;}编程题编写一程序,要求由键盘输入三个数,计算以这三个数为边长的三角形面积。输入圆的半径r和一个整型数k,当k=1时,计算圆的面积;当k=2时,计算圆的周长;当k=3时,既要求出圆的面积也要求出圆的周长。编程实现以上功能。循环结构选择题1.在do-while循环中,循环由do开始,用while结束;必须注意的是:在while表达式后面的()不能丢,它表示do-while循环的结束。(A)0(B)1(C);(D),2.for语句中的表达式可以部分或全部省略,但两个()不可省略。但当三个表达式均省略后,因缺少判断条件,循环会无限制地执行下去,形成死循环。(A)0(B)1(C);(D),3.程序段如下:intk=1;while(!k==0){k=k+1;printf(“%d\n”,k);}则以下说法中正确的是()(A)while循环执行2次(B)无限循环(C)循环体语句一次也不执行(D)执行一次4.程序段如下:intk=0;while(k++<=2);printf(“last=%d\n”,k);则正确的执行结果是last=()(A)2(B)3(C)4(D)无结果5.执行下面的程序后,a的值为()main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}}(A)7(B)8(C)9(D)106.分析下列程序main(){intn[3],I,j,k;for(I=0;I<3;I++)n[I]=0;k=2;for(I=0;I<k;I++)for(j=0;j<k;j++)n[j]=n[I]+1;printf(“%d\n”,n[1]);}(A)2(B)1(C)0(D)37.下面程序的输出结果是()main(){intn=0;while(n++<=1)printf(“%d\t”,n);printf(“%d\n”,n);}(A)123(B)012(C)112(D)1228.当输入为”quert?”时,下面程序的执行结果是()main(){charc;c=getchar();while((c=getchar())!=’?’)putchar(++c);}(A)Quert(B)vfsu(C)quert?(D)rvfsu?9.当输入为”quert?”时,下面程序的执行结果是()main(){while(putchar(getchar())!=’?’);}(A)quert(B)Rvfsu(C)quert?(D)rvfsu?10.当输入为”quert?”时,下面程序的执行结果是()main(){charc;c=getchar();while(c!=’?’){putchar(c);c=getchar();}}(A)quert(B)Rvfsu(C)quert?(D)rvfsu?填空题将for(表达式1;表达式2;表达式3)语句改写为等价的while语句为()break语句的功能是()break语句只能用于()语句和()语句continue语句的作用是(),即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。编程题求100-200间的全部素数编一程序,将2000年到3000年中所有的闰年年份输出并统计出闰年的总年数,要求每10个闰年放在一行输出。数组选择题1.若有语句inta[8];则下述对a的描述正确的是()。(A)定义了一个名称为a的一维整型数组,共有8个元素(B)定义了一个数组a,数组a共有9个元素(C)说明数组a的第8个元素为整型变量(D)以上可选答案都不对2.在C语言中,引用数组元素时,其数组下标的数据类型允许是()。(A)整型常量(B)整型表达式(C)整型常量或整型表达式(D)任何类型的表达式3.下述对C语言字符数组的描述正确的是()。(A)任何一维数组的名称都是该数组存储单元的开始地址,且其每个元素按照顺序连续占用存储空间(B)一维数组的元素在引用时其下标大小没有限制(C)任何一个一维数组的元素,可以根据内存的情况按照其先后顺序以连续或非连续的方式占用存储空间(D)一维数组的第一个元素是其下标为1的元素4.下述对C语言字符数组的描述中正确的是()。(A)任何一个一维数组的元素在引用时,其下标可以是整型、实型或字符型常量(B)一维数组的元素实质上就是一个变量,代表内存中的一个存储单元(C)如果要引用数组中的每一个元素,则直接使用该数组名称即可(D)以上都不对5.以下对一维整型数组a的正确说明是()。(A)inta(10);(B)intn=10,a[n];(C)intn;(D)#defineSIZE10scanf(“%d”,&n);inta[SIZE];inta[n];6.以下能对一维数组a进行正确初始化的语句是()(A)inta[10]=(0,0,0,0,0);(B)inta[10]={};(C)inta[]={0};(D)inta[10]=(10*1);7.若有说明:inta[3][4];则对a数组元素的正确引用是()(A)a[2][4](B)a[1,3](C)a[1+1][0](D)a(2)(1)8.以下能对二维数组a进行正确初始化的语句是()(A)inta[2][]={{1,0,1},{5,2,3}};(B)inta[][3]={{1,2,3},{4,5,6}};(C)inta[2][4]={{1,2,3},{4,5},{6}};(D)inta[][3]={{1,0,1}{},{1,1}};9.若有说明:inta[3][4]={0};则下面正确的叙述是()(A)只有元素a[0][0]可得到初值0(B)此说明语句不正确(C)数组a中各元素都可得到初值,但其值不一定为0(D)数组a中每个元素均可得到初值010.以下各组选项中,均能正确定义二维实型数组a的选项是()(A)floata[3][4];floata[][4];floata[3][]={{1},{0}};(B)floata(3,4);floata[3][4];floata[][]={{0};{0}};(C)floata[3][4];staticfloata[][4]={{0},{0}};(D)floata[3][4];floata[3][];11.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为()(假设a[0][0]位于数组的第一个位置上。)(A)i*m+j(B)j*m+i(C)i*m+j-1(D)i*m+j+112.对以下说明语句的正确理解是()inta[10]={6,7,8,9,10};(A)将5个初值依次赋给a[1]至a[5](B)将5个初值依次赋给a[0]至a[4](C)将5个初值依次赋给a[6]至a[10](D)因为数组长度与初值的个数不相同,语句有错13.若有说明:inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是()(A)2(B)3(C)4(D)不确定14.定义如下变量和数组:intI;intx[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是()for(I=0;I<3;I++)printf(“%d”,x[I][2-I]);(A)159(B)147(C)357(D)36915下面程序的运行结果是()main(){inta[6][6],I,j;for(I=1;I<6;I++)for(j=1;j<6;j++)a[I]][j]=(I/j)*(j/I)for(I=1;I<6;I++){for(j=1;j<6;j++)printf(“%2d”,a[I][j]);printf(“\n”);}}(A)11111(B)00001(C)10000(D)100011111100010010000101011111001000010000100111110100000010010101111110000000011000116.下面程序的运行结果是()main(){inta[6];for(I=1;I<6;I++){a[I]=9*(I-2+4*(I>3))%5;printf(“%2d”,a[I]);}}(A)-40404(B)-40403(C)-40443(D)-4044017.下列定义正确的是()(A)staticinta[]={1,2,3,4,5}(B)intb[2]={2,5,7}(C)inta(10)(D)int4e[4]18.若有说明:inta[][4]={0,0};则下列叙述不正确的是()(A)数组a的每个元素都可得到初值0(B)二维数组a的第一维的大小为1(C)因为对二维数组a的初值个数除以第二维的大小,商为0,所以数组a的行数为1(D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值19.设有charstr[10],下列语句正确的是()(A)scanf(“%s”,&str);(B)printf(“%c”,str);(C)printf(“%s”,str[0]);(D)printf(“%s”,str);20.以下语句定义正确的是()(A)inta[1][4]={1,2,3,4,5};(B)floatx[3][]={{1},{2},{3}};(C)longb[2][3]={{1},{1,2},{1,2,3}};(D)doubley[][3]={0};21下列的说法正确的是()(A)在C语言中,可以使用动态内存分配技术,定义元素个数可变的数组(B)在C语言中,数组元素的个数可以不确定,允许随机变动(C)在C语言中,数组元素的数据类型可以不一致(D)在C语言中,定义了一个数组后,就确定了它所容纳的具有相同数据类型元素的个数22.假设array是一个有十个元素的整型数组,则下列写法中正确的是()(A)array[0]=10(B)array=0(C)array[10]=0(D)array[-1]=023.若用数组名作为函数调用的实参,传递给形参的是()(A)数组的首地址(B)数组的第一个元素的值(C)数组中全部元素的值(D)数组元素的个数24.若使用一维数组名作函数实参,则以下正确的说法是()(A)在被调函数中,与该实参相对应的形参必须是指针型变量(B)实参数组类型与形参类型可以不匹配(C)在被调函数中,不需要考虑形参数组的大小(D)实参数组名与形参数组名必须一致25.下述对C语言字符数组的描述错误的是()(A)字符数组可以存放字符串(B)字符数组中的字符串可以整体输入、输出(C)可以在赋值语句中通过赋值运算符”=”对字符数组整体赋值(D)不可以用关系运算符对字符数组中的字符串进行比较26.设有charstr1[10],str2[10],c1;则下列语句正确的是()(A)str1={“china”};str2=str1;(B)c1=”ab”;(C)str1={“china”};str2={“people”};strcpy(str1,str2);(D)c1=’a’;27.以下能正确进行字符串赋值、赋初值的语句组是()(A)chars[5]={‘a’,’b’,’c’,’d’,’e’};(B)char*s;s=”abcde”;(C)chars[5]=“abcde”;(D)chars[5];s=“abcd”;28.下列语句的执行结果是()staticcharstr[10]=“china”;printf(“%d”,strlen(str));(A)10(B)6(C)5(D)029合法的数组定义是()(A)inta[]=“language”;(B)inta[5]={0,1,2,3,4,5};(C)chara=”string”;(D)chara[]={“0,1,2,3,4,5”};30.若有以下程序片段:charstr[]=“ab\n\012\\\””;printf(“%d”,strlen(str));则输出结果是()(A)3(B)4(C)6(D)1231.库函数strcpy用以复制字符串。若有以下定义和语句:charstr1[]=“string”,str2[8],*str3,*str4=”string”;则对库函数strcpy的不正确调用是()(A)strcpy(str1,”hello1”);(B)strcpy(str2,”hello2”);(C)strcpy(str3,”hello3”);(D)strcpy(str4,”hello4”);32.下面程序段的运行结果是()chara[7]=“abcdef“;charb[4]=”ABC”;strcpy(a,b);printf(“%c”,a[5]);(A)为空格(B)\0(C)e(D)f33.有下面的程序段chara[3],b[]=“China”;a=b;printf(“%s”,a);则(A)运行后将输出China(B)运行后将输出Ch(C)输出Chi(D)编译出错填空题1.数组名命名规则和变量名相同,遵循()命名规则。2.对于一维数组的定义”类型说明符数组名[常量表达式]”其中常量表达式可以包括()和(),不能包含()。3.对于数组a[m][n]来说,使用数组的某个元素时,行下标最大值是(),列下标最大值是()。4.在C语言中,将字符串作为()处理。5.在C语言中,数组的首地址是()。6.main(){intk,*p;staticinta[4]={1,2,3,4};p=a;for(k=0;k<3;k++)printf(“%d,”,*p++);}程序的运行结果是()7.程序main(){intk,*p;staticinta[4]={1,2,3,4};p=a;for(k=0;k<3;k++)printf(“%d,”,*++p);}则运行结果是()8.下面程序的功能是将字符串s中所有的字符c删除。补足所缺语#include<stdio.h>main(){chars[80];inti,j;gets(s);for(i=j=0;s[i]!=‘\0’;i++)if(s[i]!=‘c’)();s[j]=‘\0’;puts(s);}9.下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。补足所缺语句。#include<stdio.h>main(){chars[80],c1,c2=‘‘;inti=0,num=0;gets(s);while(s[i]!=‘\0’){c1=s[i];if(i==0)c2=‘‘;elsec2=s[i–1];if()num++;i++;}printf(“Thereare%dwords.\n”,num);}函数选择题1.关于建立函数的目的以下说法正确的是__________。(A)提高程序的执行效率(B)提高程序的可读性(C)减少程序的篇幅(D)减少程序文件所占内存2.以下说法正确的是__________。(A)用户若需调用标准库函数,调用前必须重新定义(B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义(C)系统根本不允许用户重新定义标准库函数(D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调用.3.以下函数形式正确的是__________。(A)doublefun(intx,inty){intz=x+y;returnz;}(B)fun(intx,y){intz;returnz;}(C)fun(x,y){intx,y;doublez;z=x+y;returnz;}(D)doublefun(intx,inty);{doublez;z=x+y;returnz;}4.关于C语言以下说法正确的是__________。(A)实参和与其对应的形参各占用独立的存储单元(B)实参和与其对应的形参共占用一个存储单元(C)只有当实参和与其对应的形参同名时才共占用存储单元(D)形参是虚拟的,不占用存储单元5.若调用一个函数,且此函数中没有return语句,则正确的说法是该函数__________。(A)没有返回值(B)返回若干个系统默认值(C)能返回一个用户所希望的函数值(D)有返回值,但返回一个不确定的值6.按照C语言的规定以下说法不正确的是__________。(A)形参可以是常量、变量或表达式(B)实参可以为任意类型(C)实参可以是常量、变量或表达式,在传递给形参时,要求实参必须有确定的值(D)形参与其对应的实参类型要求可以不一致7.以下说法正确的是__________。(A)定义函数时,形参的类型说明可以放在函数体内,也可以放在函数体外(B)return后边的值不能为表达式(C)如果函数值的类型与返回值类型不一致,以函数值类型为准(D)如果形参与实参的类型不一致,以实参类型为准8.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是__________。(A)地址传递(B)单向值传递(C)由实参传给形参,再由形参传回给实参(D)由用户指定传递方式9.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是_______。(A)float型(B)int型(C)long型(D)double型10.C语言规定,函数返回值的类型是由__________。(A)return语句中的表达式类型所决定(B)调用该函数时的主调函数类型所决定(C)调用该函数时系统临时决定(D)在定义该函数时所指定的函数类型决定11.下面函数调用语句含有实参的个数为__________。func((a,b,c,d),(e,f,g));(A)1(B)2(C)4(D)以上都不对12.以下描述正确的是__________。(A)函数调用可以出现在执行语句或表达式中(B)函数调用不能做为一个函数的实参(C)函数调用可以做为一个函数的形参(D)以上都不正确13.在C语言程序中,以下描述正确的是__________。(A)函数的定义可以嵌套,但函数的调用不可以嵌套(B)函数的定义不可以嵌套,但函数的调用可以嵌套(C)函数的定义和函数的调用均不可以嵌套(D)函数的定义和函数的调用均可以嵌套14.如果在一个函数的复合语句中定义了一个变量,则该变量_________。(A)只在该复合语句中有效,在该复合语句外无效(B)在该函数中任何位置都有效(C)在本程序的原文件范围内均有效(D)此定义方法错误,其变量为非法变量15.以下程序的正确运行结果是__________。#defineMAX10inta[MAX],i;main(){printf("\n");sub1();sub3(a);sub2();sub3(a);}sub2(){inta[MAX],i,max;max=5;for(i=0;i<max;i++)a[i]=i;}sub1(){for(i=0;i<MAX;i++)a[i]=i+i;}sub3(inta[]){inti;for(i=0;i<MAX;i++)printf("%d",a[i]);printf("\n");}}(A)02468101214161801234(B)01234024681012141618(C)012345678901234(D)02468101214161802468101214161816.以下程序的输出结果是__________。main(){intk=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);printf("%d",p);}func(inta,intb){staticintm,k=2;k+=m+1;m=k+a+b;return(m);}(A)8,17(B)8,16(C)8,20(D)8,817.以下程序的输出结果是__________。main(){inti=1,j=3;printf("%d,",i++);{inti=0;i+=j*2;printf("%d,%d,",i,j);}printf("%d,%d\n",i,j);}(A)1,6,3,1,3(B)1,6,3,2,3(C)1,6,3,6,3(D)1,7,3,2,318.以下程序的输出结果是__________。main(){inta[]={1,2,3,4},i,x=0;for(i=0;i<4;i++){sub(a,&x);printf("%d",x);}printf("\n");}sub(int*s,int*y){staticintt=3;*y=s[t];t--;}(A)1234(B)4321(C)0000(D)444412.19.以下程序的输出结果是__________。voidfun(int*s){staticintj=0;dos[j]+=s[j+1];while(++j<2);}main(){intk,a[10]={1,2,3,4,5};for(k=1;k<3;k++)fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}(A)34756(B)23445(C)35745(D)1234520.以下程序的输出结果是__________。f(inta){intb=0;staticintc=3;a=c++,b++;return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}(A)3(B)6(C)5(D)421.以下程序的输出结果是__________。intm=13;intfun2(intx,inty){intm=3;return(x*y-m);}main(){inta=7,b=5;printf("%d\n",fun2(a,b)/m);}(A)1(B)2(C)7(D)1022.C语言中,形参缺省的存储类说明是__________。(A)auto()(B)static(静态)(C)register(寄存器)(D)extern(外部)23.以下叙述中不正确的是__________。(A)一个变量的作用域完全取决于变量定义语句的位置(B)全局变量可以在函数以外的任何部位进行定义(C)局部变量的"生存期"只限于本次函数调用,因此不可能将局部变量的运算结果保存至下一次调用(D)一个变量说明为static存储类是为了限制其他编译单位的引用填空题1.以下程序的输出结果是__________。main(){inta=3,b=2,c=1;c-=++b;b*=a+c;{intb=5,c=12;c/=b*2;a-=c;printf("%d,%d,%d,",a,b,c);a+=--c;}printf("%d,%d,%d\n",a,b,c);}2.以下程序的输出结果是__________。voidfun(){staticinta;a+=2;printf("%d",a);}main(){intcc;for(cc=1;cc<=4;cc++)fun();printf("\n");}3.以下程序的输出结果是__________。unsignedfunct(unsignednum){unsignedintk=1;do{k*=num%10;num/=10;}while(num);returnk;}main(){unsignedintn=26;printf("functresultis:%d\n",funct(n));}4.以下程序的输出结果是__________。doublesub(doublex,doubley,doublez){y-=1.0;z=z+x;returnz;}main(){doublea=2.5,b=9.0;printf("functionrunningresultis:%6.1f\n",sub(b-a,a,a));}5.下面pi函数的功能是,根据以下公式返回满足精度ε要求的π的值。根据以下算法要求补足所缺语句。π/2=1+1/3+1/3·2/5+1/3·2/5·3/7+1/3·2/5·3/7·4/9+…doublepi(doubleeps){doubles=0.0,t=1.0;intn;for(__________;t>eps;n++){s+=t;t=n*t/(2*n+1);}return(2.0*__________);}编译预处理1.执行下面的程序后,a的值是__________。#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}(A)10(B)1(C)9(D)02.执行下面的程序后,a的值是__________。#defineSQR(X)X/Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}(A)10(B)3(C)9(D)Divideerror3.下面__________不是C语言所提供的预处理功能。(A)宏定义 (B)文件包含 (C)条件编译 (D)字符预处理4.在宏定义#defineMAX30中,用宏名代替一个_________。(A)常量 (B)字符串 (C)整数 (D)长整数5.程序#defineNUM30+4main(){printf("NUM*20=%d",NUM*20);}的执行结果为__________。(A)NUM*20=110 (B)NUM*20=680 (C)NUM*20=604 (D)以上都不对6.以下说法正确的是__________。(A)宏定义是C语句,所以要在行末加分号(B)可以使用#undef命令来终止宏定义的作用域(C)在进行宏定义时,宏定义不能层层置换(D)对程序中用双引号括起来的字符串内的字符,与宏名相同的要进行置换7.下面的说法不正确的是__________。(A)函数调用时,先求出实参表达式,然后带入形参。而使用带参的宏只是进行简单的字符替换(B)函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进行的,在展开时也要分配内存单元,进行值传递(C)对于函数中的实参和形参都要定义类型,二者的类型要求一致,而宏不存在类型问题,宏没有类型(D)调用函数只可得到一个返回值,而用宏可以设法得到几个结果8.下面的说法不正确的是__________。(A)使用宏的次数较多时,宏展开后源程序长度增长。而函数调用不会使源程序变长(B)函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进行的,在展开时不分配内存单元,不进行值传递(C)宏替换占用编译时间(D)函数调用占用编译时间9.对于文件包含处理,在编译时__________。(A)把用#include命令指定的文件与本文件用link命令进行联接(B)把用#include命令指定的文件与本文件用project命令进行联接(C)把用#include命令指定的文件与本文件进行宏替换(D)把用#include命令指定的文件与本文件作为一个源文件进行编译10.以下叙述中正确的是__________。(A)用#include包含的头文件的后缀不可以是".a"(B)若一些源程序中包含某个头文件;当该头文件有错时,只需对该头文件进行修改,包含此头文件所有源程序不必重新进行编译(C)宏命令行可以看做是一行C语句(D)C编译中的预处理是在编译之前进行的11.将大写字母变为小写字母的宏定义为__________。(A)#defineTOLOWER(ch)(ch>='A')&&(ch<='Z')?ch+26:ch?(B)#defineTOLOWER(ch)((ch)>='A')&&((ch)<='Z')?(ch)+'a'-'A':(ch)(C)#defineTOLOWER(ch)((ch)>='A')||(ch)<='Z')?(ch)'a'-'A':(ch)(D)#defineTOLOWER(ch)(ch>='A')||(ch<='Z')?ch+26:ch12.若a,b,c,d,t均为int型变量,则执行以下程序段后的结果为_______。#defineMAX(A,B)(A)>(B)?(A):(B)#definePRINT(Y)printf("Y=%d",Y);main(){inta,b,c,d,t;…a=1;b=2;c=3;d=4;t=MAX(a+b,c+d);PRINT(t);}(A)Y=3 (B)存在语法错误 (C)Y=7 (D)Y=013.以下程序段的执行结果为__________。#definePLUS(A,B)A+Bmain(){inta=1,b=2,c=3,sum;sum=PLUS(a+b,c)*PLUS(b,c);printf("Sum=%d",sum);}(A)Sum=9 (B)Sum=30 (C)Sum=12 (D)Sum=1814.以下程序段的执行结果为__________。#definePLUS(A,B)A+Bmain(){inta=1,b=2,c=4,sum;sum=PLUS(a++,b++)/c;printf("Sum=%d",sum);}(A)Sum=1 (B)Sum=0 (C)Sum=2 (D)Sum=415.以下程序的输出结果是__________。#defineMIN(x,y)(x)<(y)?(x):(y)main(){inti,j,k;i=10;j=15;k=10*MIN(i,j);printf("%d\n",k);}(A)15 (B)100 (C)10 (D)15016.以下程序的输出结果是__________。#defineN2#defineMN+1#defineNUM(M+1)*M/2main(){inti;for(i=1;i<=NUM;i++);printf("%d\n",i);}(A)5 (B)6 (C)8 (D)917.以下程序的输出结果是__________。#include<stdio.h>#defineFUDGF(y)2.84+y#definePR(a)printf("%d",(int)(a))#definePRINT1(a)PR(a);putchar('\n')main(){intx=2;PRINT1(FUDGF(5)*x);}(A)11 (B)12 (C)13 (D)1518.以下程序的输出结果是__________。fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fut(&p,a);printf("%d\n",*p);}(A)1 (B)7 (C)9 (D)1119.若要使指针变量p指向一个double类型的动态存储单元,在下划线处应填入__________。double*p;p=__________malloc(sizeof(double));(A)double (B)double* (C)(*double) (D)(double*)20.以下程序的输出结果是__________。voidfun(float*p1,float*p2,float*s){s=(float*)calloc(1,sizeof(float));*s=*p1+*p2++;}main(){floata[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;fun(a,b,s);printf("%5.2f\n",*s);}(A)11.10 (B)12.00 (C)21.10 (D)1.10二.填空题1.程序#defineFUNThisisaCprogrammain(){printf("First:ThisisFUN!\n");printf("Second:%s!","FUN");}的执行结果是__________。2.#define命令出现在程序中函数的外面,宏名的有效范围为________。3.可以使用__________命令来终止宏定义的作用域。4.__________处理是指一个源文件可以将另外一个源文件的全部内容包含进来。5.以下程序的输出结果是__________。#definePR(ar)printf("ar=%d,",ar)main(){intj,a[]={1,3,5,7,9,11,13,15},*p=a+5;for(j=3;j;j--)switch(j){case1:case2:PR(*p++);break;case3:PR(*(--p));}}6.下面程序调用getone函数开辟一个动态存储单元,调用assone函数把数据输入此动态存储单元,调用outone函数输出此动态存储单元中的数据,补足所缺语句。#include"stdlib.h"getone(int**s){*s=(__________)malloc(sizeof(int));}assone(int*s){scanf("%d",__________);}outone(int*b){printf("%d\n",__________);}main(){int*p;getone(&p);assone(p);outone(p);}指针选

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论