关于求奇数和的代码问题

题目要求:本题要求计算给定的一系列正整数中奇数的和。
输入在一行中给出一系列正整数,其间以空格分隔。当读到零或负整数时,表示输入结束,该数字不要处理。
请问我这个代码哪里有问题啊

int main() {
    int i = 0, sum = 0;
    int A[100] = { 0 };
    for (i = 0; i<100; i++) {
        scanf("%d", &A[i]);
        if (A[i] <= 0) {
            A[i] = 0;
            break;
        }
    }
    for (i = 0; A[i] > 0; i++) {
        if (A[i] != 0) {
            if (A[i] % 2 != 0) {
                sum += A[i];
            }
        }
        else {
            break;
        }
    }
    printf("%d", sum);
    return 0;
}



可以不存入数组直接算奇数和

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

题目只要求你计算所有奇数的和,并没有对数字进行排序等操作,所以你根本没必要存,直接累加即可
你只给数组设置长度100,很可能实际数量远多于100

可以在读取的同时完成奇数判断和累加呢,修改后的代码如下。望采纳,有问题再沟通。

int main() {
    int i = 0, sum = 0;
    int A[100] = { 0 };
    for (i = 0; i<100; i++) {
        scanf("%d", &A[i]);
        if (A[i] <= 0) break;
        if (A[i] % 2 != 0) sum += A[i];
    }
    printf("%d", sum);
    return 0;
}

上述代码只保留了一个循环,并在每次输入数字后立即判断是否为奇数,如果是就累加到 sum 中。如果输入的数字是零或负数,则退出循环。