你好:
第一题:
先执行循环体:b-=a; a++;
b=b-a=10-1=9,a=2,
再判断条件:b--<0 b=9>0 然后b-- (注意无论判断条件是否满足,都执行),b=8
第二题:
答案错了,应选D
程序应该码孝这么看:
int a=3,b=2,c=1;
int x=10,y=20;
if(ab就不满足条件,所以下面的不执行!
if(b!=0)
if(!x) y=1;
else
if(x) y=0;
y=-1; 只执行这句!
printf("%d",y);
所以y=-1
第三题:
18/4*sqrt(4.0)/8这个运算中有浮点型纯模雀数据即sqrt(4.0),系统会自动把其他类型的数据想double转换。
比如:
float b=6.5;
int a=2;
那么a+b的类型就是float,因为这个表达式中最高的类型就是float,那么int 就会向float转换。
总结就是要是表达式中都要向类型高的转化。
明白做早了吗?
3、答案C
其结果为1。说明:C中表达式运算过程中,只要遇到符点型数据就会按符点型数据进行运算,其结果也是符点型。sqrt()函数的返回值是double型,粗岁所以,整个运算结果也是double.
2、答案D
else if(x)
y=0;
y=-1;
从这里可以看出 y=-1; 是一条单独的语句,与前面的所有语句都没有关系,程序只要执行到这里y值必然会是-1,所以其输出结果是-1
1、答案D
b-=a; =》b=10-1=9;
while (b--<0); 先检查b<0? 然后运行b--:=》b>0 , b=9-1=8 这里我们也可以看出,类似a++,a--,等操作,只要用到了蔽斗变量a,则++,--运宏凳磨算就会执行。
第一题 执行循环语句时,b-=a , 相当于神烂 b=b-a为10-1=9,执行一次以后在判断能否满足条件执行下一次循环,判断语句为b--,即为b=b-1=8,因为8<0是假命题,逻辑值为0,不满足循环条件,退出循环。
第二题 答案应该是B吧 else是与上面最近if 配对,在本题中即与if(!x)配对。 if(aif(b!=0)
if(!x)
y=1;
else if(x)
y=0;
这是一个可以看做一个整体,因为if(a printf("歼桐%d",y);
给点分值啊,这样解的没意思。这都要用笔算的