C语言 这个题答案错了吧。我选的D。答案是C

2025-05-17 14:50:02
推荐回答(5个)
回答(1):

答案就是C,而不是D
1、D答案是死循环的原因是:while(s);后面是有;的,那么--s都执行不到,程序停留在while(36);一直死循环了
2、int k时,k的范围为-32768-32767,自加到32767时回到-32768了。C答案了k从0自加到32767时,再加就是-32768了,不满足条件,跳出循环了!
3、误区就在于你没有看见while(s)后面的分号,还有你没有理解自加对于变量的范围问题!
希望可以帮到你,如果满意,请采纳!

回答(2):

C是对的,因为k是int,有正负的,加到最大值再加1就变成int的最小值,也就是负数了,这时就退出循环。而D的while后面多了一个分号,这样--s其实是在循环体外面了,就成了死循环了

回答(3):

答案是c。k一直加下去,直到越界,就会结束。d选项里while后面有个分号,也就是说while执行的是一个空语句,s一直是36,不会结束。

回答(4):

选C是对的,int型加到一定程度是会溢出的。D选项你要注意while语句后面的分号,所以--s不会执行。

回答(5):

d是死循环
while后面有个分号,不要把--s看成一起的。

c中k增大到一定后会成为负数。