1. 程式人生 > >C語言求一組分數數列之和

C語言求一組分數數列之和

題目:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13…求出這個數列的前20項之和。
1.程式分析:請抓住分子與分母的變化規律。

第一個程式碼是受斐波那契數列求兔子的方法的思維定式,把分子分母單獨放開了


#include<stdio.h>
int main()
{
    int i;
    double m[21];
    double n[21];
     m[1]=2;
     m[2]=3;
     n[1]=1;
     n[2]=2;
    double sum=0;
    for(i=1;i<=20;i++)
    {
        if
(i==1) { m[1]=2;n[1]=1; } if(i==2) { m[2]=3;n[2]=2; } if(i>2) { m[i]=m[i-1]+m[i-2]; n[i]=n[i-1]+n[i-2]; } sum=sum+m[i]/n[i]; } printf("前20項總和為%f",sum); }

這裡,如果能看穿分子分母的關係,程式碼就會很簡潔

    int i;
    double m=2,n=1,sum=0,t;
    for(i=1;i<=20;i++)
    {
        sum=sum+m/n;
        t=m; //調換分子與分母數字
        m=m+n;
        n=t;

    }
    printf("前20項總和為%f",sum);

}

相關推薦

C語言分數數列之和

題目:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13…求出這個數列的前20項之和。 1.程式分析:請抓住分子與分母的變化規律。 第一個程式碼是受斐波那契數列求兔子的方法

C語言輸入值,最大的元素與第一個交換,最小的與最後一個交換

#include<stdio.h>  //輸入一組值,最大的元素與第一個交換,最小的與最後一個交換void main(){int i,j,k,f[10],max,min,small,big;for(i=0;i<10;i++) scanf("%d",&

c語言資料隨機排序

2014 神州綠盟暑期實習生筆試題-------程式程式設計第一題:第一種方法:使用自己構造的函式來根據每次的位置資訊返回亂序的數字 /* * * 程式功能:對指定的陣列,進行隨機排序,交換陣列中的資料位置 */ #include <stdio.h>

C語言 連結串列資料的交集並集

#include <stdio.h> #include <stdlib.h> typedef struct Node{     int data;     struct Node *next; }List; int isCheck(List *des

c語言利用指標數的最大值,最小值。平均值

最近一直在學演算法,c語言的指標在演算法中用的不多,所以就沒怎麼學,直到後來幫我同學做課程設計的時候,才學了一段時間,為了防止過段時間忘了指標,所以就把課程設計儲存下來,以後忘了還可以看看這個回憶一下指標。 #include <stdio.h> int mai

c語言種典型的排列合算法

scan .com nbsp 方法 can main else const 組合數 c語言中的全排列算法和組合數算法在實際問題中應用非常之廣,但算法有許許多多,而我個人認為方法不必記太多,最好只記熟一種即可,一招鮮亦可吃遍天 全排列: #include<stdio.h

遺傳算法的C語言實現():以非線性函數極值為例

選中 algorithm 利用 mail 進化 lock gcc 最大值 -s 以前搞數學建模的時候,研究過(其實也不算是研究,只是大概了解)一些人工智能算法,比如前面已經說過的粒子群算法(PSO),還有著名的遺傳算法(GA),模擬退火算法(SA),蟻群算法(A

嵌入式C語言難點:數

數組 位置 scanf 列表 輸出結果 clu sort 難點 can 1.數組的定義   由若幹相同類型並且有順序關系的數組組成,數組中的每個變量就叫做這個數組的元素。   表達式:<儲存類型> <數據類型> <數組名> [<常量

c語言個數中的奇數和偶數分開放在一起

       在一個數組中的元素大多奇數和偶數是混在一起的,而將陣列中元素奇數和偶數分開存放則是我們要解決的問題。        將奇數和偶數分開存放然後打印出來的思路是先建立兩個空間,將奇數和偶數分別存放起來,然後

C語言 一個3*3的整形矩陣對角線元素之和

#include<stdio.h> int main() {int a[3][3],i,j,sum1=0,sum2=0; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); for(i=

C語言例項—個數如果恰好等於它的因子之和,這個數就稱為完數。(gcc編譯)

1.題目 一個數如果恰好等於它的因子之和,這個數就稱為完數。例如,6的因子是1,2,3,而6=1+2+3,因此6為完數。程式設計序找出1000之內所有的完數,並按下列格式輸出其因子:6 its factors are 1,2,3 2.程式碼 #include<stdio.h

C語言個數,實現類似JAVA語言中ArrayList的功能

此程式是在看過郝斌老師的資料結構與演算法的視訊後,自己用C語言實現的。整個程式比較簡單,適合入門資料結構時練手。 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #

C語言個數中只有兩個數字是出現次,其他所有數字都出現了兩次。 找出這兩個數字,程式設計實現。

一看到這道題,我想到了之前學習過的異或。我們知道兩個相同的數字異或的結果是 0,因為在計算機中,異或運算是按照二進位制位來運算的,相同為 0 ,相異為  1。任何數與 0 異或都等於它自己。既然我們要找出來一組數中不同的兩個數字,也可以採用這種方法。 但是這次不是直接異或,

C語言個數中只有兩個數字是出現次,其他所有數字都出現了兩次。 找出這兩個數字。

要求:一個數組中只有兩個數字是出現一次,其他所有數字都出現了兩次。 找出這兩個數字,程式設計實現。程式設計實現。 程式碼如下 int find(int arr[],int len) { int i,j,count; for(i = 0;i

C語言合數

C語言求組合數不能直接使用數學公式C(n,m)=(m!)/(n!*(m-n)!);即使VC 6.0的int是32bit,但其實當計算到17!時候就會溢位,所以需要另闢蹊徑。     先來把公式變形。     (m!)/(n!*(m-n)!)=(m*(m-1)*(m-2)

c語言個數裡面的部分值直接複製到另外個數

標頭檔案是#include <string.h>,如果要從陣列a複製k個元素到陣列b,可以這樣做memcpy(b,a,sizeof(int)*k);#include <stdio.h> #i

C語言 子集重量之和

求子集重量之和(Calculate the sum of a subset's weight) 時限:100ms 記憶體限制:10000K 總時限:1000ms 描述: 現有n件物品,已知它們的重量,求其中一個子集的重量之和。 There are n things, we

C語言合數C(n,m)

#include<stdio.h> int main() {int n,m;double n1,m1,o1;double fact(int n);printf("Enter n and m

C語言 Sn=a+aa+aaa+aaaa+aaaaa的前5項之和,其中a是一個數字,例如:2+22+222+2222+22222

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { int num = 0; int count

c實現 個數中最大子序列的和 (兩種方法)

||_ 題目描述 ||_ 分析 本題的核心是計算出一個序列的所有子序列中元素和為最大時的值,不要求輸出對應的子序列是什麼,而只要求輸出和的最大值是多少。 法一: 我們把序列分成兩半(左邊