本題要求實作一個計算Fibonacci數的簡單函式,并利用其實作另一個函式,輸出兩正整數m和n(0<m≤n≤10000)之間的所有Fibonacci數。所謂Fibonacci數列就是滿足任一項數字是前兩項的和(最開始兩項均定義為1)的數列。
函式介面定義:
int fib( int n );
void PrintFN( int m, int n );
其中函式fib須回傳第n項Fibonacci數;函式PrintFN要在一行中輸出給定范圍[m, n]內的所有Fibonacci數,相鄰數字間有一個空格,行末不得有多余空格。如果給定區間內沒有Fibonacci數,則輸出一行“No Fibonacci number”。
裁判測驗程式樣例:
#include <stdio.h>
int fib( int n );
void PrintFN( int m, int n );
int main()
{
int m, n, t;
scanf("%d %d %d", &m, &n, &t);
printf("fib(%d) = %d\n", t, fib(t));
PrintFN(m, n);
return 0;
}
/* 你的代碼將被嵌在這里 */
輸入樣例1:
20 100 7
輸出樣例1:
fib(7) = 13
21 34 55 89
輸入樣例2:
2000 2500 8
輸出樣例2:
fib(8) = 21
No Fibonacci number
我的代碼:
int fib( int n ) {
int a = 1;
int b = 1;
int c = 1;
if (n == 1 || n == 2) {
c = 1;
} else if (n > 2) {
for (int i = 3; i <= n; i++) {
c = a + b;
a = b;
b = c;
}
}
return c;
}
void PrintFN( int m, int n ) {
int a[] = {1};
int flag= 0;
int i = 0;
int count=0;
while(fib(i+1)<10000){
a[i]=fib(i+1);
i++;
count =i;
}
for (int j = m; j <= n; j++) {
for (i = 0; i < count; i++) {
if (j == a[i]) {
printf("%d ", j);
flag = 1;
}
}
}
if (flag == 0) {
printf("No Fibonacci number");
}
}
新手上路想請大神指教下為什么在DEVC++可以正常運行,但是在浙大PTA網站上不管輸入什么范圍都是No Fibonacci number
uj5u.com熱心網友回復:
dev c++編譯器有個warning說 迭代1會引起未定義的行為轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/202998.html
標籤:新手樂園
上一篇:陣列初始化
