际天 发表于 2021-6-1 18:03

求助 斐波那契 C语言

本帖最后由 际天 于 2021-6-1 18:08 编辑

xdm,帮忙看看哪里错了[笑哭]

#include<stdio.h>
int main() {
      int a = {1, 1};
      int i;
      int n;
      scanf("%d", &n);
      if (n <= 2) {
                printf("%d\n", 1);
      }
      for (i = 2; i <= n; i++) {
                a = a + a;
      }
      printf("%d\n", a);
      return 0;
}

快乐小风 发表于 2021-6-1 18:11

不太懂C语言<br />
上面定义的n为int, 默认值应该是0吧, 然后下面的if n <=2 这里不是永远为真吗? n 看样子是不是 a 数组的长度?

月半宝2020 发表于 2021-6-1 18:13

谢谢楼主

pinoz 发表于 2021-6-1 18:14

你这没保存从第三项开始的值,应该是
for (i = 2; i <= n; i++) {
                a = a + a;
      }
      printf("%d\n", a);

我心她有丶 发表于 2021-6-1 18:20

本帖最后由 我心她有丶 于 2021-6-1 18:22 编辑


a = a + a ;

printf("%d",a);

际天 发表于 2021-6-1 18:29

pinoz 发表于 2021-6-1 18:14
你这没保存从第三项开始的值,应该是
for (i = 2; i

原来如此,感谢!!!

Apologize2U 发表于 2021-6-1 20:11

快乐小风 发表于 2021-6-1 18:11
不太懂C语言
上面定义的n为int, 默认值应该是0吧, 然后下面的if n

scanf("%d",&n);这句说明输入一个数并把它赋值给n,一般输入的会大于2,输入小于2要有截止条件比如输入1,解果就为1,输入2,结果也为1.

Apologize2U 发表于 2021-6-1 20:18

我感觉除了改成 for (i = 2; i <= n; i++) {
                a = a + a;
      }
      printf("%d\n", a);
还得在for循环前加一个else,要是不加的话,不管怎样都会出现两个输出。

tester001 发表于 2021-6-1 23:06

pinoz 发表于 2021-6-1 18:14
你这没保存从第三项开始的值,应该是
for (i = 2; i

你这没区别。。。。C又不看缩进

我心她有丶 发表于 2021-6-1 23:17

本帖最后由 我心她有丶 于 2021-6-1 23:18 编辑

tester001 发表于 2021-6-1 23:06
你这没区别。。。。C又不看缩进
// 区别大了去了,你仔细看看吧。a和a可不同
页: [1] 2
查看完整版本: 求助 斐波那契 C语言