用scanf_s判斷輸入數據是否合法
用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 即可。