c语言输入2 个正整数m和n(1<=m,n<=10000),输出m 和n之间所有的Fibonacci数。 Fibonacci 序列(第1项起):1 1 2 3 5 8 13 21 ...... 要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。
时间: 2023-11-01 11:14:27 浏览: 93
以下是实现该功能的完整代码:
```c
#include <stdio.h>
int fib(int n)
{
if (n == 1 || n == 2) {
return 1;
}
int a = 1, b = 1;
for (int i = 3; i <= n; i++) {
int c = a + b;
a = b;
b = c;
}
return b;
}
int main()
{
int m, n;
printf("请输入两个正整数m和n(1<=m,n<=10000):");
scanf("%d%d", &m, &n);
printf("%d和%d之间的Fibonacci数为:", m, n);
int f = fib(1);
while (f <= n) {
if (f >= m) {
printf("%d ", f);
}
f = fib(fib(1) == 1 ? 3 : 4);
}
printf("\n");
return 0;
}
```
首先定义了一个函数 `fib`,它的功能是返回第 n 项 Fibonacci 数。如果 n 等于 1 或 2,直接返回 1,否则进行循环计算,使用变量 a 和 b 分别表示第 n-2 项和第 n-1 项的数值,然后计算第 n 项的值,并更新 a 和 b 的值,最后返回 b。
在 `main` 函数中,先读入两个正整数 m 和 n,然后使用 while 循环计算 Fibonacci 数,如果数值大于等于 m 且小于等于 n,就输出这个数。每次循环中,先计算出第一个大于等于 f 的 Fibonacci 数,然后判断是否在范围内,如果是就输出。最后更新 f 的值,让它成为下一个大于等于 f 的 Fibonacci 数。
阅读全文