前言
上周寫了一篇 20 分鐘學會 C 語言與Python的文章——《一萬字一篇文20分鐘學會C語言和Python,十四年編程經驗老鳥傳授經驗之道》,之后見粉絲轉了一個話題“十分鐘如何學會C語言”,我就在想是否能夠十分鐘呢?答案是可以的,不過是針對于C語言的一般知識點完成語法入門。不過若你在進行考試時,若發現不會可以用這幾個規律對題目進行琢磨,說不定就寫出來了。
在C語言中或者很多編程語言在設計時都會遵從一定標準或者說規律,我們接下來先看看其中規律再進行 C 語言的學習吧。
你看得懂這個規律你就已經一般語法入門了
在 C 語言進行一般的語法編寫時其實都是遵從了嚴謹的邏輯,而這些邏輯會在不同的知識點及概念中進行復用,我們就用這些規律對C語言進行學習。以下是總結出的一般語法規律如果你很理解下面的話,那么你已經掌握了大部分的C語言一般語法了:
- 雙引號引起來的內容為字符串
- 函數就是某一個功能,用什么功能用什么函數
- 第一次遇見一個有值的內容或容器需對其進行類型的說明
- 類型說明放在開頭
- 有邏輯判斷時將條件添加到圓括號中
- 一般數學運算方式跟日常生活中的數學運算類型
- 一條語句叫做語句,多條語句叫做代碼塊,不同范圍或者層級下的代碼塊使用花括號進行標記,在數組中用于標記數組內容
- 逗號用來分隔
- 等于號將右邊內容賦值給左邊變量
- 復雜、簡單的表達式就類同于一個數學公式
- 一個表達式中若需要輸出內容,那么肯定先將這個表達式計算后才最后輸出
- 所有有功能性的標點符號必須是英文標點
- 參數就是給予函數進行運算所必備的傳入數據,傳入數據一般將內容填寫在函數的括號內
- 變量就是存儲一個值的容器
- 數組就是存儲多個值的容器
- 代碼是自上而下的,例如變量需要先創建才可以使用
- 占位符顧名思義就是為一個值占據一個位置,也就是幫忙排隊真正使用到對應的值的時候將會換成正主
- 結構性代碼需緊密貼合,中間不能出現其他的代碼
- 關鍵字就是表示接下來說明要該關鍵字進行對應的事件
注:本篇查看對象最好是已經學了C語言一兩節課的同學,因為在此篇中將不會講解代碼在哪編寫以及用什么軟件進行編寫等問題。
開始計時正式開始學習
其實以上那幾個點就已經包含了很多C語言語法的內容,我們接下來就舉例并且適當的進行教學完成 C 語言一般語法的入門。
01 輸出顯示
根據以上規律中的第二點,想要輸出內容那么就需要使用一個可以輸出的函數,那么這個輸出內容的函數在 C 語言中是 printf();我們的內容若想輸出顯示 HelloWorld 那么 HelloWorld 是一串字符串,那么根據以上規律的第一點我們寫成 “HelloWorld”,那么在這里 “HelloWorld” 跟 printf() 怎么樣結合在一起呢?此時我們再看第十三點規律“參數就是給予函數進行運算所必備的傳入數據,傳入數據一般將內容填寫在函數的括號內”,得知,直接將內容填入 printf() 的圓括號中即可:
printf("HelloWorld");
利用以上總結的規律提升學習效率簡直易如反掌。
02 變量
變量根據規律中的第十四點我們得知,變量為一個容器,并且可以存值;但是此時我們還需要查看第三點“第一次遇見一個有值的內容或容器需對其進行類型的說明”;我們在創建一個變量時,這個變量是對值進行存儲的容器,那么則需要對這個變量進行類型的說明,根據第四點我們得知類型的說明一般放在開頭。我們在此舉例幾個類型說明符:int(整數類型)、char(字符類型)、float(浮點數類型)。這幾個類型說明符在第一次創建的時候給予說明,即是創建了這幾個類型的變量,創建一個變量的一般格式如下:
int 變量名稱=變量值
根據以上的格式我們將變量名稱改為 abc則是創建了一個名為 abc 的整數類型的變量,那么里面存儲的值肯定為整數;等于號可以從第九點規律中得知這就是將右邊的變量值存儲到左邊的變量中,那么代碼就可以寫成:
int abc=10;
03 變量輸出
變量輸出意思則是將變量進行顯示,顯示我們使用可以用作顯示的函數 printf(),假設此時我們有一個變量 abc所存儲的值是10,那么顯示代碼是直接寫成這樣嗎:
printf(abc);
這是不對的,那是這樣嗎?
printf("abc");
這樣也是錯的,這樣直接顯示了 abc 這個字符串,那么我們該怎么做呢?這個時候看規律的17點,我們需要使用占位符。不同類型使用的占位符不同,每個類型對應一種,或者你可以理解為占位符就是這些變量的男朋友,逛街累了就需要他們去排隊,排完隊了正式買東西女主才過來挑。在這里 abc 是 int 整數類型,整數類型的占位符為 %d,那直接輸出 %d 就行:
printf("%d")
那這樣對不對?當然不對了,他女朋友哪去了呢?所以在這里我們需要指定一下他的女朋友;我們看規律的第八點,用逗號進行間隔。我們也不需要隔多遠,在雙引號外用逗號隔開就行,雙引號內就像排隊的隊列,雙引號外就是等待的“女朋友”們。
printf("%d",abc)
為什么我剛剛說是“女朋友”們?那是因為不能讓女生累這所以就一堆男性朋友都去排隊去了。假如現在有3個變量,分別是 abc、a1、a3,他們都是整數類型,如何輸出呢?那你就看下面的代碼了:
printf("%d --- %d --- %d",abc,a1,a3)
以上代碼中的 — 會照原樣輸出顯示,因為這些都是自己去為自己去排隊的,那么在 printf 中的這三個 %d 是怎么對應的呢?第一個 %d 就是對應 abc,第二個就是對應 a1 然后依次類推,最后結果如下:
這一小點完整的代碼如下:
int abc=0;
int a1=10;
int a3=20;
printf("%d --- %d --- %d",abc,a1,a3);
04 邏輯判斷
邏輯判斷就是一個情形下條件是否成立從而執行不同的流程。例如明天天氣好就去打球,天氣不好就在家打游戲,天氣好和天氣不好就是條件,那么用 C 語言的邏輯判斷語句如何表示呢?看下面這個一般的語法標準:
if(條件){錯了干什么這里打代碼
}else{對了干什么這里打代碼
}
以上這個格式其中 if 就是表示接下來要進行邏輯判斷,從第五點得知,邏輯判斷條件就是放在圓括號之中的,再接著從第七點中得知,花括號內編寫的則是代碼塊,我們可以在其中編寫多條代碼。
我們可以根據以上的格式編寫如下代碼:
int a=3;
if(a==3){printf("a 是 3 ");
}else{printf("a 不是 3 ");
}
那以上的代碼我們就應該很清楚了,if 是邏輯判斷,那么圓括號內的就是表示條件花括號內的就是表示條件是否正確從而執行的不同代碼。在 C 語言中使用兩個等于號表示判斷等于號左邊內容值是否與右邊內容值相等。
我們也可以去掉 else 部分,這樣如果條件 a==3 判斷錯誤將不會執行別的內容,由此得知 else{} 就表示條件錯誤后需要執行的部分,而花括號內的代碼則是條件錯誤后具體需要執行的內容。
在此我們還可以判斷多個條件:
int a=5;
if(a==3){printf("a 是 3 ");
}else if(a==4){printf("a 是 4 ");
}else if(a==5){printf("a 是 5 ");
}else{printf("a 不是 3 ");
}
以上出現了一個 else if,這又是什么呢?其實就是判斷這個變量 a 如果不等于 3 就繼續下一個條件判斷,判斷成功就只執行其中一個流程內的代碼,隨后跳出整個 if 結構。
在此注意,根據規律十八點說明,結構之間必須緊密貼合不能夠在在中間打其他的代碼喲,例如下面這個就是錯的:
int a=5;
if(a==3){printf("a 是 3 ");
}else if(a==4){printf("a 是 4 ");
}
int b=0;
else if(a==5){`在這里插入代碼片`printf("a 是 5 ");
}else{printf("a 不是 3 ");
}
05 循環
在 C 語言中我們有 while 循環、for 循環等,在此用這兩個舉例。while 和 for 都是關鍵字,根據規律十九點我們可以得知,while 就是表示開始循環,那么在此處我可以告訴你,最簡單的循環是由一個關鍵字、一個條件和對應代碼塊組成的。條件根據規律第五點知道是需要放在圓括號內,隨后再看規律第七點,花括號內表示需要執行的代碼塊,那么查看以下示例:
int a=0;
while(a<10){printf("我在循環...");a++;
}
那么就可以很清楚的知道 while 就是表示要開始循環,圓括號內的條件是 a<10,這是這個循環執行的時候需要判斷的條件,若這個條件錯了那么則不再進行循環,最后再看花括號內的代碼,輸出顯示 “我在循環…” 這個字符串;在這里需要說一下 a++,a++表示a這個變量自己自增加1,意思就是a最開始是0,自增1后那就是1了,隨后每次循環都執行一次,知道 a<10 這個條件不對則不再進行循環。
那還有一個 for 循環呢?for循環也很簡單,不過跟 while 循環會有一定的差別。
int a;
for(a=0;a<10;a++){printf("我在循環...");
}
以上代碼中,for 表示循環,但是在圓括號后中不止有條件。圓括號中的 a=0 表示第一次循環執行一次 a=0,也就是把 0 存儲到 a 變量中,a<10 肯定是條件了,隨后 a ++ 則是表示每次循環 a 就會加1。
以上結果跟 for 循環的結果都一致。
06 數組
我們可以從第十五點規律中得知,數組就是存儲多個值的容器,那么創建一個容器肯定要說明類型,然后給予一個數組名,最后給予一個內容,我們可以根據第七條規律得知,數組的內容是使用花括號標記的,那具體如何寫呢?我們可以查看一下格式:
類型 數組名[]={值1,值2}
從以上格式中我們可以得知,開頭就是類型,隨后就是數組名,在數組名右側是有一個方括號,表示這個是數組,隨后等于號右邊用花括號將其值進行了引入,并且不同值之間使用了逗號進行分隔。那我們現在看一個C語言的數組代碼:
int a[]={9,6,3,2,5,8,7,4,1,0};
以上代碼中創建了一個整型數組 a,里面存儲了 9,6,3,2,5,8,7,4,1,0 ,他們之間使用了逗號進行分隔。
那我現在想顯示這個數組內容怎么辦?很簡單,使用 printf() 函數唄,由于我們這個數組值的類型是整型,肯定使用 %d 作為占位符,那么這樣寫肯定是沒錯的:
printf("%d ");
那接下來怎么寫呢?我們如果這個時候想顯示第一個元素也就是 9,那怎么顯示?這時通過一個叫做下標的知識點就可以完成了。例如 a[0]就表示9,a[1]就表示6,a[2]就表示3,從0開始依次遞增:
int a[]={9,6,3,2,5,8,7,4,1,0};
printf("%d ",a[2]);
07 自定義函數
自定義函數跟變量聲明一樣,類型說明符要放開頭,可以查看第四點規律。自定義函數的格式如下:
類型說明符 函數名(){函數體代碼
}
函數是一個功能,那么自定義函數就是自己去寫一個功能,在此我編寫一個自定義函數,該自定義函數的功能就是返回一個值:
int r1(int a,int b){return a+b;
}
以上函數 int 表示返回值是整數類型,r1 是這個函數的名稱,圓括號內是參數;int a和 int b 表示接收兩個類型的函數,但是接收后需要有一個標記去引用,在這里就是對這兩個函數進行命名為a和b,他們之間使用逗號進行間隔,規律符合第八點規律;隨后在花括號中編寫這個函數的函數代碼,符合第七點規律;在花括號內 return 表示將 a+b 的結果進行返回,你若傳入兩個數字一個是 11 一個是 2 那么將會返回3,如下完整代碼示例:
#include<stdio.h>int r1(int a,int b){return a+b;
}int main(){int a;a=r1(11,2);printf("%d ",a);
}
在函數中 return a+b 其中 a+b 就是表達式,將會先計算,最后再返回,符合第十一點規律。在使用函數時使用函數名進行調用,傳入的值使用逗號進行間隔,最終將會返回出來賦值給a變量;其實 a=r1(11,2); 這一行代碼也符合規律第十一點,將會先進行函數的內容最后才會返回出來。
08 結構體
結構體其實就是一種復合的數據類型,使用一個結構體,你可以為結構體內的元素進行賦值從而定義一種類型的不同屬性。結構體也非常符合之前函數、變量創建的方式,我們先看一個代碼:
struct human{int age;char sex;char name;
} ;
struct human xiaoming;
以上代碼 struct 就是結構體的一個關鍵字,human 就是這個機構體名,花括號內就是結構體的復合元素,在這里有整型變量 age、字符類型 sex以及字符類型 name,在花括號結尾再添加分號表示結束即可。
那么此時 human 就是表示一個結構體或者說是你自己創建的一種數據類型;之前我們說過直接使用數據類型修飾一個變量就可以了,不過在結構體中你還需要表示這個是個結構體變量,所以在開頭加一個 struct 進行標記寫成 struct human xiaoming; 。
那如何使用呢?我們看以下的示例:
#include<stdio.h>void main(){struct human{int age;char sex;char name;} ;struct human xiaoming; xiaoming.age=10;xiaoming.sex='T';xiaoming.name='M';printf(" age 為:%d\n",xiaoming.age);printf(" sex 為:%c\n",xiaoming.sex);printf(" name 為:%c\n",xiaoming.name);
}
以上代碼中 %c 則表示為字符類型數據進行占位,xiaoming.age 表示xiaoming 這個使用這個結構體變量之中的 age 屬性并且賦值為 10;xiaoming.sex=‘T’; 則表示給 sex 屬性賦值為 T,在 C 語言中字符數據是使用單引號進行表示的。
完整入門教程
如果想進行較為完整且簡單的學習可以參照以下教程。
目錄
《看聊天記錄都學不會C語言?太菜了吧》(22)(必懂!題解 1-100 內素數)素數原來是質數!為什么你不早說!——(必懂!題解)求素數
《看聊天記錄都學不會C語言?太菜了吧》(21)(必懂!題解冒泡排序)在現實生活中,打擂臺比賽爭名次竟用的是冒泡排序?——(必懂!題解)冒泡必懂
《看聊天記錄都學不會C語言?太菜了吧》(20)(必懂!題解指定天數)我能知道2000年后的這個月一共有幾天——(必懂!題解)我能知道2000年后的這個月一共有幾天
《看聊天記錄都學不會C語言?太菜了吧》(19)鞏固開始,數字1、2、3、4能夠組成多少個 3 位數的不同的排列——鞏固1
《看聊天記錄都學不會C語言?太菜了吧》(18)2分鐘搞結構體——結構體
看聊天記錄都學不會C語言?太菜了吧》(17)5分鐘搞懂指針與多重指針——指針與多重指針
《看聊天記錄都學不會C語言?太菜了吧》(16)我一直以為校花很漂亮,直到我叫了她一聲…——生命空間、命名規則
《看聊天記錄都學不會C語言?太菜了吧》(15)你學了一節課的函數我5分鐘搞定了,還很熟——自定義函數傳參、返回值
《看聊天記錄都學不會C語言?太菜了吧》(14)這么神奇?我寫了20行代碼竟然一行就可以搞定?——自定義函數
《看聊天記錄都學不會C語言?太菜了吧》(13)(9*9 乘法表)尋找電腦中的盲盒彩蛋——for 循環與循環嵌套 九九乘法表
《看聊天記錄都學不會C語言?太菜了吧》(12)循環有多容易?你看一眼就懷…——循環
《看聊天記錄都學不會C語言?太菜了吧》(11)2分鐘領悟數組——數組
《看聊天記錄都學不會C語言?太菜了吧》(10)程序媛聰明絕頂了——邏輯與運算符
《看聊天記錄都學不會C語言?太菜了吧》(9)老公餅真的有老公送?——字符數組
《看聊天記錄都學不會C語言?太菜了吧》(8)牛郎和織女竟有一個孩子?——多條件if
《看聊天記錄都學不會C語言?太菜了吧(7)下一篇文章告訴你牛郎是誰——if邏輯判斷
《看聊天記錄都學不會C語言?太菜了吧(6)以前跟我說編程很難的給我站出來——浮點數及變量運算
《看聊天記錄都學不會C語言?太菜了吧(5)打了一把游戲我學會了一個編程知識?——變量輸出及占位符
《看聊天記錄都學不會C語言?太菜了吧(4)原來我早就會編程了——變量
《看聊天記錄都學不會C語言?太菜了吧(3)代碼都在談戀愛難道你不知道?——頭文件及標點
《看聊天記錄都學不會C語言?太菜了吧(2)我說編程很容易你們不服?——Devc使用及HelloWorld
《看聊天記錄都學不會C語言?太菜了吧(1)我在大佬群里問基礎問題沒人理?——學習建議