C语言初学,下面两道题我有点疑问

2025-03-29 07:43:02
推荐回答(3个)
回答1:

选择题考查的知识点
1、b++和++b的区别: ++在后面,是先参与计算,再加1;而++在前面时是先加1再参与计算。
刚开始b=2,当执行第一个if中的判断b++ == 2时,执行顺序是先判断b是否等于2,再执行b增加1。所以第一个if的两个条件都为真,并且执行后b=3。
2、多条件的执行顺序。第二个if要求b!=2或者c--!=3,也就是其中一个条件为真即可。代码执行时是从左到右的顺序判断,如果第一个条件为真,那就不用执行后面的判断。因为第一条if执行完后b=3,那么b!=2就为真,后面的c--!=3也就不用执行了。所以最后c是等于3的。
同理如果有if(表达式1&&表达式2),那么当表达式1的条件为假时,表达式2也不会执行了。
填空题考查的知识点是变量在使用前应初始化。sum在使用前没有赋初值,那在调用它时它的值是不确定的。

回答2:

1、if(b!=2||c--!=3)这一句,有一个逻辑或运算,前面b!=2已经为真了,这时,if的条件已经成立了(无论后面是真是假已经不重要了),这时c语言就智能化处理,把后面的c--!=3直接忽视了,既不判断真假也不做c--运算了,这也是c语言聪明的地方。所以c还是原值3。
2、sum不赋初值时,后面无法正确参与运算,应该是出乱码。你说的出15,应该是巧合。

回答3:

#include int main(){ char a; printf("please enter a letter\n "); scanf("%c",&a); //错误 if(a=='A') printf("没有前面的字母\n"); else if(a=='Z') printf("没有后面的字母\n"); else{ // 应该用括号括起来,否则else只包含接下来的一句话 a=a+1; printf("a=%c\n",a); // 错误 a=a-2; printf("a=%c",a); } return 0;}