鱼C论坛

 找回密码
 立即注册
查看: 1125|回复: 5

[已解决]这两种代码有什么不同吗?

[复制链接]
发表于 2020-11-14 00:40:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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
按照实例输入和输出都对了呀,就是不知道为什么,求大佬能帮忙解释一下
最佳答案
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,循环次数越多,累加的时间就越长,超时那就成为了可能
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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,循环次数越多,累加的时间就越长,超时那就成为了可能
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-14 01:10:22 From FishC Mobile | 显示全部楼层
本帖最后由 jackz007 于 2020-11-14 01:13 编辑

        r 是浮点数,在 scanf_s() 和 printf(). 中的格式描述符必须用 %f 替换 %d,用 %.2f 替换 %.2d。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我交的时候是改成浮点了,也是错误,这边粘贴的是之前的。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-14 07:40:33 | 显示全部楼层
LiJay 发表于 2020-11-14 01:43
我交的时候是改成浮点了,也是错误,这边粘贴的是之前的。。。

期待最新的代码贴出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-14 08:12:19 | 显示全部楼层
Output Limit Exceeded意思是你输出的格式错误。
把printf的%.2d 改成%.2f 是不是光改了scanf没改printf?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 15:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表