首页 > 代码库 > 求一百的阶乘(极简)
求一百的阶乘(极简)
#include<stdio.h> int main() { int a[512] = { 0 }, l, i, j, t; //利用a[512]数组来存放求得的阶乘结果,l为阶乘结果的数位。列如,4!=12,则l=2。6!=360,则l=3。 a[511] = 1; //将数组a[512]初始化,且从后往前存,应为有进位,所以从后往前存比较方便。 l = 1; for (i = 1; i <= 100; i++) //最外层循环用来求阶乘,循环100次。 { for (j = 1; j <= l; j++) //数组中的数每个都乘当前的i值,j<l,循环数的长度遍,每一位数都乘以当前值,并把求出来的值取代当前值。 a[512 - j] *= i; for (j = 1; j <= l; j++) { if (a[512 - j] > 9 && j != l) //把数组中的每一个多位数进位,从数组后面进起,但最前面的不进。 { t = a[512 - j] / 10; a[512 - j] %= 10; a[512 - j - 1] += t; } if (a[512 - j] > 9 && j == l) //把最前面的也进位,但这时数的长度l要加1。 { t = a[512 - j] / 10; a[512 - j] %= 10; a[512 - j - 1] += t; l++; } } } for (i = l; i > 0; i--) //循环输出数组元素,从a[512-l]开始。 printf("%d", a[512 - i]); return 0; }
求一百的阶乘(极简)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。