不吃饭不睡觉w 2023-05-08 17:46 采纳率: 66.7%
浏览 12
已结题

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;
}

  • 写回答

2条回答 默认 最新

  • 语言-逆行者 2023-05-08 17:55
    关注

    基于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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月16日
  • 已采纳回答 5月8日
  • 创建了问题 5月8日

悬赏问题

  • ¥15 onlyoffice编辑完后立即下载,下载的不是最新编辑的文档
  • ¥15 求caverdock使用教程
  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。