亦行之 2024-03-06 14:38 采纳率: 34.5%
浏览 1
已结题

PAT1063在pta中提交答案正确,在devc++中却无法得到输出

img


代码:

#include<stdio.h>
#include<math.h> 
#include<stdlib.h>
//devc里面输出错误但提交到pta却正确?? 
//求平方的函数是pow() 
int cmp(const void *a,const void *b){
    return *(long double *)b-*(long double *)a;//降序 
}
int main()
{
    int n,a,b;
    scanf("%d",&n);
    int x;
    long double mo[n];
//    double max=0;
    for(int i=0;i<n;i++){
        scanf("%d %d",&a,&b);
        x=(pow(a,2)+pow(b,2));
        //x=a*a+b*b;
        mo[i]=(long double)(sqrt(x));
        //if(sqrt(x)>max) max=sqrt(x); 
    }
    qsort(mo,n,sizeof *mo,cmp);
    printf("%.2llf",mo[0]);
    //printf("%.2lf",max);
    return 0;
}

在dev上运行:无法得到正确答案

img


但在pta上所有测试点都通过了,这是为什么?

  • 写回答

5条回答 默认 最新

  • GISer Liu 2024-03-06 14:39
    关注

    该回答引用自GPT-3.5,由博主GISer Liu编写:

    问题分析:
    根据提供的代码和问题描述,主要问题在于在 devc 编译器中无法得到正确的输出,但在 PTA
    上所有测试点都通过了。因此,我们需要分析可能导致这种行为差异的原因,并提出解决方案。
    可能的原因和解决方案:

    1. 数据类型的差异 :在不同的编译器或平台上,数据类型的精度和范围可能存在差异,导致计算结果不同。解决方案是在程序中使用一致的数据类型,例如使用 double 类型代替 long double,并且进行适当的四舍五入操作以保证输出结果的精度。
    2. 数学库函数的实现差异 :不同的编译器可能使用不同的数学库函数实现,这可能导致在计算过程中产生微小的误差,进而影响最终结果。解决方案是尽量避免直接比较浮点数是否相等,而是使用一个小的容差范围来判断两个浮点数是否近似相等。
    3. 输出格式不同 :不同的编译器或平台可能对输出格式的要求有所不同,导致在某些情况下输出结果不一致。解决方案是确保输出结果的格式符合要求,例如使用合适的格式化字符串以保证输出结果的正确性。
      综上所述,我们可以尝试在程序中对数据类型进行调整,避免直接比较浮点数是否相等,以及确保输出结果的格式符合要求。下面是相应的修改方案:
      cCopy code
      #include <stdio.h>
      #include <math.h>
      #include <stdlib.h>
      int cmp(const void *a, const void *b) {
      return (*(double *)b - *(double *)a) > 0 ? 1 : -1; // 降序
      }
      int main() {
      int n, a, b;
      scanf("%d", &n);
      int x;
      double mo[n];
      for (int i = 0; i < n; i++) {
      scanf("%d %d", &a, &b);
      x = a * a + b * b;
      mo[i] = sqrt(x);
      }
      qsort(mo, n, sizeof *mo, cmp);
      printf("%.2lf", mo[0]);
      return 0;
      }
      
      在上述代码中,我们将 long double 类型改为 double 类型,并且在 cmp
      函数中避免直接比较浮点数大小。另外,输出格式使用了 %.2lf 来确保输出结果精确到小数点后两位。
      这样的修改应该能够保证程序在不同编译器和平台上的一致性,从而在 devc 中也能得到正确的输出结果。
      希望这些修改能够解决您的问题,如有其他疑问,请随时追问。

    如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订

    用户答题指南

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 3月14日
  • 已采纳回答 3月6日
  • 创建了问题 3月6日

悬赏问题

  • ¥20 python忆阻器数字识别
  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真