习题4
4.1 已知a=10,b=5,请写出下列表达式的运行结果。
(1)!(a+b)
(2)a%b||1
(3)a&&b
(4)a>=5&&b<5
(5)b||a&&0a%3-1
(6)a&&(a++)/(++b)
4.2 写出下列表达式的值
(1)1<100&&4<7||60>=5
(2)!(12<3==3)
(3)!(100<=300)||(1!=2)
(4)!(5>3)&&(30<=90)
4.3 选择题
(1)逻辑运算符两侧的运算对象的数据类型为( )。
A.只能是0和1
B.只能是0或非0正数
C.只能是整型或字符型数据
D.可以是任何类型的数据
(2)判断char型变量ch是否为大写字母的正确表达式是( )。
A.'A'<=ch<='Z'
B.(ch>='A')||(ch<='Z')
C.(ch>='A')&&(ch<='Z')
D.('A'<=ch)AND('Z'>=ch)
(3)若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是( )。
A.A%2==1
B.!(A%2==0)
C.!(A%2)
D.A%2
(4)设有int a=1, b=2, c=3, d=4, m=2, n=2,执行(m=a>b)&&(n=c>d)后n的值为( )。
A.1
B.2
C.3
D.4
(5)以下程序的运行结果是( )。
void main() { int a,b,d=241; a=d/100%9; b=(-1)&&(-1); printf("%d,%d",a,b); }
A.6,1
B.2,1
C.6,0
D.2,0
(6)已知int x=10, y=20, z=30,以下语句执行后x, y, z的值是( )。
if(x>y)z=x;x=y;y=z;
A.x=10, y=20, z=30
B.x=20, y=30, z=30
C.x=20, y=30, z=10
D.x=20, y=30, z=20
(7)以下程序的运行结果是( )。
void main() { int m=5; if(m++>5) printf("%d\n",m); else printf("%d\n",m--); }
A.4
B.5
C.6
D.7
(8)若运行时给变量x输入12,则以下程序的运行结果是( )。
void main() { int x,y; scanf("%d",&x); y=x>12?x+10:x-12; printf("%d\n",y); }
A.12
B.22
C.1
4.4 编程计算下面的函数,其中,x由键盘输入。
D.0
4.5 编程实现:输入整数a和b,若a2+b2大于100,则输出a2+b2百位以上的数字,否则输出a、b之和。
4.6 编程实现以下功能,读入两个数(d1,d2)和一个运算符(op),计算d1 op d2的值。例如,若输入15、5和“/”,则计算“15 / 5”,结果为3。
4.7 从键盘输入两个整数,输出较大数(用条件表达式求解)。
4.8 输入一个正整数,编程判断其是否既是5又是7的倍数。若是,则输出“yes”;否则输出“no”。
4.9 输入一个正整数,判断其是否能被3、5、7整除,并输出能同时被几个数整除。
4.10 从键盘输入4个整数a、b、c、d,找出其中的最大值。
4.11 从键盘输入一个字符,如果是大写字母或者是小写字母,就输出其对应的ASCII码。
4.12 对于给定的一个百分制成绩,输出相应的五分制成绩。提示:90分以上为'A',80~89分为'B',70~79分为'C',60~69分为'D',60分以下为'E'。要求,必须使用switch语句,并且只用一个输出语句输出计算结果。
4.13 企业发放奖金是根据利润提成的,提成的办法如下。
(1)利润(用I表示)≤10万元时,可提成10%;
(2)超过10万元时:
● 10万<I≤20万的部分,可提成7.5%,低的部分同上(下同);
● 20万<I≤40万的部分,可提成5%;
● 40万<I≤60万的部分,可提成3%;
● 60万<I≤100万的部分,可提成1.5%;
● 超过100万的部分,可提成1%。从键盘输入当月利润I,输出可发放的奖金总额。
4.14 给出一个不超过5位的正整数,编程完成下面的功能:
(1)判断它是几位数;
(2)计算其各位数字的和;
(3)将其各位数字按逆序排列组成一个新数,并比较其与原数的大小,然后按从大到小的顺序输出。