1. 程式人生 > >ACMNO.12有一分數序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出這個數列的前N項之和,保留兩位小數。 輸入 N 輸出 數列前N項和 樣例輸入 10

ACMNO.12有一分數序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出這個數列的前N項之和,保留兩位小數。 輸入 N 輸出 數列前N項和 樣例輸入 10

題目描述

有一分數序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出這個數列的前N項之和,保留兩位小數。

輸入

N

輸出

數列前N項和

樣例輸入

10

樣例輸出

16.48

來源/分類

C語言 

題目截圖:
在這裡插入圖片描述
思路:

看到這個題瞬間就有了思路,
	s+=(b*1.0)/c;
 	t=b;
	b=b+c;
	c=t;
只是一開始,我沒有搞那個大眾都說的一個temp的東西!
導致賦值過程出錯!
一直是整數跟整數相除!沒有浮點數的出現。
後來嘗試了一下,這個語句就成功啦!
可能這個問題跟編譯器種類有關的,我的是dev-c++。就會出現這個問題!
printf("s   %.2f\n",s);
對呀,就是printf("%.2f").這個是小數點保留幾位就寫阿拉伯數字幾~
	

程式碼:

#include<iostream>
 using namespace std;
 int main()
 {
 double a,b,c,t;int i;
 double s;b=2.0;c=1.0;
 	//printf("%.2f\n",s);
 	//printf("%.2f\n",b);
 //	printf("%.2f\n",c);
//	cout<<endl;
 cin>>a;
 for(i=1;i<=a;i++)
 {
 	s+=(b*1.0)/c;
 	t=b;
	b=b+c;
	c=t;
 	//printf("s   %.2f\n",s);
 //	printf("%.2f\n",b);
 //	printf("%.2f\n",c);
}
printf("%.2f",s);
}

程式碼截圖:
在這裡插入圖片描述
程式碼執行情況截圖:
在這裡插入圖片描述
OJ結果:
在這裡插入圖片描述