[华为机试练习题]17.可怕的阶乘

题目

题目标题:计算阶乘n!是一件可怕的事情,因为当n并不是很大时,n!将是一个很大的值。例如13! = 6227020800,已经超过了我们常用的unsigned int类型的取值范围。请设计一个程序,使其可以计算100以内的数的阶乘,结果用字符串的形式输出详细描述:接口说明原型:void CalcNN(int n, char *pOut)输入参数:int n 需要计算的阶乘数输出参数:char *pOut 结算结果,内存由调用者负责管理返回值:无限制:无举例:题目来源: 软件训练营 练习阶段: 中级

代码

/*—————————————* 日期:2015-06-30* 作者:SJF0115* 题目:可怕的阶乘* 来源:华为上机—————————————–*/using namespace std;void CalcNN(int n, char *pOut){if(pOut == NULL || n < 0){return;}= 0;pOut[index++] = ‘1’;if(n == 1 || n == 0){pOut[index] = ‘\0’;return;}tmp,carry;for(int i = 2;i <= n;++i){// 进位清0carry = 0;// i与当前计算阶乘结果的每一位相乘for(int j = 0;j < index;++j){tmp = (pOut[j] – ‘0’) * i + carry;pOut[j] = tmp % 10 + ‘0’;carry = tmp / 10;}(carry){pOut[index++] = carry % 10 + ‘0’;carry /= 10;}//while}//ifpOut[index] = ‘\0’;// 翻转for(int i = 0,j = index-1;i < j;++i,–j){swap(pOut[i],pOut[j]);}//for}

,你并不一定会从此拥有更美好的人生,

[华为机试练习题]17.可怕的阶乘

相关文章:

你感兴趣的文章:

标签云: