C语言,简单语句找错,在线等,谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/14 15:54:54
#include "stdio.h"
#include "math.h"
void main()
{ int k=1,even=0,odd=0;

while(k<4)
{ even+=k+1;
odd+=k;
k+=2;}
printf("%d\n%d\n",even,odd);
getch();
}

这语句的输出结果为,6,4,为什么? 应该不偶数和不包括4,结果为3,4才对呀?.我哪儿错了吗

一步一步来,第一次循环,k==1,even=even+k+1=2,odd=odd+k=1,k=k+2=3。进行第二次循环。k=3,even=even+k+1=2+3+1=6,odd=odd+k=1+3=4,k=k+2=5,k>4循环终止。结果就是6和4了

当K<4时循环
第一次循环:
k=1时:
even=2;
odd=1;
第二次循环:
k=3时:
even=6;
odd=4;
第三次k=5>4,此时K已大于4,退出循环
因此最后输出:
6
4

even=even+k+1=2
odd=1
k=3
even=2+3+1
odd=1+3
答:我就说这个程序的运行过程吧!
首先,k=1,even=0,odd=0
因为 k=1<4 满足条件,所以运行while里面的程序。
even+=k+1;这句解释为even=even+k+1,所以
even=2 。
odd+=k;这句解释为odd=odd+k.所以odd=1
k+=2;所以k=3;
又因为k=3<4 满足条件,所以再次运行while里面的程序。
运行even+=k+1; 所以even=6 (2+3+1)
运行odd+=k; 所以odd=4 (1+3)
运行k+=2; 所以k=5
因为k=5>4,所以不再运行while,运行下面程序printf("%d\n%d\n",even,odd);
所以输出结果为6与4

第一次循环:
k=1时:
even=2;
odd=1;
第二次循环:
k=3时:
even=6;
odd=4;