第五章 选择语句《C语言程序设计教程》(清华大学出版社第三版)章节关过卷

2025-04-23
| 2份
| 15页
| 138人阅读
| 1人下载

内容正文:

<C语言程序设计教程>清华大学出版社(第3版) 第五章 选择结构程序设计 章节过关卷 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 选择题(共10题,每小题2分,共20分) 1、 若有以下定义int a=5,b=3,s=0;下列语句中,语法正确的是 : A. B. if a>b printf(“ ”); else s=a+b; C. if(a>b); printf(“ ”); else s=a+b; D. If (a>b) printf(“ ”); else s=a+b; E. if (a>b) printf(“ ”); else s=a+b; 【答案】D 【解析】A选项if后面条件没有加括号;B选项if else中间不能有语句,产生语法错误;C选项if为大写。故选D。 2、 若有语句int x=1,y=2,z=-1;则下列表达式的结果是 : (x+1,y+=2,x+y) -x++&&y||++z !(x--)||++z&&++y A.6,1,1 B.5,1,0 C.6,1,0 D.5,1,1 【答案】B 【解析】(x+1,y+=2,x+y)为逗号表达式,从左至右运算,最后一个表达式的值做为整个表达式的值,注意y+=2改变了y的值,所以表达式(x+1,y+=2,x+y)的值为5; -x++&&y||++z为逻辑表达式,从左至右运算,先计算-x++&&y的值,得到的值在与++z进行逻辑或运算,(注意如果-x++&&y的值为真则不用进行++z的计算,取决于逻辑或运算规则);!(x--)||++z&&++y为逻辑表达式,(!(x--))||(++z&&++y),整体看成逻辑或表达式,从左至右计算。故选B。 3、 有以下程序段,则输出结果是 : int m=4,n=27,t=1; if(m>n) t=m;m=n;n=t; printf(“m=%d,n=%d ”,m,n); A. m=27,n=4 B.m=4,n=27 C.m=27,n=1 D.m=4,n=1 【答案】C 【解析】if后面只能接一条语句,题目中if后面只有t=m;一条语句,执行条件m>n不成立,m=n;n=t;两条语句扔要执行。故选C。 4、下列程序段的运行结果是 : int x=4; if(x++>4) if(++x>=5) ; printf(“%d ”,x++); A.4 B.5 C.6 D.7 【答案】B 【解析】第一条if语句嵌套第二条语句,要注意执行完第一条if后,x要加1。故选B。 5、若有语句if(x%2) x++;则下列语句中,与x%2条件不等价的是 : A.x%2==1 B.!(x%2==0) C.x%2!=0 D.!( x%2==1) 【答案】D原创精品资源学科网独家享有版权,侵权必究! 【解析】题目中x%2是x为偶数时为假,将偶数带入选项中不符的不等价,故选D。 6、 下列程序段的运行结果是 : float f=5.45; int a=8,b=-3,t=0; if(!b) if(a>(int)f) if(a<b) t=1; else t=-1; A.0 B.-1 C.1 D.程序出错 【答案】A 【解析】else总是和最近的且未被配对的if进行配对,题目中else与第三个if进行配对,第一个if不成立,则不执行后面语句,故选A。 7、 下列程序段的运行结果是 : int a=50; if(a>’0’>’1’) printf(“##”); else printf(“%%”); A.## B.% C.% % D.##%% 【答案】B 【解析】关系运算符从左至右运算,先两两进行比较,得出的结果在与后面的进行比较,故选B。 8、 若有以下定义int a,b;float c;char d;变量均正确赋值,下列语句中,语法正确的是 : A. B. switch a+b { case 1: a++; case 2:b++; case 3:d++; } C. switch (a+1) { case a: a++; case b:b++; case d:d++; } D. switch (d) { case ‘C’: a++; case ‘B’:b++; case ‘c’:a++;b++; } E. switch (a+b) { case ‘A’: a++; case ‘B’:b++; case ‘C’:d++; } 【答案】C 【解析】A选项中,switch后表达式没有加括号;B选项中,case后面不能是变量;D选项中,switch表达式的数据类型要和case后面常量的数据类型保持一致。故选C。 9、 下列程序段的运行结果是 : int a=11,b=64 ,s=0; if(b>a) s=b-a; s=a+b; else s=a-b; A. 语法错误 B. 53 C. -53 D. 75 【答案】A 【解析】if和else中间不能有其它语句,故选A。 10、 下列语句中说法正确的是 : A. Switch后表达式的类型可以和case后表达式或常量类型不一致。 B. case后可以是任何类型表达式。 C. case语句后面必须要有break。 D. 不同的case可以共用一个语句组。 【答案】D 【解析】A选项A.Switch后表达式的类型可以和case后表达式或常量类型要一致。B选项case后只能是整型、字符型或者枚举型。C选项case语句后面可以有break。原创精品资源学科网独家享有版权,侵权必究! 2、 填空题(共10空,每空2分,共20分) 1、 若有语句if(a<b) t=a,a=b,b=t;的功能是 。 【答案】a<b成立,则交换a,b的值 2、若有语句int a=49,b=27;char ch=’A’;则表达式a>’3’||ch<a&&!(b>>5)的值是 。 【答案】0 3、 写出下列语句的C语言表达式 c1)x<-1或56≤x<100 2)a,b为一个为正,一个为负 3)m是一个两位数且个位为3的正整数 【答案】x<-1||x>=56&&x<100 a*b<0 m>=10&&m<=99&&m%10==3 4、若有定义语句int a=1,b=2,c=3,d=4;则执行表达式b*=a<b&&-(d-=c)||++c表达式的值为 ,a的值为1,b的值为2,c 的值为 ,d的值为 。 【答案】2 3 1 5、若有语句int x=5,y=5,z;执行语句z=x++>y?++x:y+x;则z的值为 【答案】11 6、 若有语句 a>b?a>c?a:c:b>c?b:c;的功能是 。 【答案】求a,b,c中的最大数 3、 程序运行题(共5题,每小题3分,共15分) 1、 下列程序运行的结果是 。 #include<stdio.h> void main() { int a=12; unsigned b=-1; if(a>b) printf(“a>b ”); printf(“a<b ”); } 【答案】a<b 2、 下列程序运行的结果是 。 #include<stdio.h> void main() { int a=1,b=2,c=3; a<<=3; b*=a; printf(“a=%d,b=%d,”,a,b); printf(“c=%d ”,b>=c?’0’:0);} 【答案】a=8,b=16,c=48 3、 下列程序运行的结果是 。原创精品资源学科网独家享有版权,侵权必究! #include<stdio.h> #include<math.h> void main() { int x=8,y=13,z=9,t; float f1=3.54; if(y>x) if(y>z) t=floor(f1); else t=(int)f1; else if(y>z) t=x*z; printf(“t=%d ”,t);} 【答案】t=3 4、 下列程序运行的结果是 。 #include<stdio.h> void main() { int k=7,m=0,n=0; switch(k&2) {case 0:m++; case 1:m++;n++; case 2:m+=n; case 3:n+=m; default:m++;n--; } printf(“m=%d n=%d ”,m,n);} 【答案】m=1,n=-1 5、 下列程序运行的结果是 。 #include<stdio.h> void main() { char ch; int n1=0,n2=1; ch=getchar(); switch(ch) { case ‘A’: switch(n1==0)原创精品资源学科网独家享有版权,侵权必究! { case 0:printf(“1#”);break; case 1:printf(“2##”);break; default:printf(“3###”);break;} case ‘B’: switch(!n2) { case 0:printf(“1*”); case 1:printf(“2**”);break; default:printf(“3***”);break;} default: printf(“&&&”); } } 从键盘输入BC<回车> 【答案】1*2**&&& 4、 程序填空题(共5空,每空5分,共25分) 1、根据以下函数关系,对输入的每个x值,计算出相应的y值。 x y x<=0 y=x5-3 0<x<=10 y=ex+3 10<x<=20 y=7*x-1 #include<stdio.h> #include<math.h> void main() { float y; int x,var,f=1; scanf(“%d”,&x); if(x<=0) else var= switch(var) { case -1:y=pow(x,5)-3;break; case 0:y= ;break; case 1:y=7*x-1; break; default: f=0; break; }原创精品资源学科网独家享有版权,侵权必究! if(f==1) printf(“y=%f”,y); else printf(“error”); } 【答案】var=-1; (x-1)/10; exp(x)+3 2、根据输入的三角形的三条边,判断是否能组成三角形,若可以则输出它的面积和三角形的类型。三角形面积公式如下: s=(a+b+c)/2 area= #include <stdio.h> #include<math.h> main() { float a,b,c; float s,area; int flag; scanf(“%f,%f,%f”,&a,&b,&c); if (a+b>c&&a+c>b&&b+c>a) { s=(a+b+c)/2; area= sqrt(s*(s-a)*(s-b)*(s-c)); printf(“三角形面积为%.2f ”,area); flag= ; if(a==b&&b==c) printf(“可组成等边三角形 ”); else if( a==b||b==c||a==c) if(flag) printf(“可组成等腰直角三角形 ”); else printf(“可组成一般等腰三角形 ”); else if( ) printf(“可组成一般直角三角形 ”); else printf(“可组成一般的三角形 ”); }原创精品资源学科网独家享有版权,侵权必究! else printf(“不能组成的三角形 ”); } 【答案】a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a flag 5、 程序改错题(共20分) 1、计算某年某月某日是该年的第几天,现有2处错误,请在找出错误语句,并写出完整的正确语句。(找出错误2分,改正错误3分) L1 #include<stdio.h> L2 void main() L3 { int day,month,year,sum,f; L4 scanf("%d-%d-%d",&year,&month,&day); L5 sum=0; L6 if(year%4==0&&year%100!=0||year%400==0) f=1; L7 else f=0; L8 switch(month-1) L9 { case 11: sum+=30; L10 case 10: sum+=31; L11 case 9: sum+=30; L12 case 8: sum+=31; L13 case 7: sum+=31; L14 case 6: sum+=30; L15 case 5: sum+=31; L16 case 4: sum+=30; L17 case 3: sum+=31; L18 case 2: sum+=28; L19 case 1: sum+=31; } L20 if(f==1) L21 sum++; L22 printf("是%d年的第%d天 ",year,sum); } 【答案】 L5 sum=day; 或者 L22 printf("是%d年的第%d天 ",year,sum+day); L20 if(f==1&&month>2) 或者L20 if(f==1&&month>=3) 原创精品资源学科网独家享有版权,侵权必究! 2、 某书店有历史书分为上下册,可以成套卖(上下册为一套),也单本出售。若买套数超过30套每套90元,不足30套每套100元。只买上册每本55元,只买下册每本60元。以下功能是输入所买书籍上册s和下册x的册数,求应付款m。 L1 #include<stdio.h> L2 void main() L3 { int s,x,t,m; L4 printf("请输入所买书籍上册s和下册x的册数: "); L5 scanf("%d %d",&s,&x); L6 if(s<x) L7 { m=(s-x)*55; L8 t=x; L9 } L10 else { m=(x-s)*60; L11 t=s; L12 } L13 if(t>=30) m+=t*90; L14 m+=t*100 ; L15 printf("money=%d ",m); L16 } 【答案】L6 if(s>=x) 或者 L6 if(s>x) L14 else m+=t*100 ; 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$ <C语言程序设计教程>清华大学出版社(第3版) 第五章 选择结构程序设计 章节过关卷 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 选择题(共10题,每小题2分,共20分) 1、 若有以下定义int a=5,b=3,s=0;下列语句中,语法正确的是 : A. B. if a>b printf(“ ”); else s=a+b; C. if(a>b); printf(“ ”); else s=a+b; D. If (a>b) printf(“ ”); else s=a+b; E. if (a>b) printf(“ ”); else s=a+b; 2、 若有语句int x=1,y=2,z=-1;则下列表达式的结果是 : (x+1,y+=2,x+y) -x++&&y||++z !(x--)||++z&&++y A.6,1,1 B.5,1,0 C.6,1,0 D.5,1,1 3、 有以下程序段,则输出结果是 : int m=4,n=27,t=1; if(m>n) t=m;m=n;n=t; printf(“m=%d,n=%d ”,m,n); A. m=27,n=4 B.m=4,n=27 C.m=27,n=1 D.m=4,n=1 4、下列程序段的运行结果是 : int x=4; if(x++>4) if(++x>=5) ; printf(“%d ”,x++); A.4 B.5 C.6 D.7 5、若有语句if(x%2) x++;则下列语句中,与x%2条件不等价的是 : A.x%2==1 B.!(x%2==0) C.x%2!=0 D.!( x%2==1) 6、 下列程序段的运行结果是 : float f=5.45; int a=8,b=-3,t=0; if(!b) if(a>(int)f) if(a<b) t=1; else t=-1; A.0 B.-1 C.1 D.程序出错 7、 下列程序段的运行结果是 : int a=50; if(a>’0’>’1’) printf(“##”); else printf(“%%”); 原创精品资源学科网独家享有版权,侵权必究! A. ## B.% C.% % D.##%% 8、 若有以下定义int a,b;float c;char d;变量均正确赋值,下列语句中,语法正确的是 : A. B. switch a+b { case 1: a++; case 2:b++; case 3:d++; } C. switch (a+1) { case a: a++; case b:b++; case d:d++; } D. switch (d) { case ‘C’: a++; case ‘B’:b++; case ‘c’:a++;b++; } E. switch (a+b) { case ‘A’: a++; case ‘B’:b++; case ‘C’:d++; } 9、 下列程序段的运行结果是 : int a=11,b=64 ,s=0; if(b>a) s=b-a; s=a+b; else s=a-b; A. 语法错误 B. 53 C. -53 D. 75 10、 下列语句中说法正确的是 : A. Switch后表达式的类型可以和case后表达式或常量类型不一致。 B. case后可以是任何类型表达式。 C. case语句后面必须要有break。 D. 不同的case可以共用一个语句组。 2、 填空题(共10空,每空2分,共20分) 1、 若有语句if(a<b) t=a,a=b,b=t;的功能是 。 2、若有语句int a=49,b=27;char ch=’A’;则表达式a>’3’||ch<a&&!(b>>5)的值是 。 3、 写出下列语句的C语言表达式 c1)x<-1或56≤x<100 2)a,b为一个为正,一个为负 3)m是一个两位数且个位为3的正整数 4、若有定义语句int a=1,b=2,c=3,d=4;则执行表达式b*=a<b&&-(d-=c)||++c表达式的值为 ,a的值为1,b的值为2,c 的值为 ,d的值为 。 5、若有语句int x=5,y=5,z;执行语句z=x++>y?++x:y+x;则z的值为 6、 若有语句 a>b?a>c?a:c:b>c?b:c;的功能是 。 3、 程序运行题(共5题,每小题3分,共15分) 1、 下列程序运行的结果是 。 #include<stdio.h> void main() { int a=12; 原创精品资源学科网独家享有版权,侵权必究! unsigned b=-1; if(a>b) printf(“a>b ”); printf(“a<b ”); } 2、 下列程序运行的结果是 。 #include<stdio.h> void main() { int a=1,b=2,c=3; a<<=3; b*=a; printf(“a=%d,b=%d,”,a,b); printf(“c=%d ”,b>=c?’0’:0);} 3、 下列程序运行的结果是 。 #include<stdio.h> #include<math.h> void main() { int x=8,y=13,z=9,t; float f1=3.54; if(y>x) if(y>z) t=floor(f1); else t=(int)f1; else if(y>z) t=x*z; printf(“t=%d ”,t);} 4、 下列程序运行的结果是 。 #include<stdio.h> void main() { int k=7,m=0,n=0; switch(k&2) {case 0:m++; case 1:m++;n++; case 2:m+=n; case 3:n+=m;原创精品资源学科网独家享有版权,侵权必究! default:m++;n--; } printf(“m=%d n=%d ”,m,n);} 5、 下列程序运行的结果是 。 #include<stdio.h> void main() { char ch; int n1=0,n2=1; ch=getchar(); switch(ch) { case ‘A’: switch(n1==0) { case 0:printf(“1#”);break; case 1:printf(“2##”);break; default:printf(“3###”);break;} case ‘B’: switch(!n2) { case 0:printf(“1*”); case 1:printf(“2**”);break; default:printf(“3***”);break;} default: printf(“&&&”); } } 从键盘输入BC<回车> 4、 程序填空题(共5空,每空5分,共25分) 1、根据以下函数关系,对输入的每个x值,计算出相应的y值。 x y x<=0 y=x5-3 0<x<=10 y=ex+3 10<x<=20 y=7*x-1 #include<stdio.h> #include<math.h> void main() { float y; int x,var,f=1;原创精品资源学科网独家享有版权,侵权必究! scanf(“%d”,&x); if(x<=0) else var= switch(var) { case -1:y=pow(x,5)-3;break; case 0:y= ;break; case 1:y=7*x-1; break; default: f=0; break; } if(f==1) printf(“y=%f”,y); else printf(“error”); } 2、根据输入的三角形的三条边,判断是否能组成三角形,若可以则输出它的面积和三角形的类型。三角形面积公式如下: s=(a+b+c)/2 area= #include <stdio.h> #include<math.h> main() { float a,b,c; float s,area; int flag; scanf(“%f,%f,%f”,&a,&b,&c); if (a+b>c&&a+c>b&&b+c>a) { s=(a+b+c)/2; area= sqrt(s*(s-a)*(s-b)*(s-c)); printf(“三角形面积为%.2f ”,area); flag= ; if(a==b&&b==c) printf(“可组成等边三角形 ”); else if( a==b||b==c||a==c)原创精品资源学科网独家享有版权,侵权必究! if(flag) printf(“可组成等腰直角三角形 ”); else printf(“可组成一般等腰三角形 ”); else if( ) printf(“可组成一般直角三角形 ”); else printf(“可组成一般的三角形 ”); } else printf(“不能组成的三角形 ”); } 5、 程序改错题(共20分) 1、计算某年某月某日是该年的第几天,现有2处错误,请在找出错误语句,并写出完整的正确语句。(找出错误2分,改正错误3分) L1 #include<stdio.h> L2 void main() L3 { int day,month,year,sum,f; L4 scanf("%d-%d-%d",&year,&month,&day); L5 sum=0; L6 if(year%4==0&&year%100!=0||year%400==0) f=1; L7 else f=0; L8 switch(month-1) L9 { case 11: sum+=30; L10 case 10: sum+=31; L11 case 9: sum+=30; L12 case 8: sum+=31; L13 case 7: sum+=31; L14 case 6: sum+=30; L15 case 5: sum+=31; L16 case 4: sum+=30; L17 case 3: sum+=31; L18 case 2: sum+=28;原创精品资源学科网独家享有版权,侵权必究! L19 case 1: sum+=31; } L20 if(f==1) L21 sum++; L22 printf("是%d年的第%d天 ",year,sum); } 2、 某书店有历史书分为上下册,可以成套卖(上下册为一套),也单本出售。若买套数超过30套每套90元,不足30套每套100元。只买上册每本55元,只买下册每本60元。以下功能是输入所买书籍上册s和下册x的册数,求应付款m。 L1 #include<stdio.h> L2 void main() L3 { int s,x,t,m; L4 printf("请输入所买书籍上册s和下册x的册数: "); L5 scanf("%d %d",&s,&x); L6 if(s<x) L7 { m=(s-x)*55; L8 t=x; L9 } L10 else { m=(x-s)*60; L11 t=s; L12 } L13 if(t>=30) m+=t*90; L14 m+=t*100 ; L15 printf("money=%d ",m); 原创精品资源学科网独家享有版权,侵权必究! L16 } 学科网(北京)股份有限公司 $$

资源预览图

第五章 选择语句《C语言程序设计教程》(清华大学出版社第三版)章节关过卷
1
第五章 选择语句《C语言程序设计教程》(清华大学出版社第三版)章节关过卷
2
第五章 选择语句《C语言程序设计教程》(清华大学出版社第三版)章节关过卷
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。