LiJay 发表于 2020-11-14 00:40:28

这两种代码有什么不同吗?

本帖最后由 LiJay 于 2020-11-14 09:51 编辑

在ACM上的一道水题,求绝对值的,这是百度上的
#include <stdio.h>
int main()
{
    double a;
    while(scanf("%lf",&a)!=EOF)
    {
      if(a<0)
            a=-a;
      printf("%.2f\n",a);
    }
然后这是我的
#include<stdio.h>
int main()
{
        float r;
        while (scanf_s("%f",&r)!=EOF)
        {
               
                if (r<0)
                {
                        printf("%.2f\n", -r);

                }
                else
                {
                        printf("%.2f\n", r);
                }

        }
       
        return 0;
}

这两种代码,其中百度上的上传能通过,我的上传却是Output Limit Exceeded
按照实例输入和输出都对了呀,就是不知道为什么,求大佬能帮忙解释一下

风过无痕1989 发表于 2020-11-14 01:05:35

本帖最后由 风过无痕1989 于 2020-11-14 10:11 编辑

你的程序多了一次判断,所以才会 Output Limit Exceeded (运行超时)
百度上的只有两条语句:
if(a<0)
   a=-a;
你的程序用了四条语句:
if (r<0)
{
    printf("%.2f\n", -r);
}
else
{
    printf("%.2f\n", r);
}
假设运行一条语句需要 0.5ms,那么你的程序每一个 if ... else ... ,就要多 1ms,循环次数越多,累加的时间就越长,超时那就成为了可能

jackz007 发表于 2020-11-14 01:10:22

本帖最后由 jackz007 于 2020-11-14 01:13 编辑

      r 是浮点数,在 scanf_s() 和 printf(). 中的格式描述符必须用 %f 替换 %d,用 %.2f 替换 %.2d。

LiJay 发表于 2020-11-14 01:43:56

jackz007 发表于 2020-11-14 01:10
r 是浮点数,在 scanf_s() 和 printf(). 中的格式描述符必须用 %f 替换 %d,用 %.2f 替换 %.2d。

我交的时候是改成浮点了,也是错误,这边粘贴的是之前的。。。

shooan 发表于 2020-11-14 07:40:33

LiJay 发表于 2020-11-14 01:43
我交的时候是改成浮点了,也是错误,这边粘贴的是之前的。。。

期待最新的代码贴出来

Given2001 发表于 2020-11-14 08:12:19

Output Limit Exceeded意思是你输出的格式错误。
把printf的%.2d 改成%.2f 是不是光改了scanf没改printf?
页: [1]
查看完整版本: 这两种代码有什么不同吗?