對不起,代碼比可能長得多。下面是一個「階乘計數」的例子代碼,在處理時輸入符號。我試圖展示不同的可能性。我現在看到的唯一問題是,如果用戶剛輸入沒有輸入任何符號的回車,就沒有任何反應。這是我在這裏的第一篇文章,所以我很抱歉,任何可能的字體,格式和其他廢話。 MaxNum = 21是根據經驗確定的無符號long long int返回類型。
我已經籤這樣的輸入情況:ABCDE 2. -7 22 21
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <cstdlib>
unsigned long long int CalcFact(int p)
{ return p == 0 || p == 1 ? 1 : p*CalcFact(p-1); }
int main()
{
int MaxNum = 21, HowMany = 0, MaxAttempts = 5, Attempts = 0;
char AnyKey[] = "", *StrToOut = "The factorial of ", Num[3] = "";
bool IsOK = 0;
while(!IsOK && Attempts++ < MaxAttempts)
{
std::cout << "Please enter an integer > 0 and <= 21: ";
std::cin.width(sizeof(Num)/sizeof(char));
std::cin >> Num;
for(int Count = 0; Count < strlen(Num); Count++)
IsOK = isdigit(Num[Count]) ? true : false;
if(IsOK)
{
if(!(atoi(Num) >= 0 && atoi(Num) <= MaxNum))
IsOK = false;
else
{
for(int Count = 0; Count <= MaxNum; Count++)
{
std::cout << StrToOut << Count << std::setfill('.')
<< std::setw(Count < 10 ? 30 : 29)
<< CalcFact(Count) << std::endl;
}
}
}
if(!IsOK && Attempts > 0)
{
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
}
if(!IsOK)
return -1;
else
std::cin >> AnyKey;
return 0;
}
什麼是'rows'?一個'int'? – 2013-02-12 16:07:10
你確定只允許使用'cstdlib'嗎?因爲那看起來像是''對我來說 –
2013-02-12 16:08:39
假裝行已經在 – mystycs 2013-02-12 16:08:42