用scanf_s判斷輸入資料是否合法
對使用者輸入的整數進行求和。當使用者輸入任意字元時,結束程式並列印結果。
A. 使用者可以輸入整數和浮點數
B. 使用者可以在同一行輸入多個數字,數字之間可以是任意一個分隔符(如下圖)
C. 結果保留兩位小數
答:要求 A 不難實現,統一將使用者輸入的數轉換為浮點型即可(整數到浮點型的轉換是無損的);要求 B 則需要我們檢測使用者是輸入了數字之後是否按下了回車(檢測是否存在換行符)。因此,我們需要巢狀一個內迴圈來處理那些一行包含多組數字的情況。
程式碼實現:
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
float num = 0;
double sum = 0;
int status;
do
{
cout << "請輸入合法的數字:";
do
{
sum += num;
status = scanf_s("%f", &num);
}
while (getchar() != '\n'&& status == 1);
}
while (status == 1);
cout << "結果是:" << sum << endl;
system("pause");
return 0;
}
scanf_s函式會返回成功接收字元的個數,所以我們只需檢查每次呼叫 scanf_s函式的返回值是否為 1 即可。