我想求阶乘C语言应该怎么写
时间: 2023-11-11 18:07:40 浏览: 73
下面是一个计算阶乘的C语言程序:
```c
#include <stdio.h>
int main()
{
int n, i, fact = 1;
printf("Enter a positive integer: ");
scanf("%d", &n);
if (n < 0)
printf("Error: Factorial of negative number doesn't exist.");
else
{
for (i = 1; i <= n; ++i)
fact *= i;
printf("Factorial of %d = %d", n, fact);
}
return 0;
}
```
该程序首先要求用户输入一个正整数。如果该数字小于零,则打印错误消息。否则,该程序使用for循环计算阶乘并将其存储在fact变量中。最后,该程序将结果打印到控制台窗口中。
相关问题
调用函数求阶乘c语言
在C语言中,你可以通过递归或循环的方式实现计算阶乘的功能。这里我提供两种常见的方法:
**1. 递归实现:**
```c
#include <stdio.h>
// 递归函数,计算阶乘
unsigned long long factorial(int n) {
if (n == 0 || n == 1) // 阶乘的基本情况,0和1的阶乘都是1
return 1;
else
return n * factorial(n - 1); // 递归调用自身,每次减小n值
}
int main() {
int num;
printf("请输入一个非负整数:");
scanf("%d", &num);
unsigned long long result = factorial(num);
printf("该数字的阶乘是:%llu\n", result);
return 0;
}
```
**2. 循环实现:**
```c
#include <stdio.h>
#include <math.h> // 包含pow函数用于演示,实际应用中通常不引入
// 使用循环计算阶乘
unsigned long long factorial_iterative(int n) {
unsigned long long fact = 1;
for (int i = 1; i <= n; ++i)
fact *= i;
return fact;
}
int main() {
int num;
printf("请输入一个非负整数:");
scanf("%d", &num);
unsigned long long result = factorial_iterative(num);
printf("该数字的阶乘是:%llu\n", result);
return 0;
}
```
在这两个示例中,都假设输入的是非负整数。
使用递归求阶乘c语言
在C语言中,你可以使用递归来计算一个整数的阶乘。递归是一种函数自身在其定义域内调用自身的编程技巧。下面是一个简单的C语言函数,用于计算阶乘:
```c
#include <stdio.h>
// 定义阶乘函数,参数n表示要计算的阶乘数
unsigned long long factorial(int n) {
// 基线条件:0和1的阶乘为1
if (n == 0 || n == 1) {
return 1;
}
// 递归条件:n的阶乘等于n乘以(n-1)的阶乘
else {
return n * factorial(n - 1);
}
}
int main() {
int num;
printf("请输入一个非负整数:");
scanf("%d", &num);
if (num >= 0) {
unsigned long long result = factorial(num);
printf("该数的阶乘是:%llu\n", result);
} else {
printf("输入错误,只能计算非负整数的阶乘。\n");
}
return 0;
}
```
阅读全文