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