问大家一个关于C语言的问题!急!!!

来源:百度知道 编辑:UC知道 时间:2024/05/06 20:19:16
下面程序的输出结果是( )。
#include <stdio.h>
main( )
{ int k;
for(k=1; k+1; k++)
{
if(k>4)
{printf(”%d,”,k);
break;
}
printf(”%d”,k++);
}
}
A.0,3,5 B.1,3,5 C.5,3,1 D.3,5,7

答案是B。

我想知道的不是答案,而是为什么这个答案是对的?????

顺便说一下,答案肯定是B,上楼是错的。
第一次循环k=1,豪无疑问,所以第一次打印出来的k为1.
但在第一次打印k之后,k++又使k加了1,所以k=2.
当第一次循环结束,进入第二次循环时,K++又使K加了1,所以k=3;所以第二次打印出来,k=3,第二次打印k之后,k++又使k 加了1,所以k=4;当进入第三次循环时,K++又使k加了1,所以k=5,因为判断k>4就结束循环,所以第三次打印出k的值为5以后,就使用break跳出了循环。
不知道我说清楚没有。

附加说明:k++与++k是不同的。k++是先使用k的值再使k+1,而++k是先使k+1 再使用k的值,比如说:
假设k=1
那么,printf(”%d”,k++); 的结果为1

printf(”%d”,++k);的结果为2

答案是 :D 答案B肯定是错的
在for第一次循环的时候k=1自加了三次,就是k=3
for第二次循环的时候k加了两次就是k=5,因为k=5的时候是在if条件后
所以不执行break.
for第三次循环的时候k有加了两次但是k=7>4就结束循环。

所以结果是 D:3,5,7