我最近真的開始在學校學習 C,但我遇到了一個問題,我看不出哪里出了錯。我目前正在學習函式,我必須開發一個程式來計算具有多個函式的一些幾何形狀的面積。這不太順利,但我遇到的問題與 IF 陳述句中的 OR 相關。我試圖讓用戶選擇特定的字符,否則它會顯示“無效選項,再試一次”。問題是即使用戶選擇了正確的字符,也會顯示“警告”。抱歉英語不好。
int menu()
{
char opc;
do
{
printf("Areas\n");
printf("\nTriangle (nr): \t\t\tRectangle (nr): \n");
printf("\nCircle (nr): \t\t\t\tSquare (nr): ");
printf("\n\n\t\tOPIONS");
printf("\n\n\t(T)riangle\n\t(R)ectangle\n\t(S)quare\n\t(C)ircle\n\t(E)nd\n\n");
scanf(" %c", &opc);
if((opc!='t') || (opc != 'c') || (opc != 'r') || (opc != 's') || (opc !='e'))
{
printf("\nInvalid option, try again\n");
}
}
while(opc!='e');
return opc;
}
uj5u.com熱心網友回復:
你要:
if((opc!='t') && (opc != 'c') && (opc != 'r') && (opc != 's') && (opc !='e'))
在您的代碼中,opc始終只能有一個值,至少有 5 個條件是true。如果條件之一為true,則整個運算式為true。所以它總是true盡管價值opt
uj5u.com熱心網友回復:
't'!='c', 'c'!='r' 等等,所以沒有一個字母是正確的 - 你滿足所有字母的條件。
uj5u.com熱心網友回復:
你需要使用 && 而不是 || .因為如果第一個條件為真,我的意思是用戶輸入了 't' 以外的字符,編譯器將不會檢查下一個條件,整個運算式將變為真。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/367262.html
上一篇:我需要幫助
