#include<stdio.h> int fun(int n) //定义函数 { if(n==0||n==1) { n=1; } else { n=n*fun(n-1); //递归调用函数 } } int main() { int i,j; printf("请输入一个数字:\n"); scanf("%d",&i); j=fun(i); printf("它的阶乘为: %d",j); }不考虑负数情况
时间: 2024-01-24 20:02:28 浏览: 28
好的,以下是不考虑负数情况的代码:
```c
#include <stdio.h>
int fun(int n) {
if (n == 0 || n == 1) {
return 1; // 返回结果
}
else {
return n * fun(n-1); // 递归调用函数
}
}
int main() {
int i, j;
printf("请输入一个数字:\n");
scanf("%d", &i);
j = fun(i);
printf("它的阶乘为: %d\n", j);
return 0;
}
```
解释一下代码:
- `fun` 函数用来计算 n 的阶乘,使用递归调用的方式。
- 当 n 等于 0 或 1 时,直接返回 1。
- 否则,递归调用 `fun(n-1)`,并将结果乘以 n,最终返回结果。
- `main()` 函数中,调用 `fun(i)` 来计算 i!,并将结果保存在 `j` 变量中。
- 最后一行输出 `j` 的值,即 i! 的结果。
相关问题
#include <stdio.h> int fun(int x)
#include <stdio.h> 是C语言中的一个预处理指令,它告诉编译器在编译过程中要包含stdio.h头文件。stdio.h是标准输入输出库的头文件,其中包含了一些常用的输入输出函数的声明,比如printf和scanf。
int fun(int x) 是一个函数的声明,它定义了一个名为fun的函数,该函数接受一个整数参数x,并返回一个整数值。函数声明告诉编译器函数的名称、参数类型和返回类型,但不包含函数的具体实现。
*定义函数实现n个字符串按字典顺序排序 开头: #include<stdio.h> #include<string.h> void fun (char *str[],int n)
好的,以下是一个实现n个字符串按字典顺序排序的示例代码:
```
#include <stdio.h>
#include <string.h>
void fun(char *str[], int n) {
int i, j;
char *temp;
// 使用冒泡排序算法
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (strcmp(str[j], str[j+1]) > 0) {
// 交换两个字符串的位置
temp = str[j];
str[j] = str[j+1];
str[j+1] = temp;
}
}
}
}
int main() {
char *str[] = {"apple", "banana", "orange", "grape", "kiwi"};
int n = sizeof(str) / sizeof(str[0]);
fun(str, n);
printf("排序后的字符串数组:\n");
for (int i = 0; i < n; i++) {
printf("%s ", str[i]);
}
printf("\n");
return 0;
}
```
在这个示例代码中,我们使用了冒泡排序算法对字符串数组进行排序。在排序过程中,我们使用了 `strcmp()` 函数来比较两个字符串的大小关系,并使用指针变量 `temp` 来交换两个字符串在数组中的位置。最后,我们输出排好序的字符串数组。
请注意,这个示例代码中的字符串数组是在程序中直接定义的。如果您需要从用户输入中获取字符串数据,请使用 `scanf()` 或其他输入函数来读取数据,并将它们存储在字符串数组中。