3 回答

TA貢獻1876條經驗 獲得超6個贊
#include <iostream>
using namespace std;
int main()
{
int i = 1, s = 1, n;
cout << "輸入n="; cin >> n;
while (n<1 || n>15){ //n的值若不在1-15范圍內將不斷循環輸入
cout << "n的范圍是1-15,請重新輸入n的值\n輸入n=";
cin.clear();
cin.sync();
cin >> n;
}
do
{
s = s*i;
i++;
} while (i <= n);
cout << "n!=" << s << endl;
return 0;
}

TA貢獻1796條經驗 獲得超10個贊
這么改
cin>>n;
while(1)
{
if(n<1 || n>15)
{cout<<"n的值超出范圍,請重新輸入!"<<endl;
cout<<"輸入n=";
cin>>n;}
else
break;
}

TA貢獻1827條經驗 獲得超8個贊
#include <iostream>
using namespace std;
void main()
{
int num, reverse = 0, count = 0;
while (1)
{
cout<<"請輸入一個不多于五位的正整數:";
cin>>num; // 輸入數據
if (cin.bad() || num <= 0 || num >= 100000)
{
// 如果輸入的不是整數,或者小于0,或者大于5位數,報錯重試
cin.clear();
fflush(stdin);
cout<<"輸入錯誤!請重試!"<<endl;
continue;
}
break;
}
// 逆序處理,同時算位數
while (num != 0)
{
int r = num % 10;
reverse = reverse * 10 + r;
num = num / 10;
count++;
}
cout<<"該數為"<<count<<"位數"<<endl;
cout<<"逆序數為"<<reverse<<endl;
}
添加回答
舉報