求教!!!

来源:4-10 循环结构之三种循环比较

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;    

}

答案为什么不对

写回答 关注

2回答

  • 不要为你的无知找借口
    2015-08-08 19:38:04
    已采纳

    额,没有必要用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应该会有正确的结果.

    写程序真正难处不在于语法,而在于逻辑.希望我的回答对你有帮助.

    a流年

    是新手,慢慢学。符合了i%2= =1的话,不就确定为奇数了吗,那不应该是加上吗?为啥输出是sum-=i

    2015-08-09 11:27:24

    共 1 条回复 >

  • 不要为你的无知找借口
    2015-08-09 15:45:51

    哦,是这样的:

    看下这段代码

    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++ 过后的.最后关心下边界值.

    a流年 回复不要为你的无...

    懂了,谢谢!

    2015-08-10 10:07:39

    共 2 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

928320 学习 · 21550 问题

查看课程

相似问题