2、已知斐波那契數列的前幾個數分別為1,1,2,3,5,8,13,……,編程求此數列的前n(n>=5)項。
輸入說明
一行一個整數n(n>=5 and n<=100)
輸出說明
每5格一行,不足5個的也占一行
輸入樣例
5
輸出樣例
1 1 2 3 5
代碼
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, i, a[100];
a[0] = 1;
a[1] = 1;
cin >> n;
for (i=2;i<n;i++)
{
a[i] = a[i-1] + a[i-2];
}
for (i = 0; i < n; i++)
{
cout << a[i] << " ";
if ( i % 5 == 4 )
{
cout << endl;
}
}
return 0;
}
這里有錯嗎
uj5u.com熱心網友回復:
這里沒有錯,其實你運行一下就明白了uj5u.com熱心網友回復:
因為這是我在一次比賽的題目,最后查看得分情況是系統說我錯了一個空,但沒有說哪里錯了uj5u.com熱心網友回復:
是不是最后一行少了一個換行?題目要求 不足5個的也占一行,所以在return 0; 前需要列印一個換行uj5u.com熱心網友回復:
測驗了一下,應該是超出int型別了。當n>45時,都變成負數了int main() {
int n=100, a1=1, a2=1, i, j;
printf("1 1 ");
for (i=2,j=0; i<n; i++) {
if (i%5==0) printf("\n");
a2 = a1+a2;
a1 = a2-a1;
printf("%d ", a2);
if (a2<0 && j==0) j=I; //記錄越界時的i
}
printf("\n%d\n", j); //列印i為何值時開始越界
}
uj5u.com熱心網友回復:
#include<bits/stdc++.h>using namespace std;
int main()
{
int n, i, a[100];
a[0] = 1;
a[1] = 1;
cin >> n;
for (i=2;i<n;i++)
{
a[i] = a[i-1] + a[i-2];
}
for (i = 0; i < n; i++)
{
cout << a[i] << " ";
if ( i % 5 == 4 )
{
cout << endl;
}
}
return 0;
}
uj5u.com熱心網友回復:
粗體部分是空uj5u.com熱心網友回復:
有可能啊,但是它定義部分是題目已經給出來的,所以應該和資料范圍無關
uj5u.com熱心網友回復:
那估計就是差最后一個換行符if(i%5==4 || i==n-1) //每行5個或最后1個
uj5u.com熱心網友回復:
哦,這樣子啊
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/14255.html
標籤:C++ 語言
下一篇:關于c語言回傳值的地址問題
