很明顯,根據題意我們就知道,這是一道排序問題,而排序問題的解決方案有很多種,類似於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...