2 qq 32575047 qq_32575047 于 2016.02.21 17:02 提问

这个代码为什么输出不对呢求大神指教

#include
#include
/** 本题要求计算给定的一系列正整数中奇数的和。

输入格式:

输入在一行中给出一系列正整数,其间以空格分隔。当读到零或负整数时,表示输入结束,该数字不要处理。

输出格式:

在一行中输出正整数序列中奇数的和。

输入样例:
8 7 4 3 70 5 6 101 -1

输出样例:
116
int main()
{
int a[80];
int i,c = 0;
int sum=0;
for(i=0; ; i++)
{
scanf("%d ",&a[i]);
c++;
if(a[i]==0||a[i]<0)
{
break;

    }

}
for(i=0; i<=c; i++)
{
    if(a[i]%2!=0)
    {
        sum += a[i];
    }

}
printf("%d",sum);
return 0;

}

5个回答

caozhy
caozhy   Ds   Rxr 2016.02.21 17:23
已采纳
 int main()
{
    int a[80];
    int i = 0,c = 0;
    int sum=0;
    do
    {
        scanf("%d",&a[i]);
        c++;
    } while (a[i++]>0);
    for(i=0; i<c-1; i++)
    {
        if(a[i]%2!=0)
        {
            sum += a[i];
        }
    }
    printf("%d",sum);
    return 0;
}
caozhy
caozhy   Ds   Rxr 2016.02.21 17:23

8 7 4 3 70 5 6 101 -1
116Press any key to continue

Firas
Firas   2016.02.21 19:33

错误输出是什么呢?

错误原因应该是

for(i=0; i<=c; i++)

一行,中间的条件应是

i<c

你看看只有一个数的情况就知道了

还有,为什么假定输入最多只有80个数,题目有说最多80个数吗?
下面的代码应该更好

#include <stdio.h>
int main() {
    int sum = 0, input = 0;
        while (1) {
            scanf("%d", &input);
                if (input <= 0) break;
                if (input & 1) sum += input;
        }
        printf("\d", sum);
}
qq_32575047
qq_32575047 恩,这个方法真的不错,谢谢
接近 2 年之前 回复
mengyin521
mengyin521   2016.02.21 22:51

虽然写的不好 但结果 应该不会有问题

baidu_31886191
baidu_31886191   2016.02.21 18:52

#include "stdafx.h"
#include
#include
#include
#include"iostream"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
int a[80];
int i, c = 0;
int number;
int sum = 0;
for (i = 0;; i++)
{
cin >> number;
a[i] = number;
c++;
if (a[i] == 0 || a[i]<0)
{
break;
}

}
for (i = 0; i <c-1; i++)
{
    if (a[i] % 2 != 0)
    {
        sum += a[i];
    }

}
printf("%d", sum);
return 0;

}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!