C语言习题1.docx
- 文档编号:18142698
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:28
- 大小:24.45KB
C语言习题1.docx
《C语言习题1.docx》由会员分享,可在线阅读,更多相关《C语言习题1.docx(28页珍藏版)》请在冰点文库上搜索。
C语言习题1
(第一页)
C语言概述、数据类型运算符表达式、顺序结构
一、选择题
1.下列叙述中,正确的是。
A.C程序中的注释只能出现在程序的开始位置和语句的后面
B.C程序书写格式严谨,要求一行内只能写一个语句
C.C程序的书写格式自由,一个语句可以写在多行上
D.用C语言编写的程序只能放在一个程序文件中
2.下列选项中,可作为合法标识符的是。
A.1mB.DataC.str+1D.i-1
3.设变量已正确定义并赋值,以下合法的C语言赋值语句是。
A.x=y==5B.x=n%2.5C.x+n=iD.x=5=4+1
4.设有定义:
intk=0;以下选项的4个表达式中与其他3个表达式的值不相同的是。
A.k++B.k+=1C.++kD.k+1
5.若有定义:
inta,b;则用语句scanf(“%d%d”,&a,&b);输入a,b的值时,不能作为输入数据分隔符的是。
A.,B.空格C.回车D.Tab键
6.C语言并不是非常严格的算法语言,在以下关于C语言的不严格的叙述中,错误的是。
A.任何不同数据类型都不可以通用
B.有些不同类型的变量可以在同一个表达式中运算
C.在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型
D.同一个运算符号在不同的场合可以有不同的含义
7.下列常数中不能作为C语言的常量的是。
A.0Xa6B.3.4e-3C.3e5D.0683
8.下面不是C语句的是。
A.int;B.;C.a=1,b=5D.{;}
9.设x、y、z为整型变量,若从键盘给x、y、z输入数据,则正确的输入语句
(第2页)
是。
A.scanf(“%d%d%d”,&a,&b,&c);B.scanf(“%d%d%d”,a,b,c);
C.scanf(“%D%D%D”,&a,&b,&c);D.scanf(“%d%d%d”,&a;&b;&c);
10.若变量已正确定义,现要将a和b中的数据进行交换,下面不正确的是。
A.a=a+b,b=a-b,a=a-b;B.t=a,a=b,b=t;
C.a=t,t=b,b=a;D.t=b,b=a,a=t;
二、填空题
1.在C语言中,用关键字定义基本整型变量,用关键字定义单精度实型变量,用关键字定义双精度实型变量。
2.若s是int型变量,且s=6,则表达式s%2+(s+1)%2的值为。
3.条件“0 4.现有定义inta;doubleb;floatk;,则表达式a/b+c-k的值的数据类型为。 5.若有定义intx=3,y=2;floata=2.5,b=3.5;,则表达式(x+y)%2+(int)a/(int)b的值为。 6.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值为。 7.在C语言中整数可用进制数、进制数和进制数三种数制表示。 8.实型常量有两种表示方式: 小数形式和。 9.表达式(a=5-3/2,a*6),a+10的值为。 10.若有定义inta=1234;,则使用printf(“%2d”,a);输出值为。 三、阅读下列程序,写出运行结果 1、执行以下程序后的输出结果是。 #include main() {inta=10; a=(3*5,a+4); printf(“a=%d\n”,a); } 2、以下程序的输出结果是。 (第3页) #include main() {inti=4,a; a=i++; printf(“a=%d,i=%d\n”,a,i); } 3、以下程序的输出结果是。 #include main() {intx=023; printf(“%d\n”,--x); } 4、以下程序的输出结果是。 #include main() {charch=’A’; intnum1=ch; floatnum2=num1; printf(“%f”,num2); } 5、以下程序的输出结果是。 #include main() {inta=5,b=4,c=6,d; printf(“%d\n”,d=a>b? (a>c? a: c): (b)); } 6、以下程序的输出结果是。 #include (第4页) main() {inta=1,b=2; printf(“%d\n”,a=a+1,a+6,b+2); } 7、以下程序的输出结果是。 #include main() {inta=1,b=2; printf(“%d\n”,(a=a+1,a+6,b+2)); } 8、以下程序的输出结果是。 #include main() {intx=’d’; printf(“%c\n”,’A’+(x-‘a’+1)); } 9、以下程序的输出结果是。 #include main() {inta=010,b=10,c=0x10; printf(“%d,%d,%d\n”,a--,++b,c++); } 10、以下程序的输出结果是。 #include main() {floatd=3.2;intx,y; x=6.8;y=(x+5.8)/5; printf(“%f\n”,d/y);} (第5页) 分支结构 一、选择题: 1.若x为int类型,则下面与逻辑表达式! x等价的C语言关系表达式是______。 A.x==1B.x! =1C.x==0D.x! =0 2.能正确表示逻辑关系: “a≥5或a≤1”的C语言表达式是_______。 A.a>=5ora<=-1B.a>=5|a<=-1 C.a>=5&&a<=-1D.a>=5||a<=-1 3.if语句的控制条件是________。 A.只能用关系表达式B.只能用关系表达式或逻辑表示式 C.只能用逻辑表达式D.可以用任何表达式 4.在C语言中,逻辑值“真”用_____表示。 A.非0的数B.正数C.非0整数D.true 5.有如下程序段,执行该程序段后,x的值为______。 inta=14,b=15,x; charc=‘A’; x=(a&&b)&&(c<‘B’); A.trueB.falseC.0D.1 6.在下列说法中正确的是______。 A.在switch语句中一定要使用break语句 B.bread语句是switch语句的一部分 C.break语句只能用于switch语句 D.在switch语句中不一定要使用break语句 7.最适合解决选择结构“若a>=0,则b=1;否则b=0”的语句是______. A.ifB.if…elseC.switchD.嵌套的if…else 8.设inta=0,b=0,c=0;c=++a||b++;则a、b、c的值分别是______。 A.1、0、1B.1、1、1C.1、1、0D.0、1、0 9.C语言对嵌套if语句的规定是: else总是与______配对。 A.其之前最近的ifB.第一个if C.缩进位置相同的ifD.其之前最近且不带else的if 10.若有定义: floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是______。 A.switch(x)B.switch(int(x)); {case1.0: printf(“*\n”);{case1: printf(“*\n”); case2.0: printf(“**\n”);}case2: printf(“**\n”);} C.switch(a+b)D.switch(a+b); {case1: printf(“*\n”);{case1: printf(“*\n”); case2: printf(“**\n”);}casec: printf(“**\n”);} 二、填空题: 1.if语句控制表达式只有其值为______时表示逻辑“真”,其值为______表示逻辑“假”。 (第6页) 2.if(! k)a=3;语句中! k可以改写为______,使其功能不变。 3.设intx=2,y=1;则表达式(! x||y--)的值是_____。 4.完善程序,从键盘输入字符,若是数字字符,则转换成数字后显示出来。 #include intmain(void) {intc; c=getchar(); if(____________)____________; printf(“%d”,c); } 5.分析下列程序,写出运行结果。 #include intmain(void) {intx=1,y=2,z=3; if(x--)y++,z++; elsey--;z--; printf(“%d,%d,%d\n”,x,y,z) ; } 6.运行下列程序,写出运行结果。 #include intmain(void) {intx=100,a=10,b=20,ok1=10,ok2=5; if(a>b)if(b! =15)if(! ok1)x=1; elseif(! ok2)x=10; elsex=20; printf(“x=%d\n”,x); } 7.运行下列程序,从键盘输入30后,写出运行结果。 #include intmain(void) {inta; scanf(“%d”,&a); if(a>20)printf(“%d”,a); if(a>10)printf(“%d\n”,a); } 8.以下两条if语句可合并成一条if语句,即____________________________________。 if(a<=b)x=1; elsey=2; if(a>b)printf(“***y=%d\n”,y) ; elseprintf(“***x=%d\n”,x); 9.若变量已正确定义,有以下程序段,其输出结果为________________。 (第7页) inta=3,b=5,c=7; if(a>b)a=b;c=a; if(c! =a)c=b; printf(“%d,%d,%d\n”,a,b,c); 10.若有说明语句: intw=1,x=2,y=3,z=4;,则表达式w>x? w: z>y? z: x的值是______。 三、阅读下列程序,写出运行结果: 1.运行下面程序后,则输出结果是。 #include intmain(void) {inta=0,b=1,c=2,d; d=! a&&! (--b)||! c++; printf(“%d\n”,c); } 2.有如下程序,其输出结果是。 #include intmain(void) {floatx=5.0,y; if(x<0.0) y=0.0; else if(x<10.0)y=1.0/x; elsey=1.0; printf(“%f\n”,y) ; } 3.有以下程序,若从键盘上输入7,则输出结果是。 #include intmain(void) {intx; scanf(“%d”,&x); if(x--<7)printf(“%d”,x); elseprintf(“%d”,x++); } 4.写出下列程序的运行结果。 #include intmain(void) {inta=0,i=1 ; switch(i) {case0: case1: a+=2; case2: (第8页) case3: a+=3; default: a+=7;} printf(“%d\n”,a); } 运行结果为。 5.以下程序的输出结果为。 #include intmain(void) {intx=1,y=0,a=1,b=0; switch(x) {case1: switch(y) {case0: a++; case1: b++;break;} case2: a++;b++;break;} printf(“a=%d,b=%d\n”,a,b); } 6.运行下列程序,从键盘输入字符B后,写出运行结果。 #include intmain(void) {charch; scanf(“%c”,&ch); ch=(ch>=‘A’&&ch<=‘Z’)? (ch+32): ch; printf(“%c=%d\n”,ch,ch); } 7.运行下列程序,从键盘输入2008后,写出运行结果。 #include intmain(void) {intyear,leap=0; scanf(“%d”,&year); if((year%4==0&&year%100! =0)||(year%400==0))leap=1; if(leap)printf(“%disaleapyear\n”,year); elseprintf(“%disnotaleapyear\n”,year); } 8.运行下列程序,从键盘输入0后,写出运行结果。 #include intmain(void) {intx,y; scanf(“%d”,&x) ; y=-1 ; if(x ! =0) if(x>0)y=1 ; elsey=0 ; (第9页) printf(“y=%d”,y); } 9.分析下列程序,写出运行结果。 #include intmain(void) {intn=‘c’; switch(n++) {case‘a’: case‘A’: case‘b’: case‘B’: printf(“good”);break; case‘c’: case‘C’: printf(“pass”); case‘d’: case‘D’: printf(“warn”);break; default: printf(“error”);break;} } 10.运行下列程序,写出运行结果。 #include intmain(void) {inti=1;s=3; do {s+=i++; if(s%7==0)continue; else++i; }while(s<15); printf(“%d”,i); } 循环结构 一、选择题 1.现已定义整型变量inti=1;执行循环语句“while(i++<5);”后,i的值为()。 A.1B.5C.6D.以上三个答案均不正确 2.若i为整型变量,则以下循环执行的次数是()。 for(i=0;i<=5;i++) printf("%d",i++); A.5次B.2次C.3次D.6次 3.以下语句的输出结果为()。 for(k=0;k<5;++k) {if(k==3)continue; printf("%d",k); } A.012B.0124C.01234D.没有输出结果 4.下面程序运行后,关于a、b、c的值应输出为()。 #include"stdio.h" (第10页) main() {inta=1,b=2,c=1,t; while(a printf("%d,%d,%d",a,b,c); } A.1,2,0B.2,1,0C.1,2,1D.2,1,1 5.下面程序运行后,关于a、b、c的值应输出为()。 #include"stdio.h" main() {inta=1,b=2,c=1,t; do{t=a;a=b;b=t;c--;}while(a printf("%d,%d,%d",a,b,c); } A、1,2,0B、2,1,0C、1,2,1 D、2,1,1 6.有以下程序段 main() {inti=1,sum=0,n; scanf("%d",&n); do {i+=2; sum+=i; }while(i! =n); printf("%d",sum); } 若使程序的输出值为15,则应该从键盘输入的n的值是()。 A、1 B、3C、5D、7 7.以下能正确计算1×2×3×……×10的程序段是()。 A、do{i=1;s=1;B.do{i=1;s=0; s=s*i;s=s*i; i++;i++; }while(i<=10);}while(i<=10); C、i=1;s=1;D.i=1;s=0; do{s=s*i;do{s=s*i; i++;i++; }while(i<=10);}while(i<=10); 8.下列程序的运行结果是________。 () main() {inty=10; do{y--;}while(--y); printf(“%d\n”,y--);} A)-1B)1C)8D)0 (第11页) 9.若x是int型变量,且有下面的程序片段: for(x=5;x<8;x++) printf((x%2)? (“**%d”): (“##%d\n”),x); 该程序片段的输出结果是___。 A)**5##6B)##5C)##5**6##7D)**5##6**7 **7**6##7 10.下列程序段的输出结果是___。 intx=3; do{printf(“%3d”,x-=2);} while(! (--x)); A)1B)30C)1-2D)死循环 11.有以下程序,其中x、y为整型变量; for(x=0,y=0;(x<=1)&&(y=1);x++,y--); printf(“x=%d,y=%d”,x,y); 该程序的输出结果是___。 A)x=2,y=0B)x=1,y=0C)x=1,y=1D)x=0,y=0 12.有以下程序段: intn=0,p; do{scanf(“%d”,&p);n++;}while(p! =12345&&n<3); 此处do-while循环的结束条件是__。 A)p的值不等于12345并且n的值大于3B)p的值等于12345并且n的值大于等于3 C)p的值不等于12345或者n的值小于3D)p的值等于12345或n的值大于等于3 14.在下述程序中,if(i>j)语句共执行的次数是___。 main() {inti=0,j=10,k=2,s=0; for(;;) {i+=k; if(i>j) {printf(“%d”,s); break;} s+=i;} } A)4B)7C)5D)6 15.以下程序的功能是: 按顺序读入10名学生和4门课程的成绩,计算出每位学生的平均分进行输出,但运行结果不正确。 main() {intn,k;floatscore,ave; ave=0.0; for(n=1;n<=10;n++) {for(k=1;k<=4;k++) (第12页) {scanf(“%f”,&score); ave+=score/4;} printf(“NO%d: %f\n”,n,ave);} } 造成程序计算结果错误的语句行是__。 A)ave=0.0;B)for(n=1;n<=10;n++) C)ave+=score/4;D)printf(“NO%d: %f\n”,n,ave); 16.下列选项中,没有构成死循环的程序段有__。 A)inti=100;B)for(;;) while (1) {i=i%100+1; if(i>=100)break;} C)intk=0;D)ints=36; do{++k;}while(k>=0);while(s);--s; 17.t为int类型,进入下面的循环之前,t的值为0: while(t=1) {………} 则下列叙述不正确的有____。 A)循环条件恒为真B)循环控制表达式的值为1 C)循环控制表达式不合法D)循环有可能是个无限循环 18.若变量已正确定义,以下不能正确计算1+2+3+4+5的程序段有___。 A)i=1;s=1;B)i=0;s=0; dodo {s=s+i;i++;}{i++;s=s+i;} while(i<5);while(i<5); C)i=1;s=0;D)i=0;s=0; dodo {s=s+i;i++;}{s=s+i;i++;} while(i<6);while(i<=5); 19.若变量已正确定义,要求程序段完成求5! 的计算,下列选项中不能完成此操作的程序段有__(知识点6.7) A)for(i=1,p=1;i<=5;i++)p*=i; B)p=1;for(i=1;i<=5;i++)p*=i; C)i=1;p=1;while(i<=5)p*=i;i++; D)i=1;p=1;do{p*=i;i++;}while(i<=5); 20.有以下程序: main() {inti,j; for(i=3;i>=1;i--) {for(j=1;j<=2;j++)printf(“%d”,i+j); printf(“\n”);} 程序的运行结果是() (第13页) A.234B.432C.23D.45 3455433434 4523 21.以下叙述正确的是() A.do-while语句构成的循环不能用其他语句构成的循环代替 B.do-while语句构成的循环只能用break语句退出 C.用do-while语句构成的循环,在while后的表达式为非零时结束循环 D.用do-while语句构成的循环,在while后的表达式为零时结束循环 22.设有程序段 intk=10; while(k=0)k=k-1; 以下描述正确的是() A.循环体语句一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 习题