小白笔记 | 您所在的位置:网站首页 › c语言阶乘函数GetFact子代码 › 小白笔记 |
由于变量的取值范围有限,因此计算阶乘这种大数值的时候很容易溢出,所以使用数组来存储每一位的数是比较好的办法。 目标:计算并打印N的阶乘 代码如下: #include #define MAX 100000 void Print_Factorial(int N,int a[]); int main(void){ int n; int num[MAX]; //创建数组用于存储结果 scanf("%d",&n); Print_Factorial(n,num); return 0; } void Print_Factorial(int N,int a[]){ int i,j; int temp; int digit; // 数的位数(输出时需要) int carry; // 乘法运算的进位数 digit = 1; carry = 0; a[1] = 1; for(i = 2; i temp = a[j] * i + carry; a[j] = temp % 10; //更新当前位置的值 carry = temp / 10; //计算进位数 } while(carry){ //将多余的进位数继续写入数组 a[j] = carry % 10; //这里直接用j是由于for循环结束时还加了一次 carry = carry / 10; j++; } digit = j - 1; //实际位数比j少1 } //逆序输出结果 for(i = digit; i >=1 ; i--) printf("%d",a[i]); }吼吼,如果有啥建议尽管提出来哈,小白来者不拒=-= |
CopyRight 2018-2019 实验室设备网 版权所有 |