![](/img/trans.png)
[英]Error while trying to take multiple inputs in a switch inside a loop statement
[英]Unknown syntax error when trying to nest if statement inside of a do while loop
我正在編寫一個程序,該程序讀取用戶輸入的數字,檢查它是否在0到100之間,如果是,則該數字是平方根。 如果數字小於0,則會顯示一條錯誤消息。 如果該數字在100到200之間,則找到該數字的自然對數;如果該數字超過200,則循環終止。
#include <stdio.h>
#include <math.h>
int main (void)
{
float num;
double x, y;
do {
printf("Please enter a number \n");
scanf("%f", &num);
if (num > 0 && num <= 100)
{
x = sqrt(num);
printf("The square root of the number entered is %f \n", x);
}
else if (num <= 0)
{
printf("Please enter a positive number \n");
}
else (num > 100)
{
y = log(num);
printf("The natural log of the number entered is %f \n", y);
}
} while (num <= 200);
return 0;
}
我遇到的問題是,在構建解決方案時,我收到一條錯誤聲明,指出 預計之后
else (num > 100)
原因是什么,我不希望在此需要一個?
else (num > 100)
應該
else if (num > 100)
else
子句沒有任何條件-只是語法錯誤。
您還應該檢查scanf()
調用是否成功:
if (scanf("%f", &num) != 1) {
printf("Input error");
exit(1);
}
else
不接受表達式 , if
語法允許,它與詞法上最接近的前導相關。
格式是
if
(
表達式)
語句else
語句
引用C11
,第6.8.4.1章
[...]如果表達式比較不等於0,則執行第一個子語句 。以
else
形式,如果表達式比較等於0,則執行第二個子語句。如果通過標簽到達第一個子語句,則第二個子語句為未執行。
因此,要檢查其他條件,您需要具有另一個if
子句。
在啟用警告的情況下編譯代碼,您將看到編譯器像
警告:聲明無效[-Wunused-value]
else (num > 100)
^
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.