C语言练习题及答案行健.docx
- 文档编号:3538700
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:78
- 大小:70.59KB
C语言练习题及答案行健.docx
《C语言练习题及答案行健.docx》由会员分享,可在线阅读,更多相关《C语言练习题及答案行健.docx(78页珍藏版)》请在冰豆网上搜索。
C语言练习题及答案行健
C语言练习
注意:
以下“□”为空格,
一、选择题:
1、阅读以下程序,当输入数据的形式为:
25,13,10
main()
{intx,y,z;
scanf("%d%d%d",&x,&y,&z);
printf("x+y+z=%d\n",x+y+z);
}
A)x+y+z=48B)x+y+z=35
C)x+y+z=38D)不确定值
2、下面程序的输出是()
main()
{inty=0;
while(y--);
printf("y=%d\n",y);
}
A)y=0B)while构成无限循环
C)y=-1D)y=1
3、在以下各组标识符中,合法的用户标识符是()。
A)xy_B)longdoubleC)*pD)CHAR
变量1signedhistoryFloat
4、以下能正确计算1*2*3…*10的程序段是()
A)do{i=1;s=1;s=s*i;i++;}while(i<=10);
B)do{i=1;s=0;s=s*i;i++;}while(i<=10);
C)i=1;s=1;do{s=s*i;i++;}while(i<=10);
D)i=1;s=0;do{s=s*i;i++;}while(i<=10);
5、已知p为指针变量,a为数组名,I为整型变量,下列赋值语句中不正确的是()
A)p=&i;B)p=a;
C)p=&a[i];D)p=10;
6、在下列各m的值中,能使m%3==2&&m%5==3&&m%7==2()
A)8B)23
C)17D)6
7、如果在用户的程序中要使用c库函数中的字符串函数时,应在该源文件中使用的include命令是()
A)#include
C)#include
8、以下程序的输出结果是()
voidaverage(float*p,intn)
{inti;floatsum;
for(i=0,sum=0;i printf("%.2f\n",sum/n); } main() {floatscore[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}}; average(*score,12); } A) 0B)82.25 C)98.00D)99.00 9、在下列叙述中,正确的一条是() A)表达式1+2<<3和sizeof(3.8)的结果分别为24和8 B)函数fputc(c,stdout)与putchar(c)的结果相同 C)语句intpointer中的pointer是指针变量名 D)主函数和其它函数可以互相调用 10、以下程序的输出为() structs1 {char*s;intn; structs1*sip; }; main() { staticstructs1a[]={{"abcd",1,a+1},{"efgh",2,a+2},{"ijkl",3,a}}; structs1*p=a;intm=0; printf("%s%s%s",a[0].s,p->s,a[2].sip->s); printf("%d%d",m+2,--a[m].n); printf("%c\n",++a[m].s[3]); } A)abcdabcdabcd20eB)abcdefghijkl20e C)abcdefghijkl21eD)abcdabcdabcd21e 11、下列函数中定义不正确的是() A)intmax(){intx,y,z;z=x>y? x: y;} B)intmax(intx,inty){intz;z=x>y? x: y;return(z);} C)intmax(x,y){intx,y,z;z=x>y? x: y;return(z);} D)intmax(){} 12、C语言中函数返回值的类型是由()决定。 A)定义函数时的第一个形参类型B)调用函数的主调函数类型 C)调用函数时临时D)定义函数时所指定的函数类型 13、运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为() A)2,3B)3,5 C)2,5D)5,2 #include main() {intv1=0,v2=0;charch; while((ch=getchar())! ='#') switch(ch) {case'a': case'h': v1++; default: v2++; } printf("%d,%d\n",v1,v2); } 14、下面函数的功能是() sss(char*s,char*t) {while((*s)&&(*t)&&(*t++==*s++))}; return(*s-*t); } A)求字符串的长度B)比较两个字符串的大小 C)将字符串s复制到字符串t中D)将字符串s接续到字符串t中 15、有如下程序 main() {inti,sum=0; for(i=1;i<=3;sum++)sum+=i; printf("%d\n",sum); } 该程序的执行结果是() A)6B)3C)死循环D)0 16、能正确表示a和b同时为正或同时为负的逻辑表达式是() A)(a>=0‖b>=0)&&(a<0‖b<0) B)(a>=0&&b>=0)&&(a<0&&b<0) C)(a+b>0)&&(a+b<=0) D)a*b>0 17、下述程序的输出结果是()。 main() {chars1[10]="abc",*s2="ABC",s3[50]="123456789"; strcpy(s3+4,strcat(s1,s2)); printf("%s\n",s3); } A)1234abcABCB)56789abcABCD C)abcABCD)以上都不是 18、若已定义: inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是() A)p+1B)a+1C)a++D)++p 19、下列定义数组正确的是() A)#definesize10B)intn=5; charstr1[size],str2[size+2];inta[n][n+2]; C)charstr[];D)intnum['10']; 20、以下程序的功能是计算: s=1+1/2+1/3+……+1/10 main() {intn;floats s=1.0; for(n=10;n>1;n--) s=s+1/n; printf("%6.4f\n",s); } 程序运行后输出结果错误,导致错误结果的程序行是 A)s=1.0;B)for(n=10;n>1;n--) C)s=s+1/n;D)printf("%6.4f\n",s); 21、以下说法正确的是() A)输入项可以为一个实型常量,如scanf("%f",3.5); B)只有格式控制,没有输入项,也能进行正确的输入,如scanf("a=%d,b=%d"); C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f",&f); D)当输入数据时,必须指明变量的地址,如scanf("%f",&f); 22、设x=2.5、a=7,则算术表达式x+2*++a/3%3的值为()。 A)2.5B)3.5 C)4.5D)5.5 23、若有说明: inta[3][4]={0};则下面正确的叙述是() A)只有元素a[0][0]可得到初值0 B)此说明语句不正确 C)数组a中个元素都可以得到初始值,但其值不一定为0 D)数组a中个元素都可得到初值0 24、设a=3,b=4,c=5,则表达式! (a+b)+c-1&&b+c/2的值为()。 A)6.5B)6 C)0D)1 25、设x是整型变量,pb是基类型是整型的指针变量,则正确的赋值表达式是() A)pb=x;B)*pb=&x; C)pb=&x;D)*pb=*x; 26、下面程序的输出结果是() #include main() {int**k,*j,i=100; j=&i;k=&j; printf("%d",**k); A)运行错误B)100 C)i的地址D)j的地址 27、在下列有关#include命令的叙述中,错误的一条是() A)在#include命令中,文件名可以用双引号或尖括号括起来 B)在一个包含文件中又可以包含另一个被包含文件 C)在一个#include命令中可以指定一个包含文件 D)在一个#include命令中可以指定多个包含文件 28、以下程序的输出结果为() main() {inta[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}}; printf("Thevalueis%d",the_value(3,4,a)); } the_value(intm,intn,intarr[][4]) { inti,j,val=arr[0][0]; for(i=0;i for(j=0;j if(val return(val); } A)Thevalueis15B)Thevalueis7 C)Thevalueis34D)Thevalueis8 29、在下列叙述中,正确的一条是() A)表达式1+2<<3和sizeof(3.8)的结果分别为24和8 B)函数fputc(c,stdout)与putchar(c)的结果相同 C)语句intpointer中的pointer是指针变量名 D)主函数和其它函数可以互相调用() 30、以下不正确的if语句形式是() A)if(x>y&&x! =y); B)if(x==y)x+=y; C)if(x! =y)scanf("%d",&x)elsescanf("%d",&y); D)if(x 31、有如下程序 main() {intx=1,a=0,b=0; switch(x){ case0: b++; case1: a++; case2: a++;b++; } printf("a=%d,b=%d\n",a,b); } 该程序的输出结果是 A)a=2,b=1B)a=1,b=1 C)a=1,b=0D)a=2,b=2 32、阅读以下程序: main() {intx; scanf("%d",&x); if(x--<5)printf("%d",x); elseprintf("%d",x++); } 程序运行后,如果从键盘上输人5,则输出结果是 A)3B)4C)5D)6 33、以下叙述中正确的是() A)全局变量的作用域一定比局部变量的作用域范围大 B)静态(static)类别变量的生存期贯穿于整个程序的运行期间 C)函数的形参都属于全局变量 D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值 34、请阅读以下程序: main() {inta=5,b=0,c=0; if(a=b+c)printf("***\n"); elseprintf("$$$\n"); } 以上程序() A)有语法错误不能通过编译B)可以通过编译但不能通过连接` C)输出***D)输出$$$ 35、执行以下程序段时() x=-1;do{x=x*x;}while(! x); A)循环体将执行一次B)循环体将执行两次 C)循环体将执行无限次D)系统将提示有语法错误 36、有如下说明 inta[10]={1,2,3,4,5,6,7,8,9,10},*P=a; 则数值为9的表达式是 A)*P+9B)*(P+8)C)*P+=9D)P+8 37、有如下程序 #defineN2 #defineMN+1 #defineNUM2*M+1 main() {inti; for(i=1;i<=NUM;i++)printf("%d\n",i); } 该程序中的for循环执行的次数是 A)5B)6C)7D)8 38、以下程序的输出为() structst {intx;int*y;}*p; intdt[4]={10,20,30,40}; structstaa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]}; main() {p=aa; printf("%d",++p->x); printf("%d",(++p)->x); printf("%d",++(*p->y)); } A)102020B)506021 C)516021D)607031 39、若x是int型变量,且有下面的程序片段: for(x=3;x<6;x++)printf((x%2)? ("**%d"): ("##%d\n"),x); 上面程序片段的输出结果是 A)**3B)##3C)##3D)**3##4 ##4**4*4##5**5 **5##5 40、有以下程序 intfun(intx,inty,int*cp,int*dp) {*cp=x+y;*dp=x-y;} main() {inta,b,c,d; a=30;b=50;fun(a,b,&c,&d); printf("%d,%d\n",c,d); } 输出结果是 A)50,30B)30,50 C)80,-20D)80,20 41.设int类型的数据长度为2个字节,则unsignedint类型数据的取值范围是()。 A.0至255B.0至65535 C.-32768至32767D.-256至255 42.以下叙述正确的是()。 A.C语言本身没有输入输出语句 B.C程序的每行中只能写一条语句 C.在C程序中,main函数必须位于程序的最前面 D.在对一个C程序进行编译的过程,可发现注释中的拼写错误 43.以下程序的输出结果是()。 main() {intx=10,y=10; printf("%d%d\n",x--,--y);} A.1010B.99 C.910D.109 44.在C语言中,要求参加运算的数必须是整数的运算符是()。 A./B.! C.%D.== 45.有如下定义的变量和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是()。 inta1,a2;charc1,c2; scanf(“%d%d”,&a1,&a2);scanf(“%c%c”,&c1,&c2); A.10□20AB C.10□20 46.运行以下程序时,从键盘输入7654 voidmain(){ intc; while((c=getchar())! ='\n') switch(c-'4') {case0: case1: putchar(c+4); case2: putchar(c+3);break; case3: putchar(c+2); default: putchar(c+1); }} A.7654B.99987 C.989988D.9899887 47.下面的程序()。 main(){ intx=0,y=0,z=0; if(x=y+z)printf("****"); elseprintf("####");} A.有语法错误不能通过编译B.输出**** C.可以通过编译,但是不能通过连接,因而不能运行D.输出#### 48.数组名作为函数参数时被处理为()。 A.该数组的长度B.该数组的首地址 C.该数组的所有元素的值D.该数组的第一个元素 49、若有数学公式 ,其正确的C语言表达式是()。 A.sqrt(fabs(cos(x*3.14/180)))B.sqrt(fabs(cos(x*π/180))) C.sqrt(|cos(x)|)D.sqrt(|cos(x*3.14/180)|) 50.执行下列程序时输入: 1234567,程序的运行结果为()。 main(){ intx,y; scanf("%2d%*2d%2d",&x,&y); printf("%d\n",x+y);} A.17B.46C.68D.语法错误 51.已知字母a的ASCII码为97,下面的程序输出是()。 voidmain(){ charc1,c2; c1='a'+'6'-'2'; c2='a'+6-'3'; printf("%c,%d\n",c2,c1);} A.输出格式有误不能通过编译B.d,e C.100,101D.d,101 52.下面程序中()。 (每行前面数字为行号) 1main() 2{inti; 3floata[8]={0.0}; 4for(i=0;i<8;i++)scanf("%f",&a[i]); 5for(i=1;i<8;i++)a[0]=a[0]+a[i]; 6printf("%f,",a[0]);} A.没有错误B.第3行有错误C.第5行有错误D.第6行有错误 53.若有以下说明和语句,则()不是字符串strcpy的正确调用。 char*str1="copy",str2[10],*str3="hijkmn",*str4,*str5="abcd"; A.strcpy(str2,str1);B.strcpy(str3,str1); C.strcpy(str4,str1);D.strcpy(str5,str1); 54.执行下列语句后,输出值为() #include #defineM5 #defineNM+1 #defineNNN*N/2 main(){ printf("%d\n",NN);} A.8B.10C.12D.18 55.以下的程序输出的结果是()。 voidmain(){ inti; for(i=0;i<=3;i++){ if(i%2)putchar('<'); elsecontinue; putchar('>');} putchar('#');} A.<><><>#B.><><><#C.<><>#D.><><# 56.若有如下结构体定义: structexample{intx;inty;}; 则()是正确的引用或定义。 A.structexamplev=10;B.examplev;v.x=10; C.structv;v.x=10;D.structexamplev={10}; 57.下述的程序输出结果是()。 voidmain(){ chara=3,b=6,c; c=a^b<<2; printf("\n%d",c);} A.27B.10C.20D.28 58.以下是关于数组的描述,其中不正确地是()。 A.数组是有序数据的集合,数组中的每一个元素都属于同一个数据类型; B.在对全部数组元素赋初值时,可以不指定数组的长度; C.inta[10],*p=a;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 练习题 答案