啊~~~~ 2024-08-30 07:41 采纳率: 100%
浏览 19
已结题

这代码怎么改(急)球qiou了(c++)

我想要做一个三角形计算器,但是不能输入,直接退出了。┭┮﹏┭┮

                int k,h,j,r;
        if(k+j>r&&k+r>j){
            cout<<"请输入底,高和两个侧面:";
            cin>>k>>h>>j>>r;
            cout<<"周长是:"<<k+j+r;
            cout<<"面积是:"<<k*h/2;
            if(k==j&&k==r&&j==r){
                cout<<"等边三角形";
            }
            else if(j==r){
                cout<<"等腰三角形";
            }
            else if(k!=j&&k!=r&&j!=r){
                cout<<"普通三角形";
            }
            else{
                    cout<<"错误";
                }

  • 写回答

3条回答 默认 最新

  • AitTech 2024-08-30 09:19
    关注

    在您提供的代码中,有几个问题和潜在的逻辑错误。首先,您在使用变量 k, h, j, r 之前就应该确保它们已经被正确地初始化和赋值。但是,在您的代码中,这些变量的赋值依赖于一个条件判断(if(k+j>r&&k+r>j)),而这个条件判断在变量赋值之前就执行了,这会导致未定义行为(如果变量未被初始化)。

    此外,从逻辑上看,您似乎想要计算一个三角形的周长和面积,但变量的命名(k, h, j, r)与常见的三角形属性(底、高、两边)不一致,这可能会导致混淆。

    让我们重写这段代码,使其更清晰、逻辑更合理:

    #include <iostream>
    using namespace std;
    
    int main() {
        double base, height, side1, side2;
        cout << "请输入底,高和两个侧面:";
        cin >> base >> height >> side1 >> side2; // 直接输入,不需要先判断
    
        // 假设输入的 side1 和 side2 是三角形的两边,base 是底,height 是高
        double perimeter = base + side1 + side2; // 计算周长
        double area = base * height / 2; // 计算面积
    
        cout << "周长是:" << perimeter << endl;
        cout << "面积是:" << area << endl;
    
        // 接下来判断三角形的类型
        if (side1 == side2 && side1 == base) {
            cout << "等边三角形";
        } else if (side1 == side2 || side1 == base || side2 == base) {
            cout << "等腰三角形";
        } else {
            cout << "普通三角形";
        }
    
        return 0;
    }
    

    注意事项:

    1. 变量命名:使用更具描述性的变量名,如 base, height, side1, side2
    2. 输入顺序:直接要求用户输入所有必要的值,而不是在条件判断之后。
    3. 逻辑判断:简化三角形的类型判断逻辑,只考虑边长的相等性。
    4. 错误处理:此代码未检查输入的边长是否能构成三角形(即满足三角形的三边关系)。在实际应用中,您可能需要添加这样的检查。

    希望这能帮助您理解并改进您的代码!

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

报告相同问题?

问题事件

  • 系统已结题 9月10日
  • 已采纳回答 9月2日
  • 创建了问题 8月30日