1

好吧,我需要编写一个程序,它应该知道哪种类型的三角形,用户将输入三角形每一边的大小,然后它会打印出哪种类型的三角形(不等腰、等腰、等边),我是一个非常新手的“程序员”(不到半个月),无论如何这就是我所拥有的:

#include <iostream>


using namespace std;
int main(){

    int num1;
    int num2;
    int num3;

    cout << "first number" << endl;
    cin >> num1;
    cout << "second number" << endl;
    cin >> num2;
    cout << "third number"  << endl;
    cin >> num3;

    if (num1 == num2 == num3){
        cout << "it's equilateral" << endl;
    }

    else if (num1 != num2 != num3){
        cout << "it's scalene" << endl;
    }

    return 0;
}

为什么我的代码不能正常工作?例如:我为第一个输入 1,然后为第二个输入 1,然后为第三个输入 2,它给了我它的 scalene,但是如果我写 num1 != num2 != num3,我知道这可能很愚蠢,但我我只是在学习。谢谢。

4

2 回答 2

2

将您的代码更改为

if (num1 == num2 && num2 == num3){
    cout << "it's equilateral" << endl;
}

else if (num1 != num2 || num2 != num3){
    cout << "it's scalene" << endl;
}

因为当您编写时n == m == k,编译器将其视为(n==m) ==k,n == m是一个布尔值(真或假,0 或 1)。然后与 比较k

于 2013-09-24T03:48:49.330 回答
1

问题出在2个表达式中:

num1 == num2 == num3 & num1 != num2 != num3

如果您输入 1, 1, 2

第一个表达式将是 1 == 1 为真,然后为真 == 2 为假

对于第二个表达式:

1 != 1 是假的,然后是假的 != 3 是真的,所以你会得到字符串“scalene”

于 2013-09-24T03:54:34.193 回答