Fibonacci序列,用户输入前2个数字

时间:2017-10-20 19:07:02

标签: c arrays fibonacci

我正在编写一个C程序来获取Fibonacci编号,用户需要输入前2个数字并从那里开始序列。这是我的代码:

#include <stdio.h>
#define MAX_SIZE 100

int main()
{
    int i, input[MAX_SIZE];

    printf("please Enter first 2 digit of the Sequence\n");

    scanf("%d, %d" , &input[0], &input[1]);

    for (i = 2; i < MAX_SIZE; i++)
    {
        input[i] = input[i-2] + input[i-1];

     printf("%d\n", input[i]);
    }

    return 0;    
}

但是当我使用输入2和3运行代码时,我得到一个像1499141456这样的输出,这显然不是序列。请帮忙。

3 个答案:

答案 0 :(得分:1)

退出循环时,import { Component, OnInit } from '@angular/core'; import { MdDialog, MdDialogRef } from '@angular/material'; @Component({ selector: 'app-router-modal', templateUrl: './router-modal.component.html', styleUrls: ['./router-modal.component.css'] }) export class RouterModalComponent<T> implements OnInit { private ref: MdDialogRef<T>; constructor( private dialog: MdDialog, ) { } ngOnInit() { this.ref = this.dialog.open<T>(T); //'T' only refers to to a type, but was used as a value here. } } 等于i

MAX_SIZE

您正在打印数组范围之外的值(printf("%d\n", input[i]); )。

答案 1 :(得分:0)

将print语句放入循环括号中。

or (i = 2; i < MAX_SIZE; i++)
    {
    input[i] = input[i-2] + input[i-1];
    printf("%d\n", input[i]);
    }

答案 2 :(得分:0)

这是因为您的代码中的结果大于int可以处理的最大值

Live example here!

来自Wikipedia

  

数字2,147,483,647(或十六进制7FFF,FFFF 16 )是最大值   计算中32位带符号二进制整数的正值。它是   因此,声明为整数的变量的最大值(例如,   作为int)在许多编程语言中,以及最大可能得分,   许多电子游戏的钱等。

这里出错了

[...]
433494437 + 701408733 = 1134903170
701408733 + 1134903170 = 1836311903
1134903170 + 1836311903 = -1323752223