我不明白为什么我的代码没有显示正确的输出。例如:n=5的输入应给出输出1 2 3 6 11,但它给出的输出1 1 0 0 0。您能建议我的代码进行一些改进吗?

我的代码的工作原理与斐波那契数列相似。而不是添加前2个术语,而是添加前3个术语。

#include <stdio.h>

int main() {
    int a=0,b=1,c=0,i,n,s;  //To print  s=1(first term)
    scanf("%d",&n);
    for(i=1;i<=n;i++){
      s=a+b+c;
      printf("%d ",s);//for first time it will print 1.

      s=c;//for second term value of s=1 will be pasted in c.
      c=b; //for second term value of c=0 will be pasted in b.
      b=a; //for second term value of b=1 will be pasted in a.
    }    //loop will go back to first step and print s=1+0+1=2(second term)
     and so on ,3,6,11....

    return 0;
}


我希望n=5的输出是


  1,2,3,6,11


但实际输出是


  1 1 0 0 0

最佳答案

您分配的值不正确。您还要分配s = c,这是不正确的,因为将来不再使用它。

#include <stdio.h>

    int main() {
    int a=0,b=1,c=0,i,n,s;  //To print  s=1(first term)
    scanf("%d",&n);
    for(i=1;i<=n;i++){
    s=a+b+c;
    printf("%d ",s);//for first time it will print 1.

    // The values you were swapping was in reverse order.
    a = b;
    b = c;
    c = s;
    }

    return 0;
}

关于c - 如何打印最多n个术语的序列,每个术语=前三个术语的总和,第一个术语= 1,然后2 3 6 11,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57074000/

10-13 06:59