a流年
2015-08-08 19:02
#include <stdio.h>
int main()
{
int sum = 0;
int i = 1;
int flag = 1;
while(i<=100)
{
i++;
if(i%2==1)
{
sum+=i;
}
else
{
sum-=i;
}
}
printf("sum=%d\n",sum);
return 0;
}
答案为什么不对
额,没有必要用if...else...语句判断吧.因为有flag变量呀,若是你硬是要用if...else...语句判断的话你的逻辑有问题.
正确代码是这样的
while(i<=100)
{
i++;
if(i%2==1){
sum-=i;
}else{
sum+=i;
}
}看到没,是先减法,在加法.为什么这样呢:首先观察式子:1-2+3-4.....会发现奇数是要加上去的,偶数需要减掉.所以
if(i%2==1)
是用来判断是否为奇数.
其实你把你的程序中的if语句的条件改成i%2==0应该会有正确的结果.
写程序真正难处不在于语法,而在于逻辑.希望我的回答对你有帮助.
哦,是这样的:
看下这段代码
while(i<=100)
{
i++;
if(i%2==1){
sum-=i;
}else{
sum+=i;
}
}变量i的初始值是1,对吧.然后在第3行遇到了i++,所以i就是2了,这样一直下去,到最后,i的边界值是101.懂了吗?
所以需要按照上面代码逻辑来写,若是按照你的逻辑来写的话把
i++;
语句放在if语句后面就好了.看下完整代码.
#include <stdio.h>
int main()
{
int sum = 0; //定义计算结果变量sum
int i = 1; //定义循环数字变量i
int flag = 1; //定义符号状态变量flag
while(i<=100)
{
if(i%2==0){
sum=sum-i;
}else{
sum=sum+i;
}
i++;
}
printf("sum=%d\n",sum);
return 0;
}这样也可以.你的代码把i++的位置调换一下也会达到同样的效果:
#include <stdio.h>
int main()
{
int sum = 0; //定义计算结果变量sum
int i = 1; //定义循环数字变量i
int flag = 1; //定义符号状态变量flag
while(i<=100)
{
if(i%2==1){
sum+=i;
}else{
sum-=i;
}
i++;
}
printf("sum=%d\n",sum);
return 0;
}要注意我们使用变量i的值是经过i++ 过后的.最后关心下边界值.
C语言入门
928320 学习 · 21550 问题
相似问题