C语言 难题解答

来源:百度知道 编辑:UC知道 时间:2024/09/24 03:54:11
1.以下程序的输出结果是()
#include
main ()
{int a,b,d=241;
a=d/100%9
b=(-1)&&(+1);
printf("%d,%d,a,d"); }
A)6,1
B)2,1
C)6,0
D)2,0
答案,为什么?

main ()
{int a,b,d=241;
a=d/100%9;
b=(-1)&&(+1);
printf("%d,%d",a,b);
}
答案为: B)2,1
*,/,%运算符优先级相同,故a=241/100%9=2%9=2,其中241/100是整除结果为整数
虽然C编译在给出逻辑运算值时,以“1”代表“真”,“0 ”代表“假” 。但反过来在判断一个量是为“真”还是为“假”时,以“0”代表“假”,以非“0”的数值作为“真”。例如:
(-1)&&3由于-1和3均为非“0”因此(-1)&&3的值为“真”,即为1。

D.
a=d/100%9 ,表示的是d即241整除100后再除9取余,241整除100得2,2除9取余自然是2,故a=2

b=(-1)&&(+1),&&表示前后事件真假性相与,-1表假,1表真,假与真相与自然是0,故b=0.

a是2
b是1
非0为“真”。故-1 && (+1)中,&&前后均为真,结果自然为1

B d/100只有商,即2,2%9=2,故a=2

c语言里面非0都是真,所以-1和1都是真,真&&真,还是真,用1表示,因此b=1

你的Printf()中明明是输出d嘛