第3章 选择程序设计习题C语言.docx
《第3章 选择程序设计习题C语言.docx》由会员分享,可在线阅读,更多相关《第3章 选择程序设计习题C语言.docx(11页珍藏版)》请在冰点文库上搜索。
![第3章 选择程序设计习题C语言.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/612ea5b5-66e9-4703-8a0a-ad7c2c75106c/612ea5b5-66e9-4703-8a0a-ad7c2c75106c1.gif)
第3章选择程序设计习题C语言
第3章选择程序设计
一.选择题
1.printf函数中用到格式符“%5s”,其中数字5表示输出的字符串占用5列。
如果字符串长度小于5,则输出按方式【】。
A)从左起输出该字串,右补空格B)按原字符长从左向右全部输出
C)右对齐输出该字串,左补空格D)输出错误信息
2.已有定义inta=-2;和输出语句:
printf(“%8lx”,a);以下正确的叙述是【】。
A)整型变量的输出格式符只有%d一种
B)%x是格式符的一种,它可以适用于任何一种类型的数据
C)%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的
D)%8lx不是错误的格式符,其中数字8规定了输出字段的宽度
3.以下程序的输出结果是【】。
main()
{inta=3;
printf("%d\n",(a+=a-=a*a));
}
A)-6B)12C)0D)-12
4.putchar函数可以向终端输出一个【】。
A)整型变量表达式值B)实型变量值
C)字符串D)字符或字符型变量值
5.若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是【】。
A)scanf(“%d%lx,%le”,&x,&y,&z);
B)scanf(“%2d*%d%lf”,&x,&y,&z);
C)scanf(“%x%*d%o”,&x,&y);
D)scanf(“%x%o%6.2f”,&x,&y,&z);
6.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是【】。
inta1,a2;charc1,c2;
scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);
A)10A20BB)10A20B
C)10A20BD)10A20B
7.已有定义intx;floaty;且执行scanf(“%3d%f”,&x,&y);语句,若从第一列开始输入数据12345678<回车>,则x的值为【】。
A)12345B)123C)45D)345
8.已有定义intx;floaty;且执行scanf(“%3d%f”,&x,&y);语句,若从第一列开始输入数据12345678<回车>,则y的值为【】。
A)无定值B)45.000000C)678.000000D)123.000000
9.阅读以下程序,当输入数据的形式为 25,13,10 正确的输出结果为D】。
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+z=35D)不确定值
10.逻辑运算符两侧运算对象的数据类型【】 。
A)只能是0或1B)只能是0或非0正数
C)只能是整型或字符型数据D)可以是任何类型的数据
11.以下关于运算符优先顺序的描述中正确的是【】。
A)关系运算符<算术运算符<赋值运算符<逻辑与运算符
B)逻辑与运算符<关系运算符<算术运算符<赋值运算符
C)赋值运算符<逻辑与运算符<关系运算符<算术运算符
D)算术运算符<关系运算符<赋值运算符<逻辑与运算符
12.下列运算符中优先级最高的是【】。
A)
=
13.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是【】。
A)(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
B)(x>=1)||(x<=10)||(x>=200)||(x<=210)
C)(x>=1)&&(x<=10)||(x>=200)&&(x<=210)
D)(x>=1)||(x<=10)&&(x>=200)||(x<=210)
14.能正确表示逻辑关系:
“a≥10或a≤0”的C语言表达式是【】。
A)a>=10ora<=0B)a>=0|a<=10
C)a>=10&&a<=0D)a>=10‖a<=0
15.设intx=1,y=1;表达式(!
x||y--)的值是【】
A)0B)1C)2D)-1
16.有如下程序段
inta=14,b=15,x;
charc=‘A’;
x=(a&&b)&&(c<‘B’);
执行该程序段后,x的值为【】
A)tureB)falseC)0D)1
17.
表示图中坐标轴上阴影部分的正确表达式是【】。
A)(x<=a)&&(x>=b)&&(x<=c)
B)(x<=a)||(b<=x<=c)
C)(x<=a)||(x>=b)&&(x<=c)
D)(x<=a)&&(b<=x<=c)
18.判断char型变量ch是否为大写字母的正确表达式是【】。
A)‘A’<=ch<=‘Z’B)(ch>=‘A’)&(ch<=‘Z’)
C)(ch>=‘A’)&&(ch<=‘Z’)D)(‘A’<=ch)AND(‘Z’>=ch)
19.设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是【】。
A)‘x’&&‘y’B)x<=y
C)x||y+z&&y-zD)!
((xz||1)
20.已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<‘B’&&!
y)的值是【】。
A)0B)语法错C)1D)“假”
21.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是【】。
A)A%2==1B)!
(A%2==0)C)!
(A%2)D)A%2
22.设有:
inta=1,b=2,c=3,d=4,m=2,n=2;
执行(m=a>b)&&(n=c>d)后n的值为【】。
A)1B)2C)3D)4
23.判断char型变量c1是否为小写字母的正确表达式是【】。
A)‘a’<=c1<=‘z’B)(c1>=a)&&(c1<=z)
C)(‘a’>=c1)||(‘z’<=c1)D)(c1>=‘a’)&&(c1<=‘z’)
24.以下程序的运行结果是【】。
#include“stdio.h”
main()
{
inta,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf(“%d,%d”,a,b);
}
A)6,1B)2,1C)6,0D)2,0
25.以下不正确的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(x26.已知charch='C';则以下表达式的值是【】。
ch=(ch>='A'&&ch<='Z')?
(ch+32):
ch;
A)AB)aC)ZD)c
27.已知intx=10,y=20,z=30;以下语句:
if(x>y)
z=x;x=y;y=z;
执行后x,y,z的值是【】。
A)x=10,y=20,z=30B)x=20,y=30,z=30
C)x=20,y=30,z=10D)x=20,y=30,z=20
28.以下if语句语法正确的是【】。
A)if(x>0)
printf(“%f”,x)
elseprintf(“%f”,-x);
B)if(x>0)
{x=x+y;printf(“%f”,x);}
elseprintf(“%f”,-x);
C)if(x>0)
{x=x+y;printf(“%f”,x);};
elseprintf(“%f”,-x);
D)if(x>0)
{x=x+y;printf(“%f”,x)}
elseprintf(“%f”,-x);
29.有如下程序
main()
{floatx=2.0,y;
if(x<0.0)y=0.0;
elseif(x<10.0)y=1.0/x;
elsey=1.0;
printf("%f\n",y);
}
该程序的输出结果是【】。
A)0.000000B)0.250000C)0.500000D)1.000000
30.若intk=8;则执行下列程序后,变量k的正确结果是【】。
main()
{intk=8;
switch(k)
{case9:
k+=1;
case10:
k+=1;
case11:
k+=1;break;
default:
k+=1;
}
printf("%d\n",k);}
A)12B)11C)10D)9
二.填空题
1.设y是int型,请写出y为奇数的关系表达式【】。
2.设inta=5,b=6,表达式(++a==b--)?
++a:
--b的值是【】。
3.将以下程序写成三目运算表达式是【】。
if(a>b)max=a;
elsemax=b;
4.以下程序输出的结果是【】。
main()
{inta=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}
5.若从键盘输入58,则以下程序输出的结果是【】。
main()
{inta;
scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);
}
6.阅读下面语句,则程序的执行结果是【】。
#include"stdio.h"
main()
{inta=-1,b=1,k;
if((++a<0)&&!
(b--<=0))
printf("%d,%d\n",a,b);
elseprintf("%d,%d\n",b,a);}
7.以下程序的输出结果为【】。
main()
{
shorti;
i=-4;
printf(“\ni:
dec=%d,oct=%o,hex=%x,unsigned=%u\n”,i,i,i,i);
}
8.以下程序的输出结果为【】。
main()
{
printf(“*%f,%4.3f*\n”,3.14,3.1415);
}
9.以下程序的输出结果为【】。
main()
{
charc=‘x’;
printf(“c:
dec=%d,oct=%o,hex=%x,ASCII=%c\n”,c,c,c,c);
}
10.以下程序的输出结果为【】。
main()
{
intx=1,y=2;
printf(“x=%dy=%d*sum*=%d\n”,x,y,x+y);
printf(“10Squaredis:
%d\n”,10*10);
}
11.以下程序段的输出结果为【】。
intx=7281;
printf(“
(1)x=%3d,x=%6d,x=%6o,x=%6x,x=%6u\n”,x,x,x,x,x);
printf(“
(2)x=%-3d,x=%-6d,x=$%-06d,x=$%06d,x=%%06d\n”,x,x,x,x,x);
printf(“(3)x=%+3d,x=%+6d,x=%+08d\n”,x,x,x);
printf(“(4)x=%o,x=%#o\n”,x,x);
printf(“(5)x=%x,x=%#x\n”,x,x);
12.假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。
请填空。
a+=【】;b=a-【】;a-=【】;
13.假设变量a、b和c均为整型,以下语句借助中间变量t把a、b和c中的值进行交换,即:
把b中的值给a,把c中的值给b,把a中的值的给c。
例如:
交换前,a=10,b=20,c=30;交换后,a=20,b=30,c=10。
请填空。
【】;a=b;b=c;【】;
14.有一输入函数scanf(“%d”,k);其不能使float类型变量k得到正确数值的原因是【】和【】。
15.已有定义inta;floatb,x;charc1,c2;为使a=3,b=6.5,x=12.6,c1=‘a’,c2=‘A’,正确的scanf函数调用语句是【】,输入数据的方式为【】。
16.已有定义inti,j;floatx;为将-10赋给i,12赋给j,410.34赋给x;则对应以下scanf函数调用语句的数据输入形式是【】。
scanf(“%o%x%e”,&i,&j,&x);
17.当a=3,b=2,c=1时,表达式f=a>b>c的值是【】。
18.当a=5,b=4,c=2时,表达式a>b!
=c的值是【】。
19.在C语言中,表示逻辑“真”值用【】。
20.C语言提供的三种逻辑运算符是【】、【】、【】。
21.设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式【】。
22.设x,y,z均为int型变量,请写出描述“x,y和z中有两个为负数”的表达式【】。
23.已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||A
C>B的值是【】。
24.若a=6,b=4,c=2,则表达式!
(a-b)+c-1&&b+c/2的值是【】。
25.若a=6,b=4,c=3,则表达式a&&b+c||b-c的值是【】。
26.若a=5,b=2,c=1,则表达式a-b27.条件“228.当m=2,n=1,a=1,b=2,c=3时,执行完d=(m=a!
=b)&&(n=b>c)后;n的值是【】,m的值是【】。
三.编程题
1.编制程序输入三个整数,按从大到小的顺序进行输出。
2.编制程序对输入的一个小写字母,将字母循环后移5个位置后输出。
如‘a’变成‘f’,‘w’变成‘b’。
3.试编程判断输入的正整数是否既是5又是7的整倍数。
若是,则输出yes,否则输出no。
4.编制程序要求输入整数a和b,若均大于100,则输出百位以上的数字,否则输出两数之和。
5.编程实现:
输入一个整数,判断它能否被3,5,7整除,并输出以下信息之一:
(1)能同时被3,5,7整除。
(2)能被其中两数(要指出哪两个)整除。
(3)能被其中一个数(要指出哪一个)整除。
(4)不能被3,5,7任一个整除。
6.某邮局对邮寄包裹有如下规定:
若包裹的长宽高任一尺寸超过1米或重量超过30千克,不予邮寄。
对可以邮寄的包裹每件收手续费0.2元,再加上根据下表按重量wei计算的邮资:
重量(千克)
收费标准(元)
wei<10
0.80
10<=wei<20
0.75
20<=wei<=30
0.70