[英]C programming issue
我創建了一個簡單的猜謎游戲。 選擇一個0到100之間的數字,具體取決於您輸入的數字,程序將輸出熱,暖,冷或正確! 我選擇的正確答案是51。我的程序可以編譯並運行,但始終輸出正確! 輸入的每個值。 如果您願意的話,感謝您的幫助。
int main(void)
{
int number, answer;
answer = 51;
printf("Enter a number between 0 and 100:\n");
scanf("%d", &number);
if ((number > 51) && (number <= 56) || (number < 51) && (number >= 46))
{
printf("Hot\n");
}
else if ((number > 56) && (number <= 66) || (number < 46) && (number >= 36))
{
printf("Warm\n");
}
else if ((number > 66) && (number <= 100) || (number <36) && (number >= 0))
{
printf("Cold\n");
}
else if ((number > 100) || (number < 0))
{
printf("Error number has to be between 0 and 100 - re run\n");
}
else (number = 51);
{
printf("Correct!\n");
}
system ("pause");
return 0;
}
這個小片段:
else (number = 51);
{
printf("Correct!\n");
}
實際上等效於:
else
(number = 51);
//=======================
{
printf("Correct!\n");
}
它的第一部分是else
子句,如果激活該子句,它將number
設置為51
。
第二部分與if
語句部分完全斷開 ,並且是一個獨立的塊,無論如何執行。
如果必須將條件放在此處以提高可讀性(並且將是==
而不是=
),則可以執行以下操作:
else // (number == 51)
{
printf("Correct!\n");
}
順便說一句,您可以通過從特定內容開始並轉移到一般內容,從而使代碼更短,更易讀,例如(僅替換if
語句):
if (number == 51)
printf ("Correct!\n");
else if ((number >= 46) && (number <= 56))
printf ("Hot\n");
else if ((number >= 36) && (number <= 66))
printf ("Warm\n");
else if ((number >= 0) && (number <= 100))
printf ("Cold\n");
else
printf ("Error, number has to be between 0 and 100 - re run\n");
}
您無需檢查“溫度”的兩個范圍(上下),因為已經檢查了內部范圍。
else (number = 51);
{
printf("Correct!\n");
}
可以重寫為
else
{
number = 51;
}
{
printf("Correct!\n");
}
因此,無論您的電話號碼是什么, printf("Correct!\\n");
被執行。
它可以像
else
{
printf("Correct!\n");
}
從else語句中刪除條件。
int main(void)
{
int number, answer;
answer = 51;
printf("Enter a number between 0 and 100:\n");
scanf("%d", &number);
if ((number > 51) && (number <= 56) || (number < 51) && (number >= 46))
{
printf("Hot\n");
}
else if ((number > 56) && (number <= 66) || (number < 46) && (number >= 36))
{
printf("Warm\n");
}
else if ((number > 66) && (number <= 100) || (number <36) && (number >= 0))
{
printf("Cold\n");
}
else if ((number > 100) || (number < 0))
{
printf("Error number has to be between 0 and 100 - re run\n");
}
else
{
printf("Correct!\n");
}
return 0;
}
您的代碼說:如果所有if語句都不滿足,則為number分配51。 然后始終打印“正確!\\ n”。
在最后的else語句中,您應該使用else if(number == 51){...}或
else
{
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.