编写程序fibonaci.c,利用数组生成斐波那契数列 (1,1,23,…)的前45项,然后求出m到k项之和,(0<m<=k<45),包括m和k项的值。(m,k指项,数组的下标是从0开始的,即第1项为a[0]) 格式要求 输入:输入m和k,scanf("%d%d",&m,&k))输出: (1)如果输入不符合要求,则printf("ERROR"Y(2)若求出的和在sum中,则输出为: printf("sum=%ld\n",sum)
时间: 2023-11-22 21:55:28 浏览: 67
求Fibonacci数程序设计(汇编语言)
3星 · 编辑精心推荐
以下是fibonacci.c程序的代码:
```
#include <stdio.h>
int main() {
int m, k;
long sum = 0;
int a[45] = {1, 1}; // 前两项都为1
scanf("%d %d", &m, &k); // 输入m和k
// 生成斐波那契数列
for (int i = 2; i < 45; i++) {
a[i] = a[i-1] + a[i-2];
}
// 求m到k项之和
for (int i = m-1; i <= k-1; i++) {
sum += a[i];
}
// 输出
if (m < 1 || k > 45 || m > k) {
printf("ERROR\n");
} else {
printf("sum=%ld\n", sum);
}
return 0;
}
```
解释一下程序的逻辑:
1. 首先定义了一个整型数组a,长度为45,用于存放斐波那契数列的前45项。
2. 通过循环语句,生成斐波那契数列,将每一项存入数组a中。
3. 读入m和k,利用循环语句求出第m到第k项之和。
4. 判断输入是否合法,如果不合法输出"ERROR",否则输出求出的和。
注意,在第3步中,循环的下标是从0开始的,所以要将m和k分别减1才能得到正确的数组下标。
阅读全文