国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

13 萬字 C 語言從入門到精通保姆級教程2021 年版 (建議收藏)

zombieda / 4502人閱讀

摘要:友情提示先關注收藏,再查看,萬字保姆級語言從入門到精通教程。及大牛出天地開始有隨之乃有萬種語年英國劍橋大學推出了語言。


友情提示:先關注收藏,再查看,13 萬字保姆級 C 語言從入門到精通教程。

C語言保姆級配套代碼與視頻教程鏈接

文章目錄

計算機常識

  • 什么是計算機 ?

    • 顧名思義,就是能夠進行數據運算的機器(臺式電腦、筆記本電腦、平板電腦、智能手機)
    • 計算機_百度百科
  • 計算機的發明者是誰 ?

    • 關于電子計算機的發明者是誰這一問題,有好幾種答案:
      • 1936年***英國數學家圖靈***首先提出了一種以程序和輸入數據相互作用產生輸出的計算機***構想***,后人將這種機器命名為通用圖靈計算機
      • 1938年***克蘭德·楚澤***發明了首臺采用***繼電器***進行工作的計算機,這臺計算機命名為***Z1***,但是繼電器是機械式的,并不是完全的電子器材
      • 1942年***阿坦那索夫和貝利***發明了首臺采用***真空管***的計算機,這臺計算機命名為***ABC***
      • 1946年ENIAC誕生,它擁有了今天計算機的主要結構和功能,是通用計算機
  • 現在世界上***公認***的第一臺現代電子計算機是1946年在美國賓夕法尼亞大學誕生的ENIAC(Electronic Numerical Integrator And Calculator)
  • 計算機特點是什么 ?
    • 計算機是一種電器, 所以計算機只能識別兩種狀態, 一種是通電一種是斷電

    • 正是因為如此, 最初ENIAC的程序是由很多開關和連接電線來完成的。但是這樣導致***改動一次程序要花很長時間***(需要人工重新設置很多開關的狀態和連接線)

    • 為了提高效率,工程師們想能不能把程序和數據都放在存儲器中, 數學家馮·諾依曼將這個思想以數學語言系統闡述,提出了存儲程序計算機模型(這是所謂的馮·諾依曼機)

    • 那利用數學語言如何表示計算機能夠識別的通電和斷電兩種狀態呢?

      • 非常簡單用0和1表示即可
      • 所以計算機能識別的所有指令都是由0和1組成的
      • 所以計算機中存儲和操作的數據也都是由0和1組成的

0和1更準確的是應該是高電平和低電平, 但是這個不用了解, 只需要知道計算機只能識別0和1以及存儲的數據都是由0和1組成的即可。


什么是計算機程序 ?

  • 計算機程序是為了告訴計算機"做某件事或解決某個問題"而用"***計算機語言***編寫的命令集合(語句)

  • 只要讓計算機執行這個程序,計算機就會自動地、有條不紊地進行工作,計算機的一切操作都是由程序控制的,離開程序,計算機將一事無成

  • 現實生活中你如何告訴別人如何做某件事或者解決某個問題?

    • 通過人能聽懂的語言: 張三你去樓下幫我買一包煙, 然后順便到快遞箱把我的快遞也帶上來
    • 其實我們通過人能聽懂的語言告訴別人做某件事就是在發送一條條的指令
    • 計算機中也一樣, 我們可以通過計算機語言告訴計算機我們想做什么, 每做一件事情就是一條指令, 一條或多條指令的集合我們就稱之為一個計算機程序

什么是計算機語言 ?

  • 在日常生活、工作中, 語言是人們交流的工具
    • 中國人和中國人交流,使用中文語言
    • 美國人和美國人交流,使用英文語言
    • 人想要和計算機交流,使用計算機語言
  • 可以看出在日常生活、工作中,人們使用的語言種類很多
    • 如果一個很牛人可能同時掌握了中文語言和英文語言, 那么想要和這個人交流既可以使用中文語言,也可以使用英文語言
    • 計算機其實就是一個很牛的人, 計算機同時掌握了幾十門甚至上百門語言, 所以我們只要使用任何一種計算機已經掌握的語言就可以和計算機交流

常見的計算機語言類型有哪些 ?

  • 機器語言
    • 所有的代碼里面只有0和1, 0表示不加電,1表示加電(紙帶存儲時 1有孔,0沒孔)
    • 優點:直接對硬件產生作用,程序的執行效率非常非常高
    • 缺點:指令又多又難記、可讀性差、無可移植性
  • 匯編語言
    • 符號化的機器語言,用一個符號(英文單詞、數字)來代表一條機器指令
    • 優點:直接對硬件產生作用,程序的執行效率非常高、可讀性稍好
    • 缺點:符號非常多和難記、無可移植性
  • 高級語言
    • 非常接近自然語言的高級語言,語法和結構類似于普通英文
    • 優點:簡單、易用、易于理解、遠離對硬件的直接操作、有可移植性
    • 缺點:有些高級語言寫出的程序執行效率并不高
  • 對比(利用3種類型語言編寫1+1)
    • 機器語言
      • 10111000 00000001 00000000 00000101 00000001 00000000
    • 匯編語言
      • MOV AX, 1 ADD AX, 1
    • 高級語言
      • 1 + 1

什么是C語言?

  • C語言是一種用于和計算機交流的高級語言, 它既具有高級語言的特點,又具有匯編語言的特點
    • 非常接近自然語言
    • 程序的執行效率非常高
  • C語言是所有編程語言中的經典,很多高級語言都是從C語言中衍生出來的,
    • 例如:C++、C#、Object-C、Java、Go等等
  • C語言是所有編程語言中的經典,很多著名的系統軟件也是C語言編寫的
    • 幾乎所有的操作系統都是用C語言編寫的
    • 幾乎所有的計算機底層軟件都是用C語言編寫的
    • 幾乎所有的編輯器都是C語言編寫的

C語言歷史

  • 最早的高級語言:FORTRAN–>ALGOL–>CPL–>BCPL–>C–>C++等

“初,世間無語言,僅電路與連線。及大牛出,天地開,始有 FORTRAN、 LISP、ALGOL 隨之, 乃有萬種語”

  • 1963年英國劍橋大學推出了CPL(Combined Programming Langurage)語言。 CPL語言在ALGOL 60的基礎上接近硬件一些,但規模比較大,難以實現
  • 1967年英國劍橋大學的 Matin Richards(理查茲)對CPL語言做了簡化,推出了 BCPL (Base Combined Programming Langurage)語言
  • 1970年美國貝爾實驗室的 Ken Thompson(肯·湯普遜) 以 BCPL 語言為基礎,又作了進一步的簡化,設計出了很簡單的而且很接近硬件的 B 語言(取BCPL的第一個字母),并用B語言寫出了第一個 UNIX 操作系統。但B語言過于簡單,功能有限
  • 1972年至1973年間,貝爾實驗室的 Dennis.Ritchie(丹尼斯·里奇) 在 B語言的基礎上設計出了C語言(取BCPL的第二個字母)。C語言即保持 BCPL 語言和B語言的優點(精練、接近硬件),又克服了他們的缺點(過于簡單,數據無類型等)

C語言標準

  • 1983年美國國家標準局(American National Standards Institute,簡稱ANSI)成立了一個委員會,開始制定C語言標準的工作
  • 1989年C語言標準被批準,這個版本的C語言標準通常被稱為ANSI C(C89)
  • 1999年,國際標準化組織ISO又對C語言標準進行修訂,在基本保留原C語言特征的基礎上,針對應該的需要,增加了一些功能,命名為***C99***
  • 2011年12月,ANSI采納了ISO/IEC 9899:2011標準。這個標準通常即***C11,它是C程序語言的現行標準***

C語言現狀


為什么要學習C語言?

  • 40多年經久不衰
  • 了解操作系統、編譯原理、數據結構與算法等知識的最佳語言
  • 了解其它語言底層實現原理必備語言
  • 基礎語法與其它高級語言類似,學會C語言之后再學習其它語言事半功倍,且知根知底

當你想了解底層原理時,你才會發現后悔當初沒有學習C語言
當你想學習一門新的語言時, 你才會發現后悔當初沒有學習C語言
當你使用一些高級框架、甚至系統框架時發現提供的API都是C語言編寫的, 你才發現后悔當初沒有學習C語言
學好數理化,走遍天下都不拍
學好C語言,再多語言都不怕


如何學好C語言

學習本套課程之前學習本套課程中學習本套課程之后
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-gHyaoC72-1623039894713)(https://upload-images.jianshu.io/upload_images/647982-c724f6cd01191121.png?imageMogr2/auto-orient/strip)]
  • 如何達到這樣的效果

工欲善其事必先利其器

編寫C語言程序用什么工具 ?

  • 記事本(開發效率低)
  • Vim(初學者入門門檻高)
  • VSCode(不喜歡)
  • eclipse(不喜歡)
  • CLion(深愛, 但收費)
  • Xcode(逼格高, 但得有蘋果電腦)
  • Qt Creator(開源免費,跨平臺安裝和運行)

什么是Qt Creator ?

  • Qt Creator 是一款新的輕量級集成開發環境(IDE)。它能夠跨平臺運行,支持的系統包括 Windows、Linux(32 位及 64 位)以及 Mac OS X
  • Qt Creator 的設計目標是使開發人員能夠利用 Qt 這個應用程序框架更加快速及輕易的完成開發任務
  • 開源免費, 簡單易用, 能夠滿足學習需求

集成開發環境(IDE,Integrated Development Environment )是用于提供程序開發環境的應用程序,一般包括代碼編輯器、編譯器、調試器和圖形用戶界面等工具。集成了代碼編寫功能、分析功能、編譯功能、調試功能等一體化的開發軟件服務套。


Qt Creator安裝

  • 切記囫圇吞棗, 不要糾結里面的東西都是什么含義, 初學者安裝成功就是一種成功

  • 下載Qt Creator離線安裝包:

    • http://download.qt.io/archive/qt/
    • 極速下載地址:
    • 鏈接:https://pan.baidu.com/s/1gx0hNDBJkA2gx5wF1Jx34w
      提取碼:0fg9
  • 以管理身份運行離線安裝包

  • 下一步,下一步,下一步,等待ing…


    • +
      +
  • 注意安裝路徑中最好不要出現中文

  • 對于初學者而言全選是最簡單的方式(重點!!!)





  • 配置Qt Creator開發環境變量





你的安裝路徑/5.11.0/mingw53_32/bin
你的安裝路徑/Tools/mingw530_32/bin

  • 啟動安裝好的Qt Creator

  • 非全選安裝到此為止, 全選安裝繼續往下看
    • 出現這個錯誤, 忽略這個錯誤即可
  • 等待安裝完畢之后解決剛才的錯誤
    • 找到安裝目錄下的strawberry.msi,雙擊運行




什么是環境變量?

  • 打開我們添加環境變量的兩個目錄, 不難發現里面大部分都是.exe的可執行程序
  • 如果我們不配置環境變量, 那么每次我們想要使用這些"可執行程序"都必須"先找到這些應用程序對應的文件夾"才能使用
  • 為了方便我們在電腦上"任何地方"都能夠使用這些"可執行程序", 那么我們就必須添加環境變量, 因為Windows執行某個程序的時候, 會先到"環境變量中Path指定的路徑中"去查找

為什么要配置系統變量,不配置用戶變量

  • 用戶變量只針對使用這臺計算機指定用戶
    • 一個計算機可以設置多個用戶, 不同的用戶用不同的用戶名和密碼
    • 當給計算機設置了多個用戶的時候,啟動計算機的時候就會讓你選擇哪個用戶登錄
  • 系統變量針對使用這臺計算機的所有用戶
    • 也就是說設置了系統變量, 無論哪個用戶登錄這臺計算機都可以使用你配置好的工具

Qt Creator快捷鍵

如何創建C語言程序

  • 這個世界上, 幾乎所有程序員入門的第一段代碼都是Hello World.
  • 原因是當年C語言的作者Dennis Ritchie(丹尼斯 里奇)在他的名著中第一次引入, 傳為后世經典, 其它語言亦爭相效仿, 以示敬意

如何創建C語言文件





C語言程序組成

  • 手機有很多功能, “開機”,“關機”,“打電話”,“發短信”,"拍照"等等

  • 手機中的每一個功能就相當于C語言程序中的一個程序段(函數)

  • 眾多功能中總有一個會被先執行,不可能多個功能一起執行

  • 想使用手機必須先執行手機的開機功能

  • 所以C語言程序也一樣,由眾多功能、眾多程序段組成, 眾多C語言程序段中總有一個會被先執行, 這個先執行的程序段我們稱之為"主函數"

  • 一個C語言程序由多個"函數"構成,每個函數有自己的功能

  • 一個程序***有且只有一個主函數***

  • 如果一個程序沒有主函數,則這個程序不具備運行能力

  • 程序運行時系統會***自動調用***主函數,而其它函數需要開發者***手動調用***

  • 主函數有固定書寫的格式和范寫

函數定義格式

  • 主函數定義的格式:
    • int 代表函數執行之后會返回一個整數類型的值
    • main 代表這個函數的名字叫做main
    • () 代表這是一個函數
    • {} 代表這個程序段的范圍
    • return 0; 代表函數執行完之后返回整數0
int main() {    // insert code here...    return 0;}
  • 其它函數定義的格式
    • int 代表函數執行之后會返回一個整數類型的值
    • call 代表這個函數的名字叫做call
    • () 代表這是一個函數
    • {} 代表這個程序段的范圍
    • return 0; 代表函數執行完之后返回整數0
int call() {    return 0;}

如何執行定義好的函數

  • 主函數(main)會由系統自動調用, 但其它函數不會, 所以想要執行其它函數就必須在main函數中手動調用
    • call 代表找到名稱叫做call的某個東西
    • () 代表要找到的名稱叫call的某個東西是一個函數
    • ; 代表調用函數的語句已經編寫完成
    • 所以call();代表找到call函數, 并執行call函數
int main() {    call();    return 0;}
  • 如何往屏幕上輸出內容
    • 輸出內容是一個比較復雜的操作, 所以系統提前定義好了一個專門用于輸出內容的函數叫做printf函數,我們只需要執行系統定義好的printf函數就可以往屏幕上輸出內容
    • 但凡需要執行一個函數, 都是通過函數名稱+圓括號的形式來執行
    • 如下代碼的含義是: 當程序運行時系統會自動執行main函數, 在系統自動執行main函數時我們手動執行了call函數和printf函數
    • 經過對代碼的觀察, 我們發現兩個問題
      • 并沒有告訴printf函數,我們要往屏幕上輸出什么內容
      • 找不到printf函數的實現代碼
int call(){    return 0;}int main(){    call();    printf();    return 0;}
  • 如何告訴printf函數要輸出的內容
    • 將要輸出的內容編寫到printf函數后面的圓括號中即可
    • 注意: 圓括號中編寫的內容必須用雙引號引起來
printf("hello world/n");
  • 如何找到printf函數的實現代碼
    • 由于printf函數是系統實現的函數, 所以想要使用printf函數必須在使用之前告訴系統去哪里可以找到printf函數的實現代碼
    • #include 就是告訴系統可以去stdio這個文件中查找printf函數的聲明和實現
#include int call(){    return 0;}int main(){    call();    printf("hello world/n");    return 0;}

如何運行編寫好的程序

  • 方式1:
    • 點擊小榔頭將"源代碼"編譯成"可執行文件"
    • 找到編譯后的源代碼, 打開終端(CMD)運行可執行文件




  • 方式2
    • 直接點擊Qt開發工具運行按鈕


main函數注意點及其它寫法

  • C語言中,每條完整的語句后面都必須以分號結尾
int main(){    printf("hello world/n") // 如果沒有分號編譯時會報錯    return 0;}
int main(){    // 如果沒有分號,多條語句合并到一行時, 系統不知道從什么地方到什么地方是一條完整語句    printf("hello world/n") return 0;}
  • C語言中除了注釋和雙引號引起來的地方以外都不能出現中文
int main(){    printf("hello world/n"); // 這里的分號如果是中文的分號就會報錯    return 0;}
  • 一個C語言程序只能有一個main函數
int main(){    return 0;}int main(){ // 編譯時會報錯, 重復定義    return 0;}
  • 一個C語言程序不能沒有main函數
int call(){ // 編譯時報錯, 因為只有call函數, 沒有main函數    return 0;}
int mian(){ // 編譯時報錯, 因為main函數的名稱寫錯了,還是相當于沒有main函數    return 0;}
  • main函數前面的int可以不寫或者換成void
#include main(){ // 不會報錯    printf("hello world/n");    return 0;}
#include void main(){  // 不會報錯    printf("hello world/n");    return 0;}
  • main函數中的return 0可以不寫
int main(){ // 不會報錯    printf("hello world/n");}
  • 多種寫法不報錯的原因
    • C語言最早的時候只是一種規范和標準(例如C89, C11等)
    • 標準的推行需要各大廠商的支持和實施
    • 而在支持的實施的時候由于各大廠商利益、理解等問題,導致了實施的標準不同,發生了變化
      • Turbo C
      • Visual C(VC)
      • GNU C(GCC)
    • 所以大家才會看到不同的書上書寫的格式有所不同, 有的返回int,有的返回void,有的甚至沒有返回值
    • 所以大家只需要記住最標準的寫法即可, no zuo no die
#include int main(){    printf("hello world/n");    return 0;}

Tips:
語法錯誤:編譯器會直接報錯
邏輯錯誤:沒有語法錯誤,只不過運行結果不正確


C語言程序練習

  • 編寫一個C語言程序,用至少2種方式在屏幕上輸出以下內容
   *** ***  *********   *******    ****     **
  • 普通青年實現
printf(" *** *** /n");printf("*********/n");printf(" *******/n");printf("  ****/n");printf("   **/n");
  • 2B青年實現
printf(" *** *** /n*********/n *******/n  ****/n   **/n");
  • 文藝青年實現(裝逼的, 先不用理解)
int  i = 0;while (1) {    if (i % 2 == 0) {        printf(" *** *** /n");        printf("*********/n");        printf(" *******/n");        printf("  ****/n");        printf("   **/n");    }else    {        printf("/n");        printf("   ** ** /n");        printf("  *******/n");        printf("   *****/n");        printf("    **/n");    }    sleep(1);    i++;    system("cls");}

初學者如何避免程序出現BUG

                          _ooOoo_                         o8888888o                         88" . "88                         (| -_- |)                          O/ = /O                      ____/`---"/____                    .   " //| |// `.                     / //||| : |||// /                   / _||||| -:- |||||- /                     | | /// - /// | |                   | /_| ""/---/"" | |                    / .-/__ `-` ___/-. /                 ___`. ." /--.--/ `. . __              ."" "< `.___/_<|>_/___." >""".             | | : `- /`.;`/ _ /`;.`/ - ` : | |               / / `-. /_ __/ /__ _/ .-` / /       ======`-.____`-.___/_____/___.-`____.-"======                          `=---="       .............................................              佛祖保佑                   有無BUG
━━━━━━神獸出沒━━━━━━         ┏┓    ┏┓        ┏┛┻━━━━━━┛┻┓        ┃        ┃        ┃   ━    ┃        ┃ ┳┛   ┗┳ ┃        ┃        ┃        ┃   ┻    ┃        ┃          ┃        ┗━┓    ┏━┛Code is far away from bug with the animal protecting          ┃    ┃    神獸保佑,代碼無bug          ┃    ┃          ┃    ┗━━━┓          ┃        ┣┓          ┃     ┏━━┛┛          ┗┓┓┏━┳┓┏┛           ┃┫┫ ┃┫┫           ┗┻┛ ┗┻┛      ━━━━━━感覺萌萌噠━━━━━━
        ′′′′′′′′██′′′′′′′        ′′′′′′′████′′′′′′        ′′′′′████████′′′′        ′′`′███????███′′′′′        ′′′███?●??●?██′′′        ′′′███??????██′′′′′        ′′′███????██′                      項目:第一個C語言程序        ′′██████??███′′′′′                 語言: C語言        ′██████????███′′                   編輯器: Qt Creator         ██████??????███′′′′                版本控制:git-github        ′′▓▓▓▓▓▓▓▓▓▓▓▓▓?′′                 代碼風格:江哥style        ′′????▓▓▓▓▓▓▓▓▓?′′′′′                      ′.???′′▓▓▓▓▓▓▓▓?′′′′′                      ′.??′′′′▓▓▓▓▓▓▓?                           ..??.′′′′▓▓▓▓▓▓▓?                           ′????????????                              ′′′′′′′′′███████′′′′′                      ′′′′′′′′████████′′′′′′′        ′′′′′′′█████████′′′′′′        ′′′′′′██████████′′′′             大部分人都在關注你飛的高不高,卻沒人在乎你飛的累不累,這就是現實!        ′′′′′′██████████′′′                     我從不相信夢想,我,只,相,信,自,己!        ′′′′′′′█████████′′        ′′′′′′′█████████′′′        ′′′′′′′′████████′′′′′        ________?????        _________????        _________????        ________??_??        _______??__??        _____ ??___??        _____??___??        ____??____??        ___??_____??        ███____ ??        ████____███        █ _███_ _█_███——————————————————————————女神保佑,代碼無bug——————————————————————

多語言對比

  • C語言
#includeint main() {    printf("南哥帶你裝B帶你飛");    return 0;}
  • C++語言
#includeusing namespace std;int main() {    cout << "南哥帶你裝B帶你飛" << endl;    return 0;}
  • OC語言
#import int main() {    NSLog(@"南哥帶你裝B帶你飛");    return 0;}
  • Java語言
class Test{    public static viod main()    {        system.out.println("南哥帶你裝B帶你飛");    }}
  • Go語言
package mainimport  "fmt" //引入fmt庫func main() {    fmt.Println("南哥帶你裝B帶你飛")}

什么是注釋?

  • 注釋是在所有計算機語言中都非常重要的一個概念,從字面上看,就是注解、解釋的意思
  • 注釋可以用來解釋某一段程序或者某一行代碼是什么意思,方便程序員之間的交流溝通
  • 注釋可以是任何文字,也就是說可以寫中文
  • 被注釋的內容在開發工具中會有特殊的顏色

為什么要使用注釋?

  • 沒有編寫任何注釋的程序
void printMap(char map[6][7] , int row, int col);int main(int argc, const char * argv[]){    char map[6][7] = {        {"#", "#", "#", "#", "#", "#", "#"},        {"#", " ", " ", " ", "#" ," ", " "},        {"#", "R", " ", "#", "#", " ", "#"},        {"#", " ", " ", " ", "#", " ", "#"},        {"#", "#", " ", " ", " ", " ", "#"},        {"#", "#", "#", "#", "#", "#", "#"}    };    int row = sizeof(map)/sizeof(map[0]);    int col = sizeof(map[0])/ sizeof(map[0][0]);    printMap(map, row, col);    int pRow = 2;    int pCol = 1;    int endRow = 1;    int endCol = 6;    while ("R" != map[endRow][endCol]) {        printf("親, 請輸入相應的操作/n");        printf("w(向上走) s(向下走) a(向左走) d(向右走)/n");        char run;        run = getchar();        switch (run) {            case "s":                if ("#" != map[pRow + 1][pCol]) {                    map[pRow][pCol] = " ";                    pRow++;//3                    map[pRow][pCol] = "R";                }                break;            case "w":                if ("#" != map[pRow - 1][pCol]) {                    map[pRow][pCol] = " ";                    pRow--;                    map[pRow][pCol] = "R";                }                break;            case "a":                if ("#" != map[pRow][pCol - 1]) {                    map[pRow][pCol] = " ";                    pCol--;                    map[pRow][pCol] = "R";                }                break;            case "d":                if ("#" != map[pRow][pCol + 1]) {                    map[pRow][pCol] = " ";                    pCol++;                    map[pRow][pCol] = "R";                }                break;        }        printMap(map, row, col);    }    printf("你太牛X了/n");    printf("想挑戰自己,請購買完整版本/n");    return 0;}void printMap(char map[6][7] , int row, int col){    system("cls");    for (int i = 0; i < row; i++) {        for (int j = 0; j < col; j++) {            printf("%c", map[i][j]);        }        printf("/n");    }}

  • 編寫了注釋的程序
/*     R代表一個人     #代表一堵墻//   0123456     ####### // 0     #   #   // 1     #R ## # // 2     #   # # // 3     ##    # // 4     ####### // 5     分析:     >1.保存地圖(二維數組)     >2.輸出地圖     >3.操作R前進(控制小人行走)      3.1.接收用戶輸入(scanf/getchar)      w(向上走) s(向下走) a(向左走) d(向右走)      3.2.判斷用戶的輸入,控制小人行走         3.2.1.替換二維數組中保存的數據             (                1.判斷是否可以修改(如果不是#就可以修改)                2.修改現有位置為空白                3.修改下一步為R             )      3.3.輸出修改后的二維數組     4.判斷用戶是否走出出口*/// 聲明打印地圖方法void printMap(char map[6][7] , int row, int col);int main(int argc, const char * argv[]){    // 1.定義二維數組保存迷宮地圖    char map[6][7] = {        {"#", "#", "#", "#", "#", "#", "#"},        {"#", " ", " ", " ", "#" ," ", " "},        {"#", "R", " ", "#", "#", " ", "#"},        {"#", " ", " ", " ", "#", " ", "#"},        {"#", "#", " ", " ", " ", " ", "#"},        {"#", "#", "#", "#", "#", "#", "#"}    };    // 2.計算地圖行數和列數    int row = sizeof(map)/sizeof(map[0]);    int col = sizeof(map[0])/ sizeof(map[0][0]);    // 3.輸出地圖    printMap(map, row, col);    // 4.定義變量記錄人物位置    int pRow = 2;    int pCol = 1;    // 5.定義變量記錄出口的位置    int endRow = 1;    int endCol = 6;    // 6.控制人物行走    while ("R" != map[endRow][endCol]) {        // 6.1提示用戶如何控制人物行走        printf("親, 請輸入相應的操作/n");        printf("w(向上走) s(向下走) a(向左走) d(向右走)/n");        char run;        run = getchar();        // 6.2根據用戶輸入控制人物行走        switch (run) {            case "s":                if ("#" != map[pRow + 1][pCol]) {                    map[pRow][pCol] = " ";                    pRow++;//3                    map[pRow][pCol] = "R";                }                break;            case "w":                if ("#" != map[pRow - 1][pCol]) {                    map[pRow][pCol] = " ";                    pRow--;                    map[pRow][pCol] = "R";                }                break;            case "a":                if ("#" != map[pRow][pCol - 1]) {                    map[pRow][pCol] = " ";                    pCol--;                    map[pRow][pCol] = "R";                }                break;            case "d":                if ("#" != map[pRow][pCol + 1]) {                    map[pRow][pCol] = " ";                    pCol++;                    map[pRow][pCol] = "R";                }                break;        }        // 6.3重新輸出行走之后的地圖        printMap(map, row, col);    }    printf("你太牛X了/n");    printf("想挑戰自己,請購買完整版本/n");    return 0;}/** * @brief printMap * @param map 需要打印的二維數組 * @param row 二維數組的行數 * @param col 二維數組的列數 */void printMap(char map[6][7] , int row, int col){    // 為了保證窗口的干凈整潔, 每次打印都先清空上一次的打印    system("cls");    for (int i = 0; i < row; i++) {        for (int j = 0; j < col; j++) {            printf("%c", map[i][j]);        }        printf("/n");    }}

注釋的分類

  • 單行注釋

    • // 被注釋內容
    • 使用范圍:任何地方都可以寫注釋:函數外面、里面,每一條語句后面
    • 作用范圍: 從第二個斜線到這一行末尾
    • 快捷鍵:Ctrl+/
  • 多行注釋

    • /* 被注釋內容 */
    • 使用范圍:任何地方都可以寫注釋:函數外面、里面,每一條語句后面
    • 作用范圍: 從第一個/*到最近的一個*/

注釋的注意點

  • 單行注釋可以嵌套單行注釋、多行注釋
// 南哥 // it666.com// /* 江哥 */// 帥哥
  • 多行注釋可以嵌套單行注釋
/*// 作者:LNJ// 描述:第一個C語言程序作用:這是一個主函數,C程序的入口點 */
  • 多行注釋***不能***嵌套多行注釋
/* 哈哈哈     /*嘻嘻嘻*/ 呵呵呵 */

注釋的應用場景

  • 思路分析
/*     R代表一個人     #代表一堵墻//   0123456     ####### // 0     #   #   // 1     #R ## # // 2     #   # # // 3     ##    # // 4     ####### // 5     分析:     >1.保存地圖(二維數組)     >2.輸出地圖     >3.操作R前進(控制小人行走)      3.1.接收用戶輸入(scanf/getchar)      w(向上走) s(向下走) a(向左走) d(向右走)      3.2.判斷用戶的輸入,控制小人行走         3.2.1.替換二維數組中保存的數據             (                1.判斷是否可以修改(如果不是#就可以修改)                2.修改現有位置為空白                3.修改下一步為R             )      3.3.輸出修改后的二維數組     4.判斷用戶是否走出出口*/
  • 對變量進行說明
// 2.計算地圖行數和列數int row = sizeof(map)/sizeof(map[0]);int col = sizeof(map[0])/ sizeof(map[0][0]);
  • 對函數進行說明
/** * @brief printMap * @param map 需要打印的二維數組 * @param row 二維數組的行數 * @param col 二維數組的列數 */void printMap(char map[6][7] , int row, int col){    system("cls");    for (int i = 0; i < row; i++) {        for (int j = 0; j < col; j++) {            printf("%c", map[i][j]);        }        printf("/n");    }}
  • 多實現邏輯排序
    // 1.定義二維數組保存迷宮地圖    char map[6][7] = {        {"#", "#", "#", "#", "#", "#", "#"},        {"#", " ", " ", " ", "#" ," ", " "},        {"#", "R", " ", "#", "#", " ", "#"},        {"#", " ", " ", " ", "#", " ", "#"},        {"#", "#", " ", " ", " ", " ", "#"},        {"#", "#", "#", "#", "#", "#", "#"}    };    // 2.計算地圖行數和列數    int row = sizeof(map)/sizeof(map[0]);    int col = sizeof(map[0])/ sizeof(map[0][0]);    // 3.輸出地圖    printMap(map, row, col);    // 4.定義變量記錄人物位置    int pRow = 2;    int pCol = 1;    // 5.定義變量記錄出口的位置    int endRow = 1;    int endCol = 6;    // 6.控制人物行走    while ("R" != map[endRow][endCol]) {        ... ...    }

使用注釋的好處

  • 注釋是一個程序員必須要具備的良好習慣
  • 幫助開發人員整理實現思路
  • 解釋說明程序, 提高程序的可讀性
    • 初學者編寫程序可以養成習慣:先寫注釋再寫代碼
    • 將自己的思想通過注釋先整理出來,在用代碼去體現
    • 因為代碼僅僅是思想的一種體現形式而已

什么是關鍵字?

  • 關鍵字,也叫作保留字。是指一些被C語言賦予了特殊含義的單詞
  • 關鍵字特征:
    • 全部都是小寫
    • 在開發工具中會顯示特殊顏色
  • 關鍵字注意點:
    • 因為關鍵字在C語言中有特殊的含義, 所以不能用作變量名、函數名等
  • C語言中一共有32個關鍵字
12345678
charshortintlongfloatdoubleifelse
returndowhileforswitchcasebreakcontinue
defaultgotosizeofautoregisterstaticexternunsigned
signedtypedefstructenumunionvoidconstvolatile

這些不用專門去記住,用多了就會了。在編譯器里都是有特殊顏色的。 我們用到時候會一個一個講解這個些關鍵字怎么用,現在瀏覽下,有個印象就OK了


關鍵字分類

什么是標識符?

  • 從字面上理解,就是用來標識某些東西的符號,標識的目的就是為了將這些東西區分開來
  • 其實標識符的作用就跟人類的名字差不多,為了區分每個人,就在每個人出生的時候起了個名字
  • C語言是由函數構成的,一個C程序中可能會有多個函數,為了區分這些函數,就給每一個函數都起了個名稱, 這個名稱就是標識符
  • 綜上所述: 程序員在程序中給函數、變量等起名字就是標識符

標識符命名規則

  • 只能由字母(a~z、 A~Z)、數字、下劃線組成
  • 不能包含除下劃線以外的其它特殊字符串
  • 不能以數字開頭
  • 不能是C語言中的關鍵字
  • 標識符嚴格區分大小寫, test和Test是兩個不同的標識符

練習

  • 下列哪些是合法的標識符
fromNo22from#22my_Booleanmy-Boolean2ndObjGUIlnj
Mike2jack江哥_testtest!32haha(da)ttjack_rosejack&rose

標識符命名規范

  • 見名知意,能夠提高代碼的可讀性
  • 駝峰命名,能夠提高代碼的可讀性
    • 駝峰命名法就是當變量名或函數名是由多個單詞連接在一起,構成標識符時,第一個單詞以小寫字母開始;第二個單詞的首字母大寫.
    • 例如: myFirstName、myLastName這樣的變量名稱看上去就像駝峰一樣此起彼伏

什么是數據?

  • 生活中無時無刻都在跟數據打交道

    • 例如:人的體重、身高、收入、性別等數據等
  • 在我們使用計算機的過程中,也會接觸到各種各樣的數據

    • 例如: 文檔數據、圖片數據、視頻數據等

數據分類

  • 靜態的數據

    • 靜態數據是指一些永久性的數據,一般存儲在硬盤中。硬盤的存儲空間一般都比較大,現在普通計算機的硬盤都有500G左右,因此硬盤中可以存放一些比較大的文件
    • 存儲的時長:計算機關閉之后再開啟,這些數據依舊還在,只要你不主動刪掉或者硬盤沒壞,這些數據永遠都在
    • 哪些是靜態數據:靜態數據一般是以文件的形式存儲在硬盤上,比如文檔、照片、視頻等。
  • 動態的數據

    • 動態數據指在程序運行過程中,動態產生的臨時數據,一般存儲在內存中。內存的存儲空間一般都比較小,現在普通計算機的內存只有8G左右,因此要謹慎使用內存,不要占用太多的內存空間
    • 存儲的時長:計算機關閉之后,這些臨時數據就會被清除
    • 哪些是動態數據:當運行某個程序(軟件)時,整個程序就會被加載到內存中,在程序運行過程中,會產生各種各樣的臨時數據,這些臨時數據都是存儲在內存中的。當程序停止運行或者計算機被強制關閉時,這個程序產生的所有臨時數據都會被清除。
  • 既然硬盤的存儲空間這么大,為何不把所有的應用程序加載到硬盤中去執行呢?

    • 主要***原因就是內存的訪問速度比硬盤快N倍***

  • 靜態數據和動態數據的相互轉換
    • 也就是從磁盤加載到內存
  • 動態數據和靜態數據的相互轉換
    • 也就是從內存保存到磁盤
  • 數據的計量單位
    • 不管是靜態還是動態數據,都是0和1組成的
    • 數據越大,包含的0和1就越多
1 B(Byte字節) = 8 bit(位)// 00000000 就是一個字節// 111111111 也是一個字節// 10101010 也是一個字節// 任意8個0和1的組合都是一個字節1 KB(KByte) = 1024 B1 MB = 1024 KB1 GB = 1024 MB1 TB = 1024 GB

C語言數據類型

  • 作為程序員, 我們最關心的是內存中的動態數據,因為我們寫的程序就是在內存中運行的
  • 程序在運行過程中會產生各種各樣的臨時數據,為了方便數據的運算和操作, C語言對這些數據進行了分類, 提供了豐富的數據類型
  • C語言中有4大類數據類型:基本類型、構造類型、指針類型、空類型


什么是常量?

  • "量"表示數據。常量,則表示一些固定的數據,也就是不能改變的數據
  • 就好比現實生活中生男生女一樣, 生下來是男孩永遠都是男孩, 生下來是女孩就永遠都是女孩, 所以性別就是現實生活中常量的一種體現
    • 不要和江哥吹牛X說你是泰國來的, 如果你真的來自泰國, 我只能說你贏了

常量的類型

  • 整型常量

    • 十進制整數。例如:666,-120, 0
    • 八進制整數,八進制形式的常量都以0開頭。例如:0123,也就是十進制的83;-011,也就是十進 制的-9
    • 十六進制整數,十六進制的常量都是以0x開頭。例如:0x123,也就是十進制的291
    • 二進制整數,逢二進一 0b開頭。例如: 0b0010,也就是十進制的2
  • 實型常量

    • 小數形式
      • 單精度小數:以字母f或字母F結尾。例如:0.0f、1.01f
      • 雙精度小數:十進制小數形式。例如:3.14、 6.66
      • 默認就是雙精度
      • 可以沒有整數位只有小數位。例如: .3、 .6f
    • 指數形式
      • 以冪的形式表示, 以字母e或字母E后跟一個10為底的冪數
        • 上過初中的都應該知道

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/120967.html

相關文章

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<