内容正文:
《编程语言基础——C语言》高等教育出版社(第五版)
第三章 分支结构程序设计 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共20小题,每题2分,共40分)
1. 能够正确表示a和b同时为正或同时为负的逻辑表达式是( )
A.(a>=0||b>=0)&&(a<0||b<0) B.(a=b>0)&&(a+b<=0)
C.a*b>0 D.(a>=0&&b>=0)&&(a<0&&b<0)
2. 逻辑运算符两侧运算对象的数据类型( )
A.只能是0或1 B.只能是0或非0正数
C.只能是整型或字符型数据 D.可以是任何类型的数据
3. 设x、y、z是int型变量,且x=3,y=4,z=5,则下列表达式值为0的是( )
A.‘x’&&‘y’ B.x<=y C.x||y+z&&y-z D.!((x<y)&&!z||1)
4. 设有语句:int x=43,y=0;char ch=‘A ’;则表达式:(x>=y&&ch<‘B’&&!y)的值是( )
A.0 B.1 C.真 D.假
5. 若希望当A的值为奇数时,表达式的值为“真”;当A的值为偶数时,表达式的值为“假’。则以下不能满足要求的表达式是( )
A.A%2==1 B.!(A%2) C.!(A%2==0) D.A%2
6. 以下不正确的if语句形式是( )
A.if(x>y&&x!=y);
B.if(x==y) x+=y;
C.if(x!=y) scanf(“%d”,&x) else scanf(“%d”,y);
D.if (x<y) {x++;y++;}
7. 已有定义语句:int x=1,y=2,z=3;,执行以下语句后x,y,z的值是( )
if(x>y)
z=x;x=y;y=z;
A.x=1,y=2,z=3 B. x=2,y=3,z=3 C. x=2,y=3,z=1 D. x=2,y=3,z=2
8. 如果c为字符型变量,判断c是否为空格不能使用( )(已知空格ASCII码为32)。
A.if(c==‘32’) B.if(c==32) C.if(c==‘\40’) D.if(c==‘ ’)
9. b为整型变量,不能正确表达数学关系10<b<15的C语言表达式是( )
A.10<b<15 B.b==11||b==12||b==13||b==14
C.b>10&&b<15 D.!(b<=10&&!(a>=15)
10. 设a=2,b=3,c=4,则表达式(a<b)+c的值是( )
A.0 B.1 C.4 D.5
11. 下列关于switch语句叙述正确的一项是( )
A.break语句只能用于switch语句
B.在switch语句中必须使用default
C.break语句必须与switch语句中的case配对使用
D.在switch语句中,可以选择是否使用break语句
12. 下列程序的执行结果是( )
main( )
{int x=0,y=1,z=0;
if(x=z=y) x=3;
printf(“%d,%d
”,x,z);}
A.3,0 B.0,0 C.0,1 D.3,1
13. 运行下面程序时,若从键盘输入“5”,则程序的输出结果是( )
main( )
{int a;scanf(“%d”,&a);
if(a++>5) printf(“%d
”,a);
else printf(“%d
”,a- -);}
A.7 B.6 C.5 D.4
14. 执行以下程序段后的输出是( )
int i=-1;
if(i<=0) printf(“&&&&&”)
else printf(“$$$$$”);
A.&&&&& B. $$$$$ C.&&&&&$$$$$ D.有语法错误,不能正确执行
15. 以下程序的输出结果是( )
mian( )
{ int m=5;
if(++m>5)
if(m++>5) printf(“%d
”,m+6);
else printf(“%d
”,m- - );
else printf(“%d
”,- -m);}
A.13 B.10 C.8 D.5
16. 以下程序的运行结果是( )
#include<stdio.h>
main( )
{int a,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf(“%d,%d”,a,b);
}
A.6,1 B.2,0 C.6,0 D.2,1
17. 当a=1,b=3,c=5,d=4时,执行以下程序段后x的值是( )
if(a<b)
if(c<d) x=1;
else
if(a<c)
if(b<d) x=2;
else x=3;
else x=6;
else x=7;
A.1 B.2 C.3 D.6
18. 以下程序的输出结果是( )
#include<stdio.h>
main( )
{ int x=2,y=-1,z=2;
if(x<y)
if(y<0) z=0;
else z=z+1;
printf(“%d
”,z);
}
A.0 B.1 C.2 D.3
19. 为了避免在嵌套的条件语句if-else中产生二义性,C语言规定else子句总是与( )配对。
A.缩排位置相同的if B.其之后最近的if
C.同一行上的if D.其之前最近且未配对的if
20. 执行下面程序后,运行结果是( )
#include<stdio.h>
mian( )
{int x=41,y=1;
if(x%3==0&&x%7==0)
{y+=x;printf(“y=%d
”,y);}
else {y=x;printf(“y=%d
”,y);}}
A.y=41 B.y=43 C.y=42 D.y=1
二、填空题(本题共10小题,每题2分,共20分)
21. C语言中用________表示逻辑值“真”,用________表示逻辑值“假”。
22. 在C语言中逻辑运算符中,__________优先级高于算数运算符。
23. switch语句后面的表达式可以是_________或字符型表达式。
24. case子句中的常量值应为_______________,同一个switch语句中,任意两个case后面常量表达式的值不能相同。C语言运行多个case共用一个执行语句。
25. 选择结构可以分为单分支、__________、__________三种情况。
26. 得到整型变量a的十位数字的表达式为_______________。
27. 设a为整型变量,则表达式:(a=3,a-1||- -a,2*a)的值是__________。
28. 已有定义:int x=3,y=4,z=5;,则表达式:!(x+y)+z-1&&y+z/2的值是___________。
29. 执行以下语句后a的值为_______________。
int a=5,b=6,w=1,x=2,y=3,z=4;
(a=w>x)&&(b=y>z);
30. 设ch是char型变量,值为‘A’,则表达式ch=(ch>=‘A’&&ch<=‘Z’)?ch+32:ch的值是_______________
三、程序运行结果题(本题共5小题,每题4分,共20分)
31. 以下程序的运行结果是【 】。
#include<stdio.h>
main( )
{int a=100,x=10,y=20,k1=5,k2=0;
if(x<y)
if(y!=10)
if(!k1) a=1;
else
if(k2) a=10;
a=-1;
printf(“%d
”,a);}
32. 以下程序的运行结果是【 】。
#include<stdio.h>
main( )
{ int x=1,y=0,a=0,b=0;
switch(x)
{ case 1:switch(y)
{case 0:a++;break;
case 1:b++;break;
}
case 2:a++;b++;break;
case 3:a++;b++;}
printf(“a=%d,b=%d
”,a,b);}
33. 以下程序的运行结果是【 】。
#include<stdio.h>
main( )
{ int a=45,b=40,c=50,d;
d=a>30? b:c;
switch(d)
| case 30 : printf("% d,",a);
case 40 : printf("% d,",b);
case 50 : printf("% d,",c);
default : printf("#");
34. 以下程序的运行结果是【 】。
#include<stdio.h>
main()
{ int a=15,b=21,m=0;
switch(a%3)
{ case 0: m++;break;
case 1: m++;
switch(b%2)
{default:m++;
case 0: m++;break;}}
printf("% d
",m);}
35. 以下程序的运行结果是【 】。
#include<stdio.h>
main()
{int k=1,m=0;
int a=10,b=10;
switch(k)
{case 1: switch(m)
{ case 0:a+=1;break;
case 1:b++;break;}
case 2: a++;b++;break;
case 3: a++;b++;}
printf("a=%d,b=%d",a,b);}
四、程序填空题(本题共2小题,每空4分,共20分)
36. 以下程序的功能是:输出x,y,z三个数中的最大者。请填空。
#include<stdio.h>
main( )
{int x=4,y=6,z=7;
int u,v;
if(【1】) u=x;
else u=y;
if(【2】) v=u;
else v=z;
printf(“v=%d”,v);}
37. 某服装店经营套服且单件出售。若一次购买不少于50套,则每套80元;若不足50套,则每套90元;只买上衣每件60元;只买裤子每条45元。以下程序的功能是读入所买上衣c和裤子t的件数,计算应付款数m。请填空。
#include<stdio.h>
mian( )
{int c,t,m;
scanf(“%d%d”,&c,&t);
if(【1】)
if(c>=50) m=c*80;
else m=c*90;
else
if(【2】)
if(t>=50) m=t*80+(c-t)*60;
else m=t*90+(c-t)*60;
else
if(【3】) m=c*80+(t-c)*45;
else m=c*90+(t-c)*45;
printf(“%d”,m);}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$
《编程语言基础——C语言》高等教育出版社(第五版)
第三章 分支结构程序设计 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共20小题,每题2分,共40分)
1. 能够正确表示a和b同时为正或同时为负的逻辑表达式是( )
A.(a>=0||b>=0)&&(a<0||b<0) B.(a=b>0)&&(a+b<=0)
C.a*b>0 D.(a>=0&&b>=0)&&(a<0&&b<0)
答案:C
2. 逻辑运算符两侧运算对象的数据类型( )
A.只能是0或1 B.只能是0或非0正数
C.只能是整型或字符型数据 D.可以是任何类型的数据
答案:D
3. 设x、y、z是int型变量,且x=3,y=4,z=5,则下列表达式值为0的是( )
A.‘x’&&‘y’ B.x<=y C.x||y+z&&y-z D.!((x<y)&&!z||1)
答案:D
4. 设有语句:int x=43,y=0;char ch=‘A ’;则表达式:(x>=y&&ch<‘B’&&!y)的值是( )
A.0 B.1 C.真 D.假
答案:B
5. 若希望当A的值为奇数时,表达式的值为“真”;当A的值为偶数时,表达式的值为“假’。则以下不能满足要求的表达式是( )
A.A%2==1 B.!(A%2) C.!(A%2==0) D.A%2
答案:B
6. 以下不正确的if语句形式是( )
A.if(x>y&&x!=y);
B.if(x==y) x+=y;
C.if(x!=y) scanf(“%d”,&x) else scanf(“%d”,y);
D.if (x<y) {x++;y++;}
答案:C 。缺少分号。
7. 已有定义语句:int x=1,y=2,z=3;,执行以下语句后x,y,z的值是( )
if(x>y)
z=x;x=y;y=z;
A.x=1,y=2,z=3 B. x=2,y=3,z=3 C. x=2,y=3,z=1 D. x=2,y=3,z=2
答案:B。注意if的范围。
8. 如果c为字符型变量,判断c是否为空格不能使用( )(已知空格ASCII码为32)。
A.if(c==‘32’) B.if(c==32) C.if(c==‘\40’) D.if(c==‘ ’)
答案:A
9. b为整型变量,不能正确表达数学关系10<b<15的C语言表达式是( )
A.10<b<15 B.b==11||b==12||b==13||b==14
C.b>10&&b<15 D.!(b<=10&&!(a>=15)
答案:A
10. 设a=2,b=3,c=4,则表达式(a<b)+c的值是( )
A.0 B.1 C.4 D.5
答案:D
11. 下列关于switch语句叙述正确的一项是( )
A.break语句只能用于switch语句
B.在switch语句中必须使用default
C.break语句必须与switch语句中的case配对使用
D.在switch语句中,可以选择是否使用break语句
答案:D
12. 下列程序的执行结果是( )
main( )
{int x=0,y=1,z=0;
if(x=z=y) x=3;
printf(“%d,%d
”,x,z);}
A.3,0 B.0,0 C.0,1 D.3,1
答案:D
13. 运行下面程序时,若从键盘输入“5”,则程序的输出结果是( )
main( )
{int a;scanf(“%d”,&a);
if(a++>5) printf(“%d
”,a);
else printf(“%d
”,a- -);}
A.7 B.6 C.5 D.4
答案:B
14. 执行以下程序段后的输出是( )
int i=-1;
if(i<=0) printf(“&&&&&”)
else printf(“$$$$$”);
A.&&&&& B. $$$$$ C.&&&&&$$$$$ D.有语法错误,不能正确执行
答案:D。if语句行后缺少分号。
15. 以下程序的输出结果是( )
mian( )
{ int m=5;
if(++m>5)
if(m++>5) printf(“%d
”,m+6);
else printf(“%d
”,m- - );
else printf(“%d
”,- -m);}
A.13 B.10 C.8 D.5
答案:A
16. 以下程序的运行结果是( )
#include<stdio.h>
main( )
{int a,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf(“%d,%d”,a,b);
}
A.6,1 B.2,0 C.6,0 D.2,1
答案:D
17. 当a=1,b=3,c=5,d=4时,执行以下程序段后x的值是( )
if(a<b)
if(c<d) x=1;
else
if(a<c)
if(b<d) x=2;
else x=3;
else x=6;
else x=7;
A.1 B.2 C.3 D.6
答案:B。注意if与else的配对。
18. 以下程序的输出结果是( )
#include<stdio.h>
main( )
{ int x=2,y=-1,z=2;
if(x<y)
if(y<0) z=0;
else z=z+1;
printf(“%d
”,z);
}
A.0 B.1 C.2 D.3
答案:C
19. 为了避免在嵌套的条件语句if-else中产生二义性,C语言规定else子句总是与( )配对。
A.缩排位置相同的if B.其之后最近的if
C.同一行上的if D.其之前最近且未配对的if
答案:D
20. 执行下面程序后,运行结果是( )
#include<stdio.h>
mian( )
{int x=41,y=1;
if(x%3==0&&x%7==0)
{y+=x;printf(“y=%d
”,y);}
else {y=x;printf(“y=%d
”,y);}}
A.y=41 B.y=43 C.y=42 D.y=1
答案:A
二、填空题(本题共10小题,每题2分,共20分)
21. C语言中用________表示逻辑值“真”,用________表示逻辑值“假”。
答案:1 0
22. 在C语言中逻辑运算符中,__________优先级高于算数运算符。
答案:逻辑非
23. switch语句后面的表达式可以是_________或字符型表达式。
答案:整型
24. case子句中的常量值应为_______________,同一个switch语句中,任意两个case后面常量表达式的值不能相同。C语言运行多个case共用一个执行语句。
答案:整型值或字符型
25. 选择结构可以分为单分支、__________、__________三种情况。
答案:二分支、多分支
26. 得到整型变量a的十位数字的表达式为_______________。
答案:a/10%10
27. 设a为整型变量,则表达式:(a=3,a-1||- -a,2*a)的值是__________。
答案:3
28. 已有定义:int x=3,y=4,z=5;,则表达式:!(x+y)+z-1&&y+z/2的值是___________。
答案:1
29. 执行以下语句后a的值为_______________。
int a=5,b=6,w=1,x=2,y=3,z=4;
(a=w>x)&&(b=y>z);
答案:0
30. 设ch是char型变量,值为‘A’,则表达式ch=(ch>=‘A’&&ch<=‘Z’)?ch+32:ch的值是_______________
答案:a
三、程序运行结果题(本题共5小题,每题4分,共20分)
31. 以下程序的运行结果是【 】。
#include<stdio.h>
main( )
{int a=100,x=10,y=20,k1=5,k2=0;
if(x<y)
if(y!=10)
if(!k1) a=1;
else
if(k2) a=10;
a=-1;
printf(“%d
”,a);}
答案:-1
32. 以下程序的运行结果是【 】。
#include<stdio.h>
main( )
{ int x=1,y=0,a=0,b=0;
switch(x)
{ case 1:switch(y)
{case 0:a++;break;
case 1:b++;break;
}
case 2:a++;b++;break;
case 3:a++;b++;}
printf(“a=%d,b=%d
”,a,b);}
答案:a=2,b=1
33. 以下程序的运行结果是【 】。
#include<stdio.h>
main( )
{ int a=45,b=40,c=50,d;
d=a>30? b:c;
switch(d)
| case 30 : printf("% d,",a);
case 40 : printf("% d,",b);
case 50 : printf("% d,",c);
default : printf("#");
答案:40,50,#
34. 以下程序的运行结果是【 】。
#include<stdio.h>
main()
{ int a=15,b=21,m=0;
switch(a%3)
{ case 0: m++;break;
case 1: m++;
switch(b%2)
{default:m++;
case 0: m++;break;}
}
printf("% d
",m);}
答案:1
35. 以下程序的运行结果是【 】。
#include<stdio.h>
main()
{int k=1,m=0;
int a=10,b=10;
switch(k)
{case 1: switch(m)
{ case 0:a+=1;break;
case 1:b++;break;}
case 2: a++;b++;break;
case 3: a++;b++;}
printf("a=%d,b=%d",a,b);}
答案:a=12,b=11
四、程序填空题(本题共2小题,每空4分,共20分)
36. 以下程序的功能是:输出x,y,z三个数中的最大者。请填空。
#include<stdio.h>
main( )
{int x=4,y=6,z=7;
int u,v;
if(【1】) u=x;
else u=y;
if(【2】) v=u;
else v=z;
printf(“v=%d”,v);}
答案:
【1】x>y
【2】u>z
37. 某服装店经营套服且单件出售。若一次购买不少于50套,则每套80元;若不足50套,则每套90元;只买上衣每件60元;只买裤子每条45元。以下程序的功能是读入所买上衣c和裤子t的件数,计算应付款数m。请填空。
#include<stdio.h>
mian( )
{int c,t,m;
scanf(“%d%d”,&c,&t);
if(【1】)
if(c>=50) m=c*80;
else m=c*90;
else
if(【2】)
if(t>=50) m=t*80+(c-t)*60;
else m=t*90+(c-t)*60;
else
if(【3】) m=c*80+(t-c)*45;
else m=c*90+(t-c)*45;
printf(“%d”,m);}
答案:
【1】c==t
【2】c>t
【3】c>=50
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$