C语言的题目,谁给解释一下这个。

2024-12-26 10:09:55
推荐回答(3个)
回答1:

1. while循环里面不是到d=a;这句就结束了,这个理解是正确的,你的代码完全可以写成:
#include
main()
{
int a=1,b=2,c=3,d=4;
while(a++==b-- {
d=a;
}
a=b,c=d;
c--;
printf("%d,%d,%d,%d",a,b,c,d);
}
2. a=b,c=d;这个只是一个逗号表达式,一般不影响我们的结果;只要不使用表达式的结果,这个语句完全可以理解为:a=b; c=d;。如果要使用表达式结果,具体可以看逗号表达式的规则。
3. 整个程序的关键是while的条件。加上括号可以帮助理解,while(a++ == (b-- 具体处理过程是:
第一次循环:
先计算b 比较a==1,这里的1是b 由于a==1成立,所以进入循环体执行,即:d=a;
这时:a=2, b=1,c=3,d=2
第二次循环:
先计算b 比较a==1,这里的1是b 由于经过上次循环后a=2,所以a==1不成立,直接退出循环
这时:a=3, b=0,c=3,d=2
再执行:a=b,c=d;
这时:a=0, b=0,c=2,d=2
再执行:c--;
这时:a=0, b=0,c=1,d=2

回答2:

#include //包含标准IO库,即标准输入输出
main() //主函数,默认返回类型为 void
{int a=1,b=2,c=3... //main的函数体:定义整形变量a、b、c并初始化赋值为1、2、3
希望能够帮助你!

回答3:

只有d=a在循环体内,如果答案是那样,估计是题目打错了,应该是d=a,a=b,c=d;
while后面只跟一条语句,或{}括起来的多条语句。