好吧,我需要制作一个程序,应该知道哪种类型的三角形,用户将输入三角形每一边的大小,然后它将打印哪种类型的三角形(斜角,等腰,等边),我是新手"程序员" (不到半个月),无论如何这就是我所拥有的:
#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,它给了我它的斜角肌,但是如果我写了num1!= num2!= num3,我知道这可以是愚蠢,但我只是在学习。感谢。
答案 0 :(得分: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
是一个布尔值(true或false,0或1)。然后将其与k
进行比较。
答案 1 :(得分:1)
问题在于2个表达式:
num1 == num2 == num3&amp; num1!= num2!= num3
如果输入1,1,2
第一个表达式为1 == 1为真,然后为真== 2为假
和第二个表达式:
1!= 1这是假的然后是假的!= 3这是真的所以你会得到字符串“scalene”