【啓蒙】C筆記之初學階段(上篇)

 

(全是乾貨,若是你是C語言的初學者,搞懂以下推薦的題目,你就已經比你的同窗走在前面不少了!)-------(後期補充)html

(若是有些代碼你看不懂,請將你的問題寫在評論區,我必定會回覆你的!)算法

 

這是我初學的時候以爲一些比較難的題目,我把這些題目推薦給你們,免去了作一些無用的題,還浪費了一些時間,無腦題少作,雖然很爽,可是對提升沒啥好處。。。數組

 

好比說,,這題:https://www.luogu.com.cn/problem/P1000ide

榜一大佬的答案就是了,,,,不過嘞。。。。。。若是你的思路是榜二的思路,強烈推薦寫一波(得費點神咯,hh~)函數

 

 作題流程:

作題前審題必定要仔細,觀察有哪一些限制條件,將關鍵詞記下。(限制條件必定要找完整,要否則到後面會浪費不少時間)。
必定要帶草稿紙,在草稿紙中把你內心的想法用簡單的C語言表達出來,
寫完以後對照限制條件順着你本身的思路走一下,限制條件若是有點多的話,多本身用幾個例子
去代替,碰到錯誤糾正過來。
最後照着紙的內容快速打碼。
 
思路你們都知道,最主要是調試代碼的能力,咱們平時刷題,練的就是調試代碼的能力,若是你能很快的調試出代碼的問題,那麼你就能多爭取一些時間去刷下一題,千萬不要遇到困難就退縮,記得當時刷題的時候,一個題目要改幾天,萬匹草泥馬奔騰而過,,,,時不時口吐芬芳。。。。。
 

小提示:

①有時候思路是對的,感受寫的算正確,可是就是得不到滿分。那可能題目再卡你的點,把範圍開大一點,對於初學者來講,想開多大就開多大。開在主函數裏面數據大了就會爆棧,因此開數組的話推薦開到主函數外面去。
 
②有循環這種語法就必定要好好用到,由於電腦是死的,不會偷懶,只會幹傻逼事,因此咱們有時候就不必幫他想,累了本身。
初學者必定要把思路轉換過來,用電腦的思惟去想問題,機器可沒你那麼聰明伶俐、冰雪聰明、秀外慧中、聰明才智、穎悟絕倫..........聰明....絕頂。
(兄弟保重,我先剃爲敬!)

 

 
例:
 
對於此題,我剛開始想,應該用什麼數學公式,把雙休日分開算,最後七算八算通過麻煩的死,一看答案,個人媽呀!!!真簡單,就讓電腦循環算,給他一個限制條件,給他一個終止命令,此題結束!  
審題必定要仔細,弄清楚題目究竟要讓你幹什麼。別被題目迷惑了。
看完了一點提示,先作一下這題吧: https://www.luogu.com.cn/problem/P1424
 
 

題目推薦

學習

在初學的時候,我就被這題繞住了,當時在網上搜到極簡代碼,用指針寫,當時一臉懵逼,到了後面刷的題多了一點,才知道這題其實很簡單,因此我把這題推薦給你們。spa

http://www.51cpc.com/problem/1059設計

附上我的題解:3d

 http://www.javashuo.com/article/p-uqmuyyph-eu.html指針

這題是有關於acill碼的題目,當時對這個東西有點陌生。

這裏有個小技巧,(適用於不記得ACILL碼,並且沒網,,大可能是在考試的時候),你能夠這樣:

#include<stdio.h>
int main(){
    char ch='a';
    printf("%d\n",ch);
    return 0;
} 
關注點個贊吧!

 

https://www.luogu.com.cn/problem/P1914

 這題就是利用了取模思想,有了取模,你就能夠將一條直線的關聯信息變成環狀。

#include<stdio.h>
#include<string.h>
int a[1000];
int main(){
    int n,i;
    char a[1000];
    scanf("%d%s",&n,a);
    for(i=0;a[i]!='\0';i++){
        printf("%c",(a[i]-'a'+n)%26+'a');
    }
    return 0;
}

 

Tips:

①遇到辨別單詞個數之類的時候用空格區分。(若是學了C++就不用寫了)

例題好好作哦,不會的知識點可留言哦,我確定及時回答。

附上題目http://www.51cpc.com/problem/1061

附上我的題解http://www.javashuo.com/article/p-qlhcppjw-cr.html

 ②只有奇數纔會是質數。

③要懂得運用已有的數據,不要將數據複雜化,能減小變量就減小變量!

 
 

題目解題方法

冒泡排序法
 
 
它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,若是順序(如從大到小、首字母從Z到A)錯誤就把他們交換過來。走訪元素的工做是重複地進行直到沒有相鄰元素須要交換,也就是說該元素列已經排序完成。(摘自百度百科)
 
 
選擇排序法
 
它的工做原理是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,而後,再從剩餘未排序元素中繼續尋找最小(大)元素,而後放到已排序序列的末尾。以此類推,直到所有待排序的數據元素排完。(摘自百度百科)
我的感受就是冒泡排序的升級版。
 
有這種小數點的定要注意精度,防止精度丟失。
 

遞歸函數相關概念

對於遞歸函數,就是調用本身設計的函數,至關於循環函數;
在這之中分爲有參和無參
 

遞歸例子:

 
(如過你作過此題,請你再作一遍,真的很經典!)
累計記得的單詞數
 
看完這個,咱們再看看另外一個題目吧
 
 
作遞歸題,咱們不能太着急,先在草稿紙中寫好累積的算法,而後再調用函數。爲何會反着輸出呢,是由於,要知道第一個摘下的桃子數量,就得先過第九天的程序,反向獲得答案,運用電腦的特性,死算。
 
 

一種新的數字倒序輸出法!!

這個想法當初被老師誇獎了一波,我如今推薦給你們,你們要好好用哦!!
 
 
END?????
看到這裏感受怎麼樣???
 
什麼???太簡單了,同窗都會。
那就看看下篇中的我學習過程當中遇到當時以爲比較好的代碼吧!
 
若是你這篇不懂,記得評論區留言哦!
我會加以修改,說的更詳細,謝謝你關注!
 
【啓蒙】C筆記之初學階段(下篇) http://www.javashuo.com/article/p-maerkngw-ch.html
 
 
給個贊再走唄!
相關文章
相關標籤/搜索