c语言用数组求n的阶乘
时间: 2024-03-13 07:39:00 浏览: 19
以下是使用数组求n的阶乘的C语言代码,其中使用了一个数组来存储大数阶乘:
```c
#include <stdio.h>
#include <stdlib.h>
#define N 10 //计算N的阶乘
int main(){
//数组 1位 1!
int ary[N] = {1, 1};
int i, j;
for (i = 2; i <= N; i++){
//各个下标的阶乘,第0位...
for (j = 1; j <= ary[0]; j++){
ary[j] *= i;
}
//进位
for (j = 1; j <= ary[0]; j++){
if (ary[j] < 10) continue;
ary[j+1] += ary[j] / 10;
ary[j] %= 10;
if (j == ary[0]) ary[0]++;
}
}
//输出结果
for (i = ary[0]; i >= 1; i--){
printf("%d", ary[i]);
}
printf("\n");
return 0;
}
```
相关问题
求n的阶乘c语言二维数组
以下是使用C语言二维数组求n的阶乘的代码:
```c
#include <stdio.h>
int main() {
int n = 5; // 求5的阶乘
int arr[100][100]; // 定义二维数组
int i, j, k, carry = 0, len = 1;
arr[0][0] = 1; // 初始化数组
for (i = 2; i <= n; i++) { // 从2开始循环
for (j = 0; j < len; j++) { // 遍历数组
arr[i][j] = arr[i - 1][j] * i + carry; // 计算阶乘
carry = arr[i][j] / 10; // 进位
arr[i][j] %= 10; // 取余
}
while (carry) { // 处理进位
arr[i][len++] = carry % 10;
carry /= 10;
}
}
printf("%d! = ", n);
for (k = len - 1; k >= 0; k--) { // 倒序输出结果
printf("%d", arr[n][k]);
}
return 0;
}
```
求100的阶乘c语言二维数组
以下是使用C语言计算100的阶乘并使用二维数组存储结果的代码:
```c
#include <stdio.h>
#define MAX 1000 // 定义结果数组的最大长度
int main() {
int res[MAX][MAX] = {0}; // 初始化结果数组
res[0][0] = 1; // 初始化结果为1
int len = 1; // 记录结果数组的长度
for (int i = 2; i <= 100; i++) { // 从2开始遍历到100
int carry = 0; // 进位
for (int j = 0; j < len; j++) { // 遍历结果数组
int tmp = res[i-2][j] * i + carry; // 计算当前位的值
res[i-1][j] = tmp % 10; // 取个位数存储到结果数组中
carry = tmp / 10; // 计算进位
}
while (carry > 0) { // 处理最高位的进位
res[i-1][len++] = carry % 10;
carry /= 10;
}
}
printf("100! = ");
for (int i = len-1; i >= 0; i--) { // 倒序输出结果数组
printf("%d", res[99][i]);
}
printf("\n");
return 0;
}
```