| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
#include <iostream> 
#include <climits> 
 
unsigned long returnFactorial(unsigned short num) throw(const char *); 
 
int main() 
{ 
        unsigned short num = 0; 
         
        std::cout << "请输入一个整数:"; 
         
        while( !(std::cin >> num) || (num < 1)) 
        { 
                std::cin.clear();           //清理错误表示符 
                std::cin.ignore(100,'\n');  //清除缓存区  
                std::cout << "请输入一个整数:";  
        } 
        std::cin.ignore(100,'\n'); 
         
        try 
        { 
            unsigned long factorial = returnFactorial(num); 
            std::cout << num << "的阶乘是:" <<  factorial; 
        }  
         
        catch(const char *e) 
        { 
                std::cout << e; 
        } 
         
        return 0; 
} 
 
unsigned long returnFactorial(unsigned short num) throw(const char *) 
{ 
        unsigned long sum = 1; 
        unsigned long max = ULONG_MAX; 
         
        for(int i = 1;i <= num; i++) 
        { 
                sum *= i; 
                max /= i; 
        } 
        if(max < 1) 
                throw "该数值太大,无法在此计算机中计算阶乘\n";  
        else 
            return sum;  
         
} |   
 
 
 
 |