想问下这这道题为什么选B?
9、有下列程序:
#include <stdio.h>
intmain()
{ inta=2,b=-2;
do{
printf("%d,%d,",a,b);
}
while(--a&&++b);
printf("%d,%d",a,b);
return0;
}
执行后的输出结果是
A)2,-2,1,-1,0,0
B)2,-2,1,-1,0,-1
C)1,-1,0,-1
D)2,-2,1,-1,0,0,-1,1
C语言do-while循坏与单目运算符
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
6条回答 默认 最新
关注让【宝码香车】来帮您解答,本回答参考DeepSeek编写,并整理提供。
如果答案让您满意,请采纳、点赞、关注,非常感谢!
.
每日一句正能量,让它带给您好心情:每一次选择,都是在为自己的人生投票。
.根据给定的C语言程序,分析其执行过程:
#include <stdio.h> int main() { int a = 2, b = -2; do { printf("%d,%d,", a, b); } while (--a && ++b); printf("%d,%d", a, b); return 0; }执行步骤解析:
- 初始值:
a = 2,b = -2。 - 进入
do-while循环:
- 第一次循环:先打印
a,b的值(即2,-2,),然后判断条件--a && ++b: --a:先自减a(a变为1),表达式值为1(真)。++b:先自增b(b变为-1),表达式值为-1(非0,真)。- 条件
1 && -1为真(非0),继续循环。 - 第二次循环:打印
a,b的值(即1,-1,),然后判断条件--a && ++b: --a:先自减a(a变为0),表达式值为0(假)。- 由于
&&短路,++b不再执行(b仍为-1)。 - 条件
0 && ...为假(0),退出循环。
- 循环结束后,执行
printf("%d,%d", a, b),打印a,b的当前值(即0,-1)。
输出结果:
第一次循环打印:2,-2,
第二次循环打印:1,-1,
最后打印:0,-1
完整输出为:2,-2,1,-1,0,-1选项对比:
- A)
2,-2,1,-1,0,0(错误,最后b应为-1而非0) - B)
2,-2,1,-1,0,-1(正确) - C)
1,-1,0,-1(缺少第一次循环输出) - D)
2,-2,1,-1,0,0,-1,1(多余内容)
因此,正确答案是B。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报- 初始值: