第6章 回顾数据类型和表达式
【练习6-1】 输入一个十进制数,输出相应的八进制数和十六进制数。例如:输入 31,输出 37 和 1F。 解答:
#include
int x;
scanf(\printf(\return 0; }
【练习6-2】 在程序段:
printf(\scanf(\
printf(\ /* ] 指定变量 b 的输出宽度为 5 */
中,如果将scanf(\改为 scanf(\,仍然输入 __17 ___17__,输出是什么?
解答: 23 17(中间有三个空格)
【练习6-3】 如果字符型变量 ch 的值是大写字母,怎样的运算可以把它转换为小写字母? 解答: ch=ch-‘A’+‘a’;
【练习6-4】 证明下列等价关系。 (1)a&&(b||c) 等价于a&&b||a&&c。 (2)a||(b&&c)等价于(a||b)&&(a||c)。 (3)!(a&&b)等价于 !a||!b。 (4)!(a||c)等价于!a&&!b。 解答: (1)
a b c a&&(b||c) a&&b 0(假) 0(假) 0(假) 0 0 0(假) 0(假) 非 0(真) 0 0 0(假) 非 0(真) 0(假) 0 0 0(假) 非 0(真) 非 0(真) 0 0 非 0(真) 0(假) 0(假) 0 0 非 0(真) 0(假) 非 0(真) 1 0 非 0(真) 非 0(真) 0(假) 1 1
非 0(真) 非 0(真) 非 0(真) 1 1 (2)
a b c b&&c a||(b&&c) a&&c a&&b||a&&c 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1
a&&b a||c (a||b)&&(a||c)
0(假) 0(假) 0(假) 0 0 0 0 0 0(假) 0(假) 非 0(真) 0 0 0 1 0 0(假) 非 0(真) 0(假) 0 0 1 0 0 0(假) 非 0(真) 非 0(真) 1 1 1 1 1 非 0(真) 0(假) 0(假) 0 1 1 1 1 非 0(真) 0(假) 非 0(真) 非 0(真) 非 0(真) 0(假)
非 0(真) 非 0(真) 非 0(真) (3)
a b a&&b 0(假) 0(假) 0 0(假) 非 0(真) 0 非 0(真) 0(假) 0 非 0(真) 非 0(真) 1
(4)
a b a||b 0(假) 0(假) 0 0(假) 非 0(真) 1 非 0(真) 0(假) 1 非 0(真) 非 0(真) 1
0 1 0 1 1 1 !a&&b !a 1 1 1 1 1 0 0 0 !(a||b) !a 1 1 0 1 0 0 0 0 1 1 1 !b !a||b 1 1 0 1 1 1 0 0 !b !a&&!b 1 1 0 0 1 0 0 0
1 1 1 1 1 1
习题6
1.设 float x=2.5, y=4.7; int a=7;,printf(“%.1f”, x+a%3*(int) (x+y)%2/4)的结果为 A
A.2.5 B.2.8 C.3.5 D.3.8
2.执行下列程序段的输出结果是 D 。
int num =1234,s=0; while(num!=0){ s+=num; num/=10; }
printf(\
A.4 321 B.1 234 C.0 D.10
3.设字符型变量x的值是064,表达式“~ x ^ x << 2 & x”的值是 A 。
A.0333 B.333 C.0x333 D.020