/求奇数和。输入一批正整数(以零或负数为结束标志),求其中的奇数和。/
#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;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
稍微改一下试试
#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;
}
你在循环里输入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循环能进去吗。。。