这两种代码有什么不同吗?
本帖最后由 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 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:13 编辑
r 是浮点数,在 scanf_s() 和 printf(). 中的格式描述符必须用 %f 替换 %d,用 %.2f 替换 %.2d。 jackz007 发表于 2020-11-14 01:10
r 是浮点数,在 scanf_s() 和 printf(). 中的格式描述符必须用 %f 替换 %d,用 %.2f 替换 %.2d。
我交的时候是改成浮点了,也是错误,这边粘贴的是之前的。。。 LiJay 发表于 2020-11-14 01:43
我交的时候是改成浮点了,也是错误,这边粘贴的是之前的。。。
期待最新的代码贴出来 Output Limit Exceeded意思是你输出的格式错误。
把printf的%.2d 改成%.2f 是不是光改了scanf没改printf?
页:
[1]