学校微网站模板下载地址,杭州网站建设(推荐乐云践新),怎么做网站优化 site,北京 公司网站 备案中 开通访问该楼层疑似违规已被系统折叠 隐藏此楼查看此楼/*程序功能#xff1a;计算一个正整数n的阶乘#xff0c;目前最大能运算10000的阶乘#xff0c;可秒杀。程序意义#xff1a;加强自己对于大数的处理。说明#xff1a;此程序对乘法和除法还未做任何优化#xff0c;如果用上位…该楼层疑似违规已被系统折叠 隐藏此楼查看此楼/*程序功能计算一个正整数n的阶乘目前最大能运算10000的阶乘可秒杀。程序意义加强自己对于大数的处理。说明此程序对乘法和除法还未做任何优化如果用上位运算的知识应该可以继续优化。 */ #include #define N 10000//宏定义数组长度 int main(){int nResult[N] {0};//必须用一个足够大的数组来存储计算结果来确保计算结果不会溢出int nDigit 1; //位数int nTemp 0;//阶乘的任一元素与临时结果的某位的乘积结果int i 0;int j 0;int nCarry 0;//进位int nNum 0;printf(Please input n:);scanf(%d, nNum);nResult[0] 1;//先将结果初始化为1for (i 2; i nNum; i)//开始阶乘阶乘元素从2开始一次“登场”{//按最基本的乘法运算思想来考虑将临时结果的每位与阶乘元素相乘for (j 1, nCarry 0; j nDigit; j){nTemp nResult[j - 1]*i nCarry;//相应阶乘中的一项与当前所得临时结果的某位相乘且加上进位nResult[j - 1] nTemp % 100000;//更新临时结果的位上信息nCarry nTemp / 100000;//看是否有进位}while (nCarry)//判断当前临时结果的最高位是否有进位{nResult[nDigit] nCarry % 100000;//新增一位nCarry / 100000;//看是否还能继续进位}}for (i nDigit; i 1; i--)//显示结果{printf(%d, nResult[i - 1]); if (0 nResult[i - 1]){printf(0000);//因为每个数组元素存储5位数字每次输出项为0时需补上缺少的4个零}}printf(\r\n);return 0;}