c语言题目 求解 很基础的

第四题的a c和第五题的b d感觉很矛盾
28题为什么不选第四个
9题没有我想选的答案

4. C正确,它是逗号表达式,x=y+z+5把y+z+5的值赋给x,然后y增1赋给y。A选项中=是右结合的,先算y*5=x+z,这试图把x+z的值赋给y*5这个非左值表达式,是非法的。所以A、C并不矛盾。
5. B正确,参照4题的A,这里b是变量而非表达式(4题A中是y*5),所以正确。D选项中a+7是表达式不能接收数据,错误。所以也没有矛盾。
28. C正确——因为b初值是10,>=8成立,所以break;跳出了循环体,由于{}把第一个if和第二个if语句括起来了,所以两个if语句都是for的“体”,break;后跳出“体”,其后的语句都不执行了。

9. D正确——i++==1成立,由于是&&,所以还得计算&&右边的表达式,其中++j==3成立,后面是||,有一边成立即可确定为“真”了,所以||右侧不再计算了;但i++是后++,还要在整个表达式计算无成再计算,所以结果是i变成了2,j在++j时已变成了3,k没有计算还是3。追问

第四题的a和第五题的d错误的原因是一样的嘛

追答

是,是一样的……

追问

第五题的b跟这个有什么区别

追答

给已说明过的变量可以连续赋值,像a=b=c=d=e=f=x=y=z=90;这没问题。但定义变量时如int a=b=c=d=19;就不行了——因为,=是右结合的,但编译却是从左开始扫描安排变量的,安排了a,发现=就在=右侧找值,发现b,b却是个没有定义的变量,所以就出错了。所以不认为变量说明或定义语句是C语言语句而是编译器语句(只在编译时有用,编译后就没有了),以后你会慢慢发现这二者有很大的不同,暂不细说了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-26
4)
y*5不可以出现在赋值号的左边,所以A是错的。
C是一个正确的逗号表达式,其值为++y的值。
28)
进入循环后第一次判断就满足条件,退出循环了(不再执行b--),所以是输出1,10
9)
因为i++是后自增,所以i++==1是满足的。
再看++j是前自增,所以++j==3也满足,后面的||k++==3就不判断了,直接输出。
输出值为:
2 3 3
选择答案D。
A错在y*5=x+z,y*5不可以出现在赋值表达式的左边。
C是一个正确的逗号表达式,值为++y的值
5)
若c的值为3,则a=b=c+2;执行后,a与b的值都是5追问

第五题的c和这个有什么区别

追答

图中是在变量定义的时候是不可以的。
int a=b=c=3; 不可以。
int a,b,c;
a=b=c=3; 可以。

追问

谢谢

追答

满意请采纳。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网