C語言常用演算法回顧

2021-09-24 03:59:40 字數 4625 閱讀 9810

c語言三個數從小到大排序/輸出

任意輸入 3 個整數,程式設計實現對這 3 個整數由小到大進行排序。

實現過程:

(1)定義資料型別,本例項中 a、b、c、t 均為基本整型。

(2) 使用輸入函式獲得任意 3 個值賦給 a、b、c。

(3) 使用 if 語句進行條件判斷,如果 a 大於 b,則借助於中間變數 t 互換 a 與 b 值, 依此類推比較 a 與 c、b 與 c,最終結果即為 a、b、c 的公升序排列。

(4) 使用輸出函式將 a、b、c 的值依次輸出。

(5) 程式的**如下:

1.#include

2.int main()

3.13. if(a>c) /如果a大於c,借助中間變景t實現a與c值的互換/

14.

19. if(b>c) /如果b大於c,借助中間變數t實現b與c值的互換/

20.

25. printf(「the order of the number is:\n」);

26. printf("%d,%d,%d",a,b,c); /輸出函式順序輸出a、b、c的值/

27. return 0;

28.}

執行結果:

please input a,b,c:

5,3,9

the order of the number is:

3,5,9

腳下留神:

本例項使用 scanf("%d%d%d",&a,&b,&c); 從鍵盤中獲得任意 3 個數。在輸入資料時,在兩個資料之間以乙個或多個空格間隔,也可以用 enter 健、tab 鍵,不能用逗號作為兩個資料間的分隔符。 如果用格式輸入函式 scanf("%d,%d,%d",&a,&b,&c) 輸入資料,兩個資料之間要用「,」做間隔。

模擬氣泡排序,自前向後,逐步消除逆序。

c語言猴子吃桃問題

猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了乙個。第二天早上又將第一天剩下的桃子吃掉一半,有多吃了乙個。以後每天早上都吃了前一天剩下的一半零乙個。到第 10 天早上想再吃時,發現只剩下乙個桃子了。編寫程式求猴子第一天摘了多少個桃子。

實現過程:

(1) 定義 day、x1、x2 為基本整型,並為 day 和 x2 賦初值 9 和 1。

(2) 使用 while 語句由後向前推出第一天摘的桃子數。

(3) 輸出結果。

(4) 程式**如下:

1.#include

2.int main()

3.14. printf(「the total is %d\n」,x1); / 輸出桃子的總數*/

15. return 0;

16.}

執行結果:

the total is 1534

技術要點:

本例項的思路基本上是先找出變數間的關係,也就是要明確第一天桃數和第二天桃子數之間的關係,即第二天桃子數加 1 的 2 倍等於第一天的桃子數。

c語言百錢買百雞(百錢百雞,百雞問題)

中國古代數學家張丘建在他的《算經》中提出了乙個著名的「百錢買百雞問題」,雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一,百錢買百雞,問翁、母、雛各幾何?

實現過程:

(1)使用 for 語句對 3 種雞的數嫌在事先確定好的範圍內進行窮舉並判斷,對滿足條件的 3 種雞的數量按指定格式輸出,否則進行下次迴圈。

(2)三個版本

#include

void main()

}printf("%d", m);

}void main()

}printf("%d", m);

}(2) 程式**如下:

1.#include

2.int main()

3.執行結果:

公雞:0,母雞:25,小雞:75

公雞:4,母雞:18,小雞:78

公雞:8,母雞:11,小雞:81

公雞:12,母雞:4,小雞:84

技術要點:

根據題意設公雞、母雞和雛雞分別為 cock、hen 和 chick,如果 100 元全買公雞,那麼最多能買 20 只,所以 cock 的範圍是大於等於 0 且小於等於 20;如果全買母雞,那麼最多能買 33 只,所以 hen 的範圍是大於等於 0 且小於等於 33;如果 100 元錢全買小雞,那麼最多能買 99 只(根據題意小雞的數量應小於 100 且是 3 的倍數)。

在確定了各種雞的範圍後進行窮舉並判斷,判斷的條件有以下 3 點:

(1) 所買的 3 種雞的錢數總和為 100。

(2) 所買的 3 種雞的數量之和為 100。

(3) 所買的小雞數必須是 3 的倍數。

首頁 > c語言程式設計例項閱讀:5,846

c語言漁夫打魚曬網問題

如果乙個漁夫從 2011 年 1 月 1 日開始每三天打一次漁,兩天曬一次網,程式設計實現當輸入 2011 1 月 1 日以後的任意一天,輸出該漁夫是在打漁還是在曬網。

實現過程:

(1)自定義函式 leap(),用來判斷輸入的年份是否是閏年。

普通閏年:能被4整除但不能被100整除的年份為普通閏年。(如2023年就是閏年,2023年不是閏年);

世紀閏年:能被400整除的為世紀閏年。(如2023年是世紀閏年,2023年不是世紀閏年);

(2) 自定義函式 number(),用來計算輸入日期距 2011 年 1 月 1 日共有多少天。

(3) main() 函式作為程式的入口函式,在 main() 函式中呼叫上面兩個函式。程式**如下:

1.#include

2.int leap(int a) /自定義函式leap()用來指定輸入的年份是否為閏年/

3.9.

10.int number(int year,int month,int day) /自定義函式 number() 計算輸入日期距2023年1月1日共有多少天/

11.; /陣列a存放平年每月的天數/

14. int b[12]=; /陣列b存放閏年每月的天數/

15.16. if(leap(year)==1) /判斷是否為閏年/

17. for(i=0;i是閏年,累加陣列b前m-1個月份的天數/

19. else

20. for(i=0;i不是閏年,累加陣列a前m-1個月份的天數/

22. for(j=2011;j2023年到輸入的年份是閏年的加366/

25. else

26. sum+=365; /2023年到輸入的年份不是閏年的加365/

27. sum+=day; /將前面累加的結果加上日期,求出總天數/

28. return sum; /返回計算的天數/

29.}

30.31.int main()

32.執行結果:

請輸入年月日

2011 1 4

2011:1:4 曬網

技術要點:

本例項主要有以下兩個技術要點:

(1) 判斷輸入的年份(2011 年以後包括 2011 年)是否為閏年,這裡自定義函式 leap() 來進行判斷。該函式的核心內容就是閏年的判斷條件即能被 4 整除但不能被 100 整除,或能被 400 整除。

(2) 求輸入日期距 2011 年 1 月 1 日有多少天。首先判斷 2011 年距輸入的年份有多少年,這其中有多少年是閏年就將 sum 加多少個 366,有多少年是平年便將 sum 加上多少個 365。

其次要將 12 個月每月的天數存到陣列中,因為閏年 2 月份的天數有別於平年,故採用兩個陣列 a 和 b 分別儲存。若輸入年份是平年,月份為 m 時就在前面累加日期的基礎上繼續累加儲存著平年每月天數的陣列的前 m-1 個元素,將累加結果加上輸入的日期便求出了最終結果。閏年的演算法類似。

c語言希爾排序演算法

用希爾排序法對一組資料由小到大進行排序,資料分別為 69、56、12、136、3、55、46、 99、88、25。

實現過程:

(1)自定義函式 shsort(),實現希爾排序。

(2) main() 函式作為程式的入口函式。程式**如下:

1.#include

2.int shsort(int s, int n) /* 自定義函式 shsort()/

3.17. s[j + d]=s[0]; /在確定的位罝插入s[i]/

18. }

19. d = d/2; /增里變為原來的一半/

20. }

21.return 0;

22.}

23.24.int main()

25.執行結果:

請輸入 10 個資料:

69 56 12 136 3 55 46 99 88 25

排序後的順序是:

3   12   25   46   55   56   69   88   99  136

技術要點:

希爾排序是在直接插入排序的基礎上做的改進,也就是將寒排序的序列按固定增量分成若干組,等距者在同二組中,然後再在組內進行直接插入排序。這裡面的固定增量從 n/2 開始,以後每次縮小到原來的一半。

搜尋演算法 和 排序演算法

推薦演算法 =>機器學習 計算機建模分析運算 虛擬化 更優化的演算法

掃雷演算法 迷宮演算法 自動計算 bluepath 圖論演算法 深度學習deepmind 計算機視覺 特徵提取 demo 摳圖演算法 壓縮演算法 資料庫》 演算法庫 database 效能優化 快速運算 instant 創造更有意義的東西 積累 逐步前進 c++ ins

c 回顧 STL 常用演算法

把vector裡面的數字都乘以2 include include include using namespace std int main transform begin xs end xs begin xs int x return 0 transform的第三個引數也可以是別的容器的某個位置,如...

C語言回顧

1.資料型別對應的位元組數 資料型別 位元組數 unsignd char 1 short int 2 int 4 long int 4 long long int 8 float 4 double 8 long double 12 2.讀取資料格式指定符 short hd int d float f...

c語言回顧

1.資料型別及其範圍 int 10位 2147483648 2147483647 d 4個位元組 long和int都是4位元組,範圍也是一樣,但scanf時候,long是 ld long long是8位元組,輸入 lld,範圍很大,大概是 9 10 18 9 10 18 float是 f,4位元組,...