2 回答

TA貢獻1853條經驗 獲得超18個贊
f( (isdigit(number_1)) || (isdigit(number_2)))
這里有幾個錯。
isdigit() 參數必須是整型,不能用于 double.
邏輯或 用得不對,要 邏輯 與 才 說得過去,你需要 number_1 和 number_2 都是數字才可以。
|| 運算,一個是數字就滿足 if.
isdigit() 只能判斷1個字符。
如果 輸入 .2 + .3 就不能通過。
======
正確方法:
int k;
k=scanf("%lf %c %lf",&number_1,&operition,&number_2);
if (k == 3){
輸入數據格式正確,進入 switch() 等 判斷和計算
}

TA貢獻1788條經驗 獲得超4個贊
你的問題還不是“scanf()把回車作為輸入值的問題”,scanf()認為回車是輸入的結束。
程序不能得出正確的結果,原因在于:
scanf("%lf %c %lf",&number_1,&operition,&number_2);
這時,如果你輸入的第一個參數和第三個參數,如果不是數字型的就會出錯。
if( (isdigit(number_1)) || (isdigit(number_2)))
也有問題,首先 isdigit()用錯。函數原型為int isdigit(char c),要求參數為字符類型而不是f型。
其次(isdigit(number_1)) || (isdigit(number_2))應該是&&而不是||。
另外程序本身還存在一些問題,比如,兩個實型數求余怎么求?
- 2 回答
- 0 關注
- 102 瀏覽
添加回答
舉報