引入
求序列和:輸入一個正整數 n,輸出 2/1+3/2+5/3+8/5 +…的前 n 項之和,
保留 2 位小數。該序列從第 2 項起,每一項的分子是前一項分子與分母的和, 分母是前一項的分子
分析
求序列和就是找規律,該序列從第 2 項起,每一項的分子是前一項分子與分母的和, 分母是前一項的分子,同時需要注意類型轉換問題
代碼
#include <stdio.h>
int main(void) {
/**
求序列和:輸入一個正整數 n,輸出 2/1+3/2+5/3+8/5 +…的前 n 項之和,
保留 2 位小數。該序列從第 2 項起,每一項的分子是前一項分子與分母的和, 分母是前一項的分子
*/
int n;
printf("Entry n :");
scanf("%d",&n);
/**
找規律,從第二項開始前一項的分子和分母相加是後一項的分子,前一項的分子是後一項的分母
我們将第二項設定為第一項
*/
//定義求和變量
double sum,item;
//定義自增變量
int i,fz = 3,fm = 2,temp;
//分段
if(n >= 3){
for(i = 1; i <= n-2; i++){
temp = fz;
fz = fz + fm;
fm = temp;
//分子、分母都是int類型,如果fz/fm會出現問題,我們這裡需要寫成fz/fm*1.0
item = 1.0*fz/fm;
sum+=item;
}
sum+=3.5;
printf("%.2lf",sum);
}else if(n == 2){
sum = 3.5;
printf("%.2lf",sum);
}else if(n == 1){
sum = 2.0;
printf("%.2lf",sum);
}
return 0;
}
運作測試
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL6FERNNzYU9UeRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwMTN2UDMyYTM4ITNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)