用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 即可。

Tags: