用C语言编写一个程序,要求读入n,m,输出 n!*m!. (1<=n,m<=100) 结果的位数不超过400
时间: 2024-02-24 17:53:17 浏览: 77
以下是使用C语言编写的程序,可以读入n和m,然后输出n!*m!的结果:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_DIGITS 400
void multiply(char *num1, char *num2, char *result) {
int len1 = strlen(num1), len2 = strlen(num2);
int i, j, carry, sum;
char temp[MAX_DIGITS] = {0};
for (i = len2 - 1; i >= 0; i--) {
carry = 0;
for (j = len1 - 1; j >= 0; j--) {
sum = (num2[i] - '0') * (num1[j] - '0') + carry + temp[i + j + 1];
temp[i + j + 1] = sum % 10;
carry = sum / 10;
}
temp[i + j + 1] = carry;
}
for (i = 0; i < len1 + len2; i++) {
if (temp[i]) {
break;
}
}
for (j = 0; i < len1 + len2; i++, j++) {
result[j] = temp[i] + '0';
}
result[j] = '\0';
}
int main() {
int n, m;
char fact[MAX_DIGITS] = "1";
char temp[MAX_DIGITS];
scanf("%d %d", &n, &m);
for (int i = 1; i <= n; i++) {
sprintf(temp, "%d", i);
multiply(fact, temp, fact);
}
for (int i = 1; i <= m; i++) {
sprintf(temp, "%d", i);
multiply(fact, temp, fact);
}
printf("%s\n", fact);
return 0;
}
```
该程序通过调用multiply函数计算n!*m!的结果。multiply函数使用类似手算的方法进行乘法操作,将num1和num2中的每一位进行相乘,并将结果保存在temp数组中。然后将temp数组中的结果转换为字符型,并将结果保存在result中。
在主函数中,我们首先读入n和m,然后将fact初始化为1。接下来,使用循环计算n!和m!,并将结果保存在fact中。最后,将fact打印出来即可。
阅读全文