天天看點

求序列和:輸入一個正整數 n,輸出 2/1+3/2+5/3+8/5 +…的前 n 項之和, 保留 2 位小數。該序列從第 2 項起,每一項的分子是前一項分子與分母的和, 分母是前一項的分子引入分析代碼運作測試

引入

求序列和:輸入一個正整數 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; 
}
           

運作測試

求序列和:輸入一個正整數 n,輸出 2/1+3/2+5/3+8/5 +…的前 n 項之和, 保留 2 位小數。該序列從第 2 項起,每一項的分子是前一項分子與分母的和, 分母是前一項的分子引入分析代碼運作測試