C语言程序运行超时

jialejia971202 2019-05-09 12:55:27
#include<stdio.h>
int main()
{
int a;
int sum=0;
do
{
scanf("%d",&a);
if(a%2 == 1)
{
sum = sum + a;
}
}while(a != 0 && a != -1);
printf("%d\n",sum);
return 0;
}


代码见上,各位大佬帮忙看看,这是PTA上的一道C程序题,提示部分正确,有两个检测点提示运行超时,小白C学习者,实在找不出来问题在哪里,求解。
题目如下:
本题要求计算给定的一系列正整数中奇数的和。

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

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

输入样例:
8 7 4 3 70 5 6 101 -1
输出样例:
116
...全文
2084 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
for (int n = 1, s = 0; n > 0; n < 1 ? printf("%d\n", s) : 0) // C99
scanf("%d", &n) > 0 ? n > 0 && n & 1 ? s += n : 0 : n = 0;
自信男孩 2019-05-09
  • 打赏
  • 举报
回复
while(a != 0 && a != -1);

改成:
while(a > 0);
Italink 2019-05-09
  • 打赏
  • 举报
回复
因为你读到负整数还做了一次运算

#include<stdio.h>
int main()
{
	int a;
	int sum = 0;
	while(true)
	{
		scanf("%d", &a);
		if (a <= 0)		//读到0或者负整数,结束
			break;
		if (a % 2 == 1)
		{
			sum = sum + a;
		}
	} 
	printf("%d\n", sum);
	return 0;
}
marwi_study 2019-05-09
  • 打赏
  • 举报
回复
它题目的要求是负整数,当它输入的是-2你就算超时了,判断条件要改,并且他可能第一个输入就是负整数,那他后面就不输入了,但你还在等他输入就超时了,我的建议是改成这样

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

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧