c语言求奇数和,oj代码运行超时

OJ上代码运行超时了,帮忙看看我的代码哪里有问题

题目:

输入一个正整数 repeat (0<repeat<10),做repeat 次下列运算:读入一批正整数(以零或负数为结束标志),求其中的奇数和。

img

#include <stdio.h>
int main()
{
    int repeat;
    scanf("%d", &repeat);
    getchar();
    for (; repeat > 0; repeat--)
    {
        int i=1;
        int result = 0;
        /*读入一批正整数(以零或负数为结束标志),求其中的奇数和*/
        while (1)
        {            
            scanf("%d",&i);
            if (i == 0 || i == -1)
            {
                break;
            }
            if (i % 2 != 0)
            {
                result += i;
            }
        
        }
        printf("%d\n", result);
        
    
    }

    return 0;
}

基于new bing的分析:
使用 while(repeat--) 的方式循环读取一批正整数。在每次读取一批正整数时,我们先读入第一个正整数 num,然后判断其是否大于0,如果大于0,则继续读取下一个数值。在读取每个数值时,我们同样判断其是否为奇数,并累加到 result 变量中。当读取的数值小于等于0时,推出内层循环,并打印 result 的值。这样就可以有效避免超时问题。


#include <stdio.h>

int main()
{
    int repeat;
    scanf("%d", &repeat);
    getchar();
    while (repeat--)
    {
        int num, result = 0;
        /* 读取一批正整数(以零或负数为结束标志),求其中的奇数和 */
        scanf("%d", &num);
        while (num > 0)
        {            
            if (num % 2 != 0)
            {
                result += num;
            }
            scanf("%d", &num);
        }
        printf("%d\n", result);
    }
 
    return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    在输入正整数repeat后,输入一组正整数,可以用循环遍历这组正整数,判断每个数是否为奇数,并将所有奇数加起来。对于超时的问题,可以考虑使用更优的算法或优化代码,比如减少循环次数、使用快速读入等。以下是可能的代码实现(C语言):

    #include <stdio.h>
    
    int main() {
        int repeat, i, j, num, sum;
        scanf("%d", &repeat); // 输入循环次数
        for (i = 0; i < repeat; i++) { // 循环repeat次
            scanf("%d", &num); // 输入一组正整数
            sum = 0; // 初始化奇数的和
            for (j = 0; j < num; j++) { // 遍历这组正整数
                int x;
                scanf("%d", &x);
                if (x % 2 == 1) { // 判断是否为奇数,并加入奇数的和
                    sum += x;
                }
            }
            printf("%d\n", sum); // 输出奇数的和
        }
        return 0;
    }
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^