第4章 选择结构程序设计 练习题OK.docx
《第4章 选择结构程序设计 练习题OK.docx》由会员分享,可在线阅读,更多相关《第4章 选择结构程序设计 练习题OK.docx(19页珍藏版)》请在冰豆网上搜索。
第4章选择结构程序设计练习题OK
第4章选择结构程序设计
一、单项选择题
1.在C语言中,能代表逻辑值"真"的是()。
A)trueB)大于0的数C)小于0的数D)非0的数
2.设a,b,c是整型变量,且a=3,b=4,c=5,则下面表达式中值为0的是()
A)a&&bB)b((a
c||a)
3.已知a=4,ch=’M’,b=0,则表达式(a>=b&&ch<’N’&&!
b)的值是()。
A)0B)1C)假D)真
4.设有语句“inta=4;b=3,c=-2,d=2;”,则逻辑表达式“a>0&&b&&c<0&&d>0”的值是()。
A)1B)0 C)-1D)出错
5.逻辑运算符的运算对象数据类型()
A)只能是逻辑型B)只能是0和1 C)只能是正整数和0D)可以是任何类型
6.若有定义语句inta=3,b=2,c=1;并有表达式
a%b||1
a>b>c
b&&c+1
c+=1,则表达式值相等的是()
A)
和
B)
和
C)
和
D)
和
7.已知inta=4,b=6,c=8;执行语句if(a>b)c=a;a=b;b=c;后,a,b,c的值是()
A)a=4,b=6,c=8B)a=6,b=8,c=8C)a=6,b=4,c=8D)a=6,b=8,c=4
8.执行下面的程序段后,z的值为()
intx=10,y=20,z;charc=’A’;z=(x&&y)&&(c>’B’);
A)0B)1C)假D)真
9.表示关系x<=y<=z的c语言表达式为()。
A)(x<=y)&&(y<=z)B)(x<=y)AND(y<=z)C)(x<=y<=z)D)(x<=y)&(y<=z)
10.能正确表示逻辑关系:
“a≥10或a≤0”的C语言表达式是()。
A)a>=10ora<=0B)a>=0|a<=10C)a>=10&&a<=0D)a>=10‖a<=0
11.判断char型变量c1为小写字母的表达式为()。
A)’a’<=c1<=’z’B)(c1>=’a’)&(c1<=’z’)C)(’a’<=c1)AND(‘z’>=c1)D)(c1>=’a’)&&(c1<=’’z’)
12.有定义charc;c=getchar();判断字符变量c为大写字母的正确表达式为()。
A)‘A’==‘A’&&c<=’ZC)A==A&&c<=Z
13.判断x的值为奇数,以下不能满足要求的表达式是()。
A)x%2==1B)!
(x%2)C)x%2D)!
(x%2==0)
14.设a为整型变量,则不能正确表达数学关系10<a<15的C语言表达式是()。
A)1010&&a<15D)!
(a<=10)&&!
(a>=15)
15.为表示逻辑表达式79A)(X>79)&&(X<90)B)(X>79)!
=(X<90)C)7979)||(X<90)
16.运算符+、!
=、!
、%中,优先级最高的运算符是()
A)+B)!
=C)!
D)%
17.C语言对嵌套if语句的规定是:
else语句总是与()配对。
A)其之前最近的ifB)第一个if
C)缩进位置相同的ifD)其之前最近的且尚未配对的if
18.在C语言语句中,用来决定分支流程的表达式可以是()。
A)可用任意表达式 B)只能用逻辑表达式或关系表达式
C)只能用逻辑表达式 D)只能用关系表达式
19.C语言中()表示逻辑“真”。
A)trueB)1C)非零的值D)false
20.若k是int型变量,且有下面的程序段,输出结果是()。
intk;k=-3;
if(k<=0)printf(“####”);
elseprintf(“&&&&”);
A)####B)&&&&C)####&&&&D)有语法错误,无输出结果
21.以下程序段的输出结果是()。
inta=10,b=50,c=30;
if(a
a=b;
b=c;
c=a;
printf("a=%2db=%2dc=%2d\n",a,b,c);
A)a=10b=50c=10B)a=10b=30c=10C)a=50b=30c=10D)a=50b=30c=50
22.以下程序段的输出结果是()。
inta=10,b=50,c=30;
if(a>b)
a=b;
b=c;
c=a;
printf("a=%2db=%2dc=%2d\n",a,b,c);
A)a=10b=50c=10B)a=10b=30c=10C)a=50b=30c=10D)a=50b=30c=50
23.输入1,-1,以下程序的输出结果是(B);如果输入-1,1,则以下程序的输出结果是(C)。
main(){
intx,y,z=1;
scanf("%d,%d",&x,&y) ;
if(xif(y<0)z=0;
elsez=z+1;
printf(“%d\n”,z);
}
A)0B)1C)2D)3
24.以下程序段的输出结果是()。
#include
main(){
inta=4,b=5,t=0;
if(a
printf("a=%d,b=%d\n",a,b);
}
A)a=5,b=4B)a=4,b=5C)a=5,b=0D)语法错误
25.若有定义:
floatx;inta,b;则以下正确的switch语句是()
A)switch(x)
{case1.0:
printf(“*\n”);
case2.0:
printf(“$\n”);
}
B)switch(x)
{case1:
printf(“*\n”);
case2:
printf(“$\n”);
}
C)switch(a+b)
{case1:
printf(“*\n”);
case2:
printf(“$\n”);
}
D)switch(a+b)
{case1.0:
printf(“*\n”);
case2.0:
printf(“$\n”);
}
26.若inti=10;执行下列程序后,变量i的正确结果是()。
switch(i){case9:
i+=1;break;
case10:
i+=1;break;
case11:
i+=1;break;
default:
i+=1;
}
A)13B)12C)11D)10
27.若inti=10;执行下列程序后,变量i的正确结果是()。
switch(i){case9:
i+=1;
case10:
i+=1;
case11:
i+=1;break;
default:
i+=1;
}
A)13B)12C)11D)10
28.若inti=10;执行下列程序后,变量i的正确结果是()。
switch(i){case9:
i+=1;
case10:
i+=1;
case11:
i+=1;
default:
i+=1;
}
A)13B)12C)11D)10
29.main()
{intx=0,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=1C)a=1,b=0D)a=2,b=2
二、阅读程序,写出运行结果
1.
#include
main(){
intr;
scanf(“%d”,&r);
floatnum=3.14,a=0;
if(r>0)a=2*num*r;
printf("resultis%f\n",a);
}
输入2,运行结果为:
resultis12.560000
输入-2,运行结果为:
resultis0.000000
2.
#include
main(){
inta=12,b=-34,c=56,min;
min=a;
if(min>b)min=b;
if(min>c)min=c;
printf("min=%d",min);
}
运行结果为:
min=-34
3.
#include
main(){
inta=1,b=3,c=5;
if(c==a+b)
printf("yes\n");
else
printf("no\n");
}
运行结果为:
no
4.
#include
main(){
intx=5,a=1,b=1;
if(x!
=a+b)
printf("x=%d\n",x-1);
else
printf("a+b=%d\n",a+b);
}
运行结果为:
x=4
5.
#include
main(){
charc=getchar();
if((‘0’<=c)&&(c<=’9’))
printf(“YES”);
else
printf(“NO”);
}
若输入5,运行结果为:
YES
若输入c,运行结果为:
NO
6.
#include
main(){
inta=10,b=50,c=30;
if(a>b)
a=b;
b=c;
c=a;
printf("a=%db=%dc=%d\n",a,b,c);
}
运行结果为:
a=10b=30c=10
7.
#include
main(){
intx=10,y=10;
if(x<9)
printf("%d\n",y);
x--;
if(x>=9)
printf("%d\n",y+1);
else
printf("%d\n",y+2);
}
运行结果为:
11
8.
#include
main(){
inta=6,b=6;
if(a>5)
{a*=2;
b/=2;}
else
a/=2;
b*=2;
printf("a=%db=%d\n",a,b);
}
运行结果为:
a=12b=6
9.
#include
main(){
floatc=3.0,d=4.0;
if(c>d)
c=5.0;
else
if(c==d)
c=6.0;
else
c=7.0;
printf(“%.1f\n”,c);
}
运行结果为:
7.0
10.
#include
main()
{intm;
scanf("%d",&m);
if(m>=0)
{if(m%2==0)
printf("%disapositiveeven\n",m);
else
printf("%disapositiveodd\n",m);
}
else
{if(m%2==0)
printf("%disanegativeeven\n",m);
else
printf("%disanegativeodd\n",m);
}
}
若键入-9,则运行结果为:
-9isanegativeodd
11.
#include
main(){
intx=2,y=-1,z=5;
if(xif(y<0)
z=0;
else
z=z+1;
printf(“%d\n”,z);
}
运行结果为:
5
12.
#include
main(){
inta=5,b=6,c=7,z=10;
if(a>b)
if(b>c)
printf(“%d\n”,z+10);
else
printf(“%d\n”,z+20);
printf(“%d\n”,z);
}
运行结果为:
10
13.
#include
main(){
inta=2,b=3,c=1;
if(a>b)
if(a>c)
printf(“%d\n”,a);
else
printf(“%d\n”,c);
printf(“over!
\n”);
}
运行结果为:
over!
14.
#include
main(){
inta=0,b=1,d=20;
if(a)
d=d-10;
else
if(!
b)
d=15;
elsed=25;
printf("d=%d\n",d);
}
运行结果为:
d=25
15.
#include
main(){
inta,b,c,x,y;
a=b=c=0;
x=10;
if(a)x-=5;
elseif(b)
y=20;
elseif(!
c)
y=45;
else
x+=5;
printf("x=%d\n",x);
printf("y=%d\n",y);
}
运行结果为:
x=10
y=45
16.
#include
main(){
floata,b,c,t;
a=3;b=7;c=1;
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(b>c)
{t=b;b=c;c=t;}
printf("%5.2f,%5.2f,%5.2f",a,b,c);
}
运行结果为:
1.00,3.00,7.00
17.
#include
main(){
inta=0,b=0,c=0;
switch(c)
{case0:
b++;
case1:
a++;
case2:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
运行结果为:
a=2,b=2
18.
#include
main(){
charch;
ch=getchar();
switch(ch)
{case‘A’:
printf(“%c”,’A’);
case‘B’:
printf(“%c”,’B’);break;
default:
printf(“%s\n”,”other”);
}
}
当从键盘输入字母A时,运行结果为:
AB
当从键盘输入字母a时,运行结果为:
other
19.
#include
main(){
inta=1,b=0;
scanf(“%d”,&a);
switch(a)
{case1:
case2:
b=2;break;
default:
b=10;
}
printf("%d",b);
}
若键盘输入1,运行结果为:
2
若键盘输入5,运行结果为:
10
20.
#include
main(){
inta=10,b=11,c=0;
switch(a%3)
{case0:
c++;break;
case1:
c++;
case2:
switch(b%2)
{case0:
c++;;
default:
c++;
}
}
printf("%d\n",c);
}
运行结果为:
2
三、编程题
1、输入两个数,输出较大的数。
#include
intmain(){
inta,b,max;
printf(“Pleaseinputtwonumbers :
”) ;
scanf(“%d%d”,&a,&b);
if(a>b)
max=a;
else
max=b;
printf(“max=%d\n”,max);
return0 ;
}
2、输入一个整数,判断其奇偶性。
#include
voidmain(){
intm;
scanf("%d",&m);
if(m%2==0)
printf("%disaeven\n",m);
else
printf("%disaodd\n",m);
}
3、输入一个正整数,判断其是否为3和7的公倍数,若是输出“Yes”,否则输出“No”。
#include
voidmain(){
intm;
scanf("%d",&m);
if(m%3==0&&m%7==0)
printf("Yes\n");
else
printf("No\n");
}
4、输入一个字符,如果是大写英文字母,将其转换为小写字母并输出,如果不是,则原样输出。
#include
intmain(){
charc1;
c1=getchar();
if(c1>=’A’&&c1<=’Z’)
c1=c1+32;
putchar(c1);
return0;
}
5、输入一个字符,如果是英文字母,输出“abcd”,如果是数字字符,输出“####”,如果都不是,输出“other”。
#include
intmain(){
charc;
c=getchar();
if(c>=’A’&&c<=’Z’||c>=’a’&&c<=’z’)
printf(“abcd”);
elseif(c>=’0’&&c<=’9’)
printf(“####”);
else
printf(“other”);
return0;
}
6、输入三个数,按照从小到大的顺序输出。
#include
intmain(){
floata,b,c,t;
scanf(“%f%f%f”,&a,&b,&c);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(b>c)
{t=b;b=c;c=t;}
printf("%f,%f,%f",a,b,c);
}
7、函数y=f(x)表示如下,编程实现输入一个x值,输出y值。
2x+1(x<0)
y=0(x=0)
2x-1(x>0)
#include
voidmain(){
intx,y;
scanf(“%d”,&x);
if(x<0)
y=2*x+1;
elseif(x>0)
y=2*x-1;
else
y=0;
printf(“%d”,y);
}
8、编程,输入每个月的上网时间,计算上网费用,资费标准如下:
#include
voidmain(){
inthour;
floatfee;
printf(“pleaseinputhour:
\n”);
scanf(“%d”,&hour);
if(hour<=10)
fee=30;
elseif(hour<=50)
fee=3*hour;
else
fee=hour*2.5;
printf(“Thetotalfeeis%f”,fee);
}
9、神州行用户无月租费,话费每分钟0.6元,全球通用户月租费50元,话费每分钟0.4元。
输入一个月的通话时间,分别计算出两种方式的费用,判断哪一种合适。
#include
voidmain(){
floatt,szx,qqt;
printf(“请输入您的通话时间:
”);
scanf(“%f,”,&t);
szx=0.6*t;
qqt=50+0.4*t;
if(szx>qqt)
printf(“建议使用全球通”);
else
printf(“建议使用神州行);
}
10、要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为70~84分,C等为60~69分,D等为60分以下。
成绩的等级由键盘输入。
#include
intmain(){
chargrade;
scanf("%c",&grade);
printf("Yourscore:
");
switch(grade)
{case'A':
printf("85~100\n");break;
case'B':
printf("70~84\n");break;
case'C':
printf("60~69\n");break;
case'D':
printf("<60\n");break;
default:
printf("enterdataerror!
\n");
}
return0;
}