C語言實驗1 3中的上報的題(超詳解)

2021-10-10 16:56:27 字數 2992 閱讀 3920

很明顯,根據題意我們就知道,這是一道排序問題,而排序問題的解決方案有很多種,類似於for迴圈去肝(時間複雜度up),亦或是雙指標演算法,歸併演算法,快排法等等,在這,我們第一次學習,並不需要去考慮高效,只需要去考慮怎樣可以輸出就可以,所以我們找到的就是乙個最簡單思路,for去肝!死肝出來!(氣泡排序法)

很簡單的,if用於判斷sort[前一位]>=sort[後一位],for用於從第一位比較到最後一位;

#include

intmain()

}for

(int i =

0;i <

4; i++

)printf

("%d "

,sort[i]);

//多來乙個空格,使得**更加美觀

return0;

}

我吐槽一下哈,csdn的markdown編輯器不講武德,寫的**簡直亂的一批,我勸csdn耗子為汁

啊這,我們一看,可能有dalao就想用打表演算法了(俗稱將你能列的都列出來)這樣是絕對不可取的,不講武德,我們要做的,是分析,年月日,明顯,閏年平年的天數是不同的,不同在**,在於2月乙個是28天,乙個是29天,且每四年一迴圈。

我們這樣來搞定:

int str1[12]

=;int str2[12]

=;

我們這樣來實現,31所對應0的下標要注意,計算機永遠是從0開始數數的

a%

400==0||

(a%100!=0

&& a%4==

0)

像這樣,滿足兩種條件的其中乙個,乙個是可以被400整除,拋去400,800,1200等年份,乙個是判斷另一種年份

然後假如是閏年,進入閏年陣列,平年,進入平年陣列;

if

(b>1)

for(i=

0;i1;i++

) sum+

=str2[i]

;else

for(i=

0;i1;i++

) sum+

=str1[i]

;

然後我們又害怕,如果是一月豈不是涼涼,沒事,還有天,我們沒有加入,那麼就讓printf為sum+天數趴

#include

int main ();

int str2[12]

=;if(

(a%400==0

)||(a%100!=0

&&a%4==

0))else

//懶得判斷了,越不越界其實是看你的

for(i=

0;i1;i++

) sum+

=str1[i]

;printf

("%d\n"

,sum+c)

;return0;

}

此時有聰明的小夥伴肯定想到了打表的演算法,即將陣列中存放每個月所對應的天數,這樣省兩個for迴圈,時間複雜度直線下降,這個打表法大家自己去寫趴,我有點懶

啊這,傻瓜演算法不就是三個for迴圈嗎,不斷–,然後sum1,sum2,sum2加起來就可以了,相信前面學習了的小夥伴幹這個絕對很簡單,但是,時間複雜度注意哦;

至於簡單一點的演算法,作為乙個懶人來說,遞迴也許是乙個不錯的選擇;

我們設定乙個自定義函式,將a傳入,傳入的第一次,進行一次乘法,然後再次傳入這個自定義函式,不斷套娃,套到沒有的時候,傳出就可以了

#include

intdigui

(int a,

int*sum)

;int main (

)int

digui

(int a,

int*sum)

以上**涉及了一點點指標問題,他是個遞迴(確信),剛剛打出來,還熱乎著,不會遞迴的英文單詞,所以拼音搞上了(在努力學英語了)

#include

int jc;

intjc

(int n)

intmain()

我們不難發現,在最大公約數中,我們需要用到輾轉相除法(有逼格一點就叫歐幾里得演算法)

int rem;

//餘數,當餘數為0的時候,最後的m即為最大公約數

while

(n)//我這裡寫n也是因為我懶,n==null(0),我就不幹了

//假設我們傳入 15 30

//進來後,rem=15,m=30,n=15,然後繼續(這樣會將m和n位置交換,然後繼續進行輾轉相除,30%15 = 0,m=15,n=0,返回,直到較大的數餘較小的數字為0時,說明n就是最大公約數了;

if

(n==0)

return m;

return

fun(n,m%n)

;

遞迴好啊,遞迴妙啊!!!!!!遞迴講武德啊!

#include

intfun(

int m,

int n)

return m;

}int

main()

intmain()

#include

intfun(

int m,

int n)

return m;

}int

main()

#include

intfun(

int m,

int n)

intmain()

111

暫時到這裡吧,大概寫了5k字,寫了乙個多小時的超詳細教程。

下次會講講三行**解決掉第四課時的質因子問題

效率效率,謝謝大家

一小道C語言實驗題帶來的樂趣

要用遊戲的玩法打敗遊戲的情景題!對於以下題目 某遊戲規則中,甲乙雙方每個回合的戰鬥總是有一方勝利,一方失敗。遊戲規定 失敗的一方要把自己的體力值的1 4加給勝利的一方。例如 如果雙方體力值當前都是4,則經過一輪戰鬥後,雙方的體力值會變為 5,3。現在已知 雙方開始時的體力值甲 1000,乙 2000...

C語言實驗 某年某月的天數

time limit 1000ms memory limit 65536kb submit statistic problem description 輸入年和月,判斷該月有幾天?input 輸入年和月,格式為年 月。output 輸出該月的天數。example input 2009 1 examp...

C語言實現C 中的類

華科複試面試題 c語言如何實現c 中的類 include c 語言沒有類,但可以用結構體充當乙個類 與類不同,結構體只能定義變數,不能夠定義函式,可以通過函式指標的方法來實現其功能 定義 類 的成員變數以及方法 typedef struct personperson 定義函式功能 void eatf...