黎子卿 发表于 2023-10-21 22:40:44

oj说我答案错误

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
        float a, b, c, p, s;
        cin >> a >> b >> c;
        p = (a + b + c) / 2;
        s = sqrt(p * (p - a) * (p - b) * (p - c));
        printf("%.2f", s);
        return 0;
}已知三角形的三条边a、b、c的长度,求三角形的面积S。
怎么不对啊

isdkz 发表于 2023-10-21 22:41:13

你的代码在计算三角形面积的公式上是正确的。然而,可能出现错误的原因是输入数据的问题或者输出格式的问题。

首先,确保你输入的三边长度是正确的,没有错误或者意外的字符。另外,注意输入的顺序是否和代码中的顺序一致。

其次,你使用了 printf 函数来输出结果,这是C语言的输出函数。在C++中,更常用的是使用 cout 进行输出。如果你想使用 printf 函数,确保你在代码开头包含了 #include <stdio.h> 。

最后,如果你的输入和输出都没有问题,但是OJ仍然显示答案错误,那么可能是由于浮点数精度问题导致的。你可以尝试在输出结果时增加一些精度控制,例如使用 printf("%.2lf", s) 或者 cout << fixed << setprecision(2) << s 来保留两位小数。

总结一下,你需要检查输入数据、输出格式以及浮点数精度控制这三个方面,来解决你的问题。希望对你有帮助!

Mike_python小 发表于 2023-10-21 22:41:23

请注意题目中要求结果输出两位小数,因此需要在 printf 函数中使用 %.2f 控制格式。

修改后的代码如下:


#include <iostream>
#include <cmath>
using namespace std;

int main() {
    float a, b, c, p, s;
    cin >> a >> b >> c;
    p = (a + b + c) / 2;
    s = sqrt(p * (p - a) * (p - b) * (p - c));
    printf("%.2f", s);
    return 0;
}


希望可以帮到你,祝你学习进步!

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

陶远航 发表于 2023-10-21 22:41:26

你的代码看起来是正确的,它使用了海伦公式来计算三角形的面积。海伦公式是一个公式,用于计算已知三边长度的三角形的面积。公式如下:

S = sqrt

其中,p是半周长,计算公式为:

p = (a + b + c) / 2

然而,你的代码可能在某些情况下会出现问题。例如,如果输入的三边长度不能构成一个三角形,那么sqrt函数中的参数可能会是负数,这将导致程序出错。在C++中,sqrt函数对负数的输入没有定义。

你可以添加一些错误检查来确保输入的三边长度可以构成一个三角形。以下是一个例子:

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    float a, b, c, p, s;
    cin >> a >> b >> c;
    if (a + b > c && a + c > b && b + c > a) {
      p = (a + b + c) / 2;
      s = sqrt(p * (p - a) * (p - b) * (p - c));
      printf(\"%.2f\", s);
    } else {
      cout << \"The input lengths cannot form a triangle.\" << endl;
    }
    return 0;
}


这段代码首先检查输入的三边长度是否可以构成一个三角形,如果可以,就计算面积;如果不可以,就输出一个错误信息。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
页: [1]
查看完整版本: oj说我答案错误