求一百的阶乘(极简)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求一百的阶乘(极简)相关的知识,希望对你有一定的参考价值。
#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; }
以上是关于求一百的阶乘(极简)的主要内容,如果未能解决你的问题,请参考以下文章