我正在编写一个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
这样的输出,这显然不是序列。请帮忙。
答案 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
可以处理的最大值
数字2,147,483,647(或十六进制7FFF,FFFF 16 )是最大值 计算中32位带符号二进制整数的正值。它是 因此,声明为整数的变量的最大值(例如, 作为
int
)在许多编程语言中,以及最大可能得分, 许多电子游戏的钱等。
这里出错了
[...]
433494437 + 701408733 = 1134903170
701408733 + 1134903170 = 1836311903
1134903170 + 1836311903 = -1323752223