编程不知道为什么得出来的结果加上了负奇数……

/求奇数和。输入一批正整数(以零或负数为结束标志),求其中的奇数和。/
#include <stdio.h>
int main(void)
{
int m,i,sum=0,n;
while(m>0){
scanf("%d",&m);
if(m%2!=0)sum=sum+m;
}
printf("sum=%d",sum);
return 0;
}

在if(m%2!=0)sum=sum+m;之前加一句
if(m<=0) break;

另外,while(m>0)这里m没有初始化,没有被赋值,不能直接用。
代码修改如下:


#include <stdio.h>
int main(void)
{
    int m,i,sum=0,n;
    while(1){ //这里m没有初始化,所以不能用m>0
        scanf("%d",&m);
        if(m<=0) break;  //添加这一句
        if(m%2!=0)sum=sum+m;
    }
    printf("sum=%d",sum);
    return 0;
}

m没有初始化赋值,值是随机的, 可能是0
这样while(m>0)就一次也不会循环
应该是在 scanf("%d", &m);对m赋值后再判断 if (m<=0)

你题目的解答代码如下:

#include <stdio.h>
int main(void)
{
    int m, i, sum = 0, n;
    while (1)
    {
        scanf("%d", &m);
        if (m<=0)
            break;
        if (m % 2 != 0)
            sum = sum + m;
    }
    printf("sum=%d", sum);
    return 0;
}

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

稍微改一下试试

#include <stdio.h>
int main(void)
{
    int m, i, sum = 0, n;
    while (1)
    {
        scanf("%d", &m);
        if (m <= 0)
            break;
        if (m % 2 != 0)
            sum = sum + m;
    }
    printf("sum=%d", sum);
    return 0;
}

img

你在循环里输入m,接着就把m加进去了。然后才判断m是否为负数。等判断的时候,负数已经加进去了啊

#include <stdio.h>
int main(void)
{
int m,i,sum=0,n;
scanf("%d",&m);
while(m>0){
    if(m%2!=0)
        sum=sum+m;
    scanf("%d",&m);
}
printf("sum=%d",sum);
return 0;
}

你的m没有初始值,while循环能进去吗。。。