如何用C语言编写一个程序,通过键盘输入正整数m,并利用定义的函数fact(n)计算每个输入值m对应的阶乘(n!)?请详细解释函数的定义和调用过程。
时间: 2024-10-17 10:11:37 浏览: 30
C语言程序设计-编写main程序调用函数fact求解从m个元素选n个元素的组合数的个数;组合数=m!(n!.(m-n)!);
5星 · 资源好评率100%
在C语言中,你可以按照以下步骤编写一个程序来计算任意正整数m的阶乘:
1. 首先,我们需要定义一个名为`fact`的递归函数,用于计算阶乘。递归是一种函数自身调用的方式,在这种情况下,我们会在每次函数调用中将n减一,直到n等于1为止。
```c
#include <stdio.h>
// 定义阶乘函数,接收一个整数n作为参数,返回n的阶乘
unsigned long long fact(int n) {
if (n == 0 || n == 1) { // 阶乘的基本情况,0! 和 1! 都是1
return 1;
} else {
// 递归调用:n! = n * (n - 1)!
return n * fact(n - 1);
}
}
```
2. 接下来,编写主函数`main()`,从用户那里获取输入并调用`fact`函数。我们将使用`scanf`函数来读取用户输入的正整数m。
```c
int main() {
int m;
printf("请输入一个正整数m: ");
scanf("%d", &m); // 输入验证并保存到变量m
if (m >= 0) { // 检查输入是否为正整数
unsigned long long result = fact(m); // 调用fact函数计算m的阶乘
printf("m! 的结果是: %llu\n", result);
} else {
printf("输入错误,请输入一个正整数。\n");
}
return 0;
}
```
在这个程序中,如果用户输入的是负数或零,我们会给出提示并要求重新输入。然后,我们将计算给定m的阶乘并打印结果。
阅读全文