所以我正在撰寫一個 C 程式來檢查三角形是不等邊、等腰還是等邊。但是每當我將三個邊相等時,它仍然回傳 1(參見第 16 行的條件)。
// Write a C program to check whether the triangle is equilateral, isosceles or scalene triangle
#include <stdio.h>
int main()
{
int side1, side2, side3;
printf("Enter side 1: ");
scanf("%d", &side1);
printf("Enter side 2: ");
scanf("%d", &side2);
printf("Enter side 3: ");
scanf("%d", &side3);
if (((side1 side2)>side3)&&((side2 side3)>side1)&&((side1 side3)>side2))
{
if (side1!=side2!=side3)
{
printf("%d\n", side1!=side2!=side3);
if ((side1==side2)||(side1==side3)||(side2==side3))
{
printf("Triangle is isosceles!");
}
else
{
printf("Triangle is scalene!");
}
}
else
{
printf("Triangle is equilateral!");
}
}
else
{
printf("Input sides doesn't make a triangle!");
}
printf("\n");
}
karthik@cosmic:~/.../Binaries (compiled on Linux)$ ./scalene\ equilateral\ or\ isosceles
Enter side 1: 34
Enter side 2: 34
Enter side 3: 34
1
Triangle is isosceles!
我不明白為什么應該列印“1”或者為什么該回圈行應該作業。有人請幫助我!
uj5u.com熱心網友回復:
您正在列印在if條件中使用的相同運算式,所以如果if運算式是true,它顯然會列印1..
if (side1!=side2!=side3)
{
//If you got here, then side1!=side2!=side3 returns 1.
printf("%d\n", side1!=side2!=side3);
此外,side1 != side2將回傳1或0。然后你檢查 if (1 or 0) != side3,這可能是真的,并回傳 1。如果你啟用警告,編譯器可能會拋出一個警告。
你可能想要 side1 != side2 && side1 != side3 && side2 != side3
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/419656.html
標籤:
