若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我,若你是真心學習可以送你書籍,指導你學習,給予你目標方向的學習路線,無套路,博客為證。
本文定位讀者為小白讀者,將使用最快的方法過完C語言基礎知識,并且制作一個學生管理系統。由于是快速閱覽,本文不會描述過多的其它知識,大部分知識點只是描述了如何進行使用,如何深入還需要各位努力;不過學習過了一遍內容后,學習起來也會較為容易。
目錄
這篇文沒有添加的指針內容可以看這篇:淺論指針(一)
你去約個會,你零基礎的同學就學完C語言知識點過完了
《看聊天記錄都學不會C語言?太菜了吧(1)我在大佬群里問基礎問題沒人理?
《看聊天記錄都學不會C語言?太菜了吧(2)我說編程很容易你們不服?
《看聊天記錄都學不會C語言?太菜了吧(3)代碼都在談戀愛難道你不知道?
《看聊天記錄都學不會C語言?太菜了吧(4)原來我早就會編程了
《看聊天記錄都學不會C語言?太菜了吧(5)打了一把游戲我學會了一個編程知識?
《看聊天記錄都學不會C語言?太菜了吧(6)以前跟我說編程很難的給我站出來
《看聊天記錄都學不會C語言?太菜了吧(7)下一篇文章告訴你牛郎是誰
《看聊天記錄都學不會C語言?太菜了吧》(8)牛郎和織女竟有一個孩子?
作者簡介
作者名:1_bit
簡介:CSDN博客專家,2020年博客之星TOP5,藍橋簽約作者
博客地址:https://i1bit.blog.csdn.net
環境:
- 系統:windows7
- IDE:Devc
- 面向讀者:小白
一、HelloWorld
HelloWorld 是經典的編程入門程序,指在編寫代碼生成程序,運行該程序將會在程序中顯示 HelloWorld。以下是一個 HelloWorld 的C語言代碼:
#include<stdio.h>
int main(){printf("HelloWorld");
}
以上程序中 #include<stdio.h>
稱為頭文件,頭文件我們可以理解成“將工具箱拿過來”這一件事。代碼 #include<stdio.h>
中,#include<>
相當于一只手,stdio.h
為需要拿過來的工具箱名。那為什么要拿這個工具?是因為我們在這個代碼中將會用到這個工具箱中的工具。
int main(){}
為一個程序的入口,什么是程序的入口呢?其實就像醫院或者一些場所,總有一個大門規定從此進入,否者當客戶想要進入這個場所時將會找不到入口。而這個main
就是我們這個代碼的入口,里面具體的內容就寫在main
后面的花括號{}
中。
花括號中的代碼是 printf("HelloWorld");
,其中printf()
叫做printf函數,其實函數這個術語我們可以理解成一個功能或者說工具,printf()
是存放在stdio.h
中的工具,printf()
可以用來顯示你要顯示的內容,在printf()
圓括號中使用雙引號引起你想要顯示的內容即可。在這里需要顯示的是HelloWorld。注意,一般情況下,每一句代碼結束后需要使用分號進行結尾。
編譯運行程序將會出HelloWorld:
二、變量
變量在C語言中我們可以當做是一個存放內容的容器,例如可以存一個數字、一個字符、小數等。變量有不同的類型,包括整型、字符型、浮點數;浮點數我們可以簡單的理解成小數即可。
如果你想要創建一個整數類型的變量很簡單,整數在C語言中使用int
進行描述,隨后我們在int
后輸入一個字符串或者字符就可以完成一個變量的創建,但是要注意,需要使用分號結束:
#include<stdio.h>
int main(){int a;
}
以上代碼 int
是類型描述,a
字符是這個變量的名字,此時就等于讓計算機創建了一個名字標識為a
,能存儲整數類型的變量了。我們一般在創建一個變量時需要對變量初始化,初始化是指給這個變量一個值,讓我們能夠知道這個變量具體所存儲的內容,所以可以這樣寫:
#include<stdio.h>
int main(){int a=0;
}
以上代碼 int a=0;
使用等于號將0存入了a
變量,等于號的作用則是將等于號右邊的值存入左邊的變量中。
變量可以使用printf()
將其內容進行輸出顯示,代碼如下:
#include<stdio.h>
int main(){int a=0;printf("%d",a);
}
以上代碼 printf("%d",a);
將會把變量a的內容進行顯示,其中 %d
是一個占位符,占位符則表示在此處占據一個位置,之后將會替換成一個值;在這句代碼中,我們可以看見雙引號后使用逗號對變量a
進行了分隔,當運行printf()
這一句代碼時,將會輸出printf
圓括號內雙引號后使用逗號分隔的第一個變量值。
在此我們需要注意,創建一個變量后,之后使用該變量不需要在此將類型符一起編寫。就例如你跟你朋友介紹小a
,只需要第一次介紹完畢,之后就直接說名字就認識了。
程序運行結果如下:
三、常量
變量在程序運行時是可變的,而常量不行。當你創建一個常量時給予了它值,那么之后的值都不能進行改變。我們先看一下變量在程序運行時改變內容是否可以:
#include<stdio.h>
int main(){int a=0;printf("%d",a);a=10;printf(" %d",a);
}
以上代碼在顯示了第一次a
的值后再次改變了a
里面的內容為10,之后再次輸出顯示,將為等于10:
接下來看下常量。常量只需要在創建一個變量時使用 const
進行修飾即可:
#include<stdio.h>
int main(){const int a=0;printf("%d",a);a=10;printf(" %d",a);
}
此時我們編譯代碼將會出錯:
四、變量運算
變量之間是可以相互相加減的,例如正常的加減法、乘除法等。首先我們可以創建兩個變量:
int a=10;
int a1=20;
a
和a1
相加并且顯示就可以寫成如下代碼:
#include<stdio.h>
int main(){int a=10;int a1=20;printf("%d",a+a1);
}
以上代碼printf("%d",a+a1);
中,%d
是個占位符,將會輸出a
與a1
相加后的值。之前解釋過,%d
將會顯示引號后逗號隔開的第一個值,在這里a+a1
是一個值,將會先運算,然后進行相加,結果為:
我們也可以同時顯示a
與a1
的值:
#include<stdio.h>
int main(){int a=10;int a1=20;printf("%d %d",a,a1);
}
以上代碼printf
中,第一個%d
顯示引號后第一個逗號隔開的a
值,第二個%d
將會顯示逗號隔開的第二個值a1
。結果為:
同時一行創建兩個變量以及乘法運算可以寫成:
#include<stdio.h>
int main(){int a=10,a1=20;printf("%d",a*a1);
}
五、輸入
在C語言中可以從鍵盤中輸入一個值并且賦值給一個變量。使用一個工具叫做scanf()
函數,它也存放在stdio.h
這個頭文件工具箱中。以下是scanf()
的使用方法:
#include<stdio.h>
int main(){int a=10;printf("%d",a);scanf("%d",&a);printf("%d",a);
}
以上代碼首先創建了一個變量a
等于10,隨后顯示a
的值,之后使用了scanf("%d",&a);
,在這個代碼中,%d
表示接收即將要輸入的值,&a
表示取到a
的地址,并且把輸入的值存到變量a
中。其實%d
是一個只代表整數類型的占位符。最后再輸出a
的值,結果如下:
六、邏輯
在C語言中,可以使用if
語句對邏輯進行判斷,例如判斷用戶輸入的數是否大于10。示例代碼如下:
#include<stdio.h>
int main(){int a=0;scanf("%d",&a);if(a>10){printf("%d",a);}
}
以上代碼使用了if語句對輸入的值進行判斷,在使用scanf后將值存入了變量a中,之后使用if語句在if語句后的圓括號中輸入條件,如果這個條件成立則運行后面花括號的代碼printf("%d",a);
,如果條件不正確,那么則不會執行其它代碼。
輸入1,不顯示其他代碼,因為不大于10。
輸入11,條件成立,執行花括號內的代碼:
我們還可以在if
語句后輸入其它代碼表示已經執行完if語句:
#include<stdio.h>
int main(){int a=0;scanf("%d",&a);if(a>10){printf("%d",a);}printf("if 語句已經執行完畢");}
運行結果如下;
七、if else
if 語句還有一個else
分支,else
分支用于在條件判斷錯誤后執行:
#include<stdio.h>
int main(){int a=0;scanf("%d",&a);if(a>10){printf("條件成立,輸入值是 %d",a);}else{printf("條件錯誤,輸入值是 %d",a);} }
以上printf
語句中有其他字符串以及占位符 %d
,此時其它字符串照原樣輸出顯示,%d
將會替換成變量a
的值:
八、if else if
使用if else if
語句可以為if
語句判斷多個條件。
#include<stdio.h>
int main(){int a=0;scanf("%d",&a);if(a==1){printf("a是 %d",a);}else if(a==2){printf("a是 %d",a);} else if(a==3){printf("a是 %d",a);} else if(a==4){printf("a是 %d",a);} else{printf("條件都不對");}}
以上代碼使用了else if
語句,在else if
語句中可以增加多個判斷條件,判斷a
的值為什么。在C語言中使用兩個等于號表示判斷左右兩邊的值是否相等。
九、邏輯運算
在C語言中,使用一個if語句也可以判斷多個條件,這時需要使用邏輯判斷符&&邏輯與、||邏輯或。例如你需要判斷小于10以內的偶數,那么就是兩個條件;其一需要小于10,其二需要能夠被2整除,而且這兩個條件是同時都要滿足的,既要小于10,也要能夠被2整除。例如現在有一個變量a
存儲的是用戶輸入的數,這兩個條件就可以寫成 a<10
和a%2==0
,這兩個條件中的%是取模運算,指的是取余數,余數為0則表示能夠判斷被2整除。
那么如何使用if
語句同時判斷這兩個條件呢?其實只需要在if
語句中使用&&
將兩個條件連接即可:
#include<stdio.h>
int main(){int a=0;scanf("%d",&a);if(a<10 && a%2==0){printf("條件成立");}else{printf("條件不對");}}
以上代碼中,if
語句后的圓括號中輸入條件,在這里使用兩個&&
將兩個條件進行了連接,表示兩個條件都是要同時滿足。a%2==0
表示取余數后結果要為0,運行結果如下:
如果只需要滿足其中一個條件,只需要將&&
換成||
即可:
#include<stdio.h>
int main(){int a=0;scanf("%d",&a);if(a<10 || a%2==0){printf("條件成立");}else{printf("條件不對");}}
輸入12,能夠被2整除,不必小于10,滿足條件其一即可:
十、循環
循環在C語言中可以對某一段代碼塊重復執行。示例代碼:
#include<stdio.h>
int main(){int a=0;while(a<10){printf("重復");a=a+1;}
}
以上代碼首先創建了一個變量a
,里面存儲的內容是0,隨后使用一個while
進行循環。while
是重復的關鍵字,你可以當作一個魔法咒語,直接使用while
在后面的圓括號中是while
循環的條件,在這里是a<10
,意思是只要a這個變量的存儲值不大于10,那么就會一直循環;圓括號后的花括號中是需要重復的代碼,在這里是printf("重復");
與a=a+1
,每次重復執行代碼都會顯示重復,并且a等于自身加1再給予自身,這樣a變量每重復一次就會增加1,第一次是1第二次為2,總有一次會超過10,超過10則會跳出循環不再執行。結果如下:
為了更直觀的查看結果,我們在printf
語句中增加一個換行符\n
,我們可以理解\n
為一個特殊功能字符串,使用后每次顯示到該位置就會換到下一行:
#include<stdio.h>
int main(){int a=0;while(a<10){printf("重復\n");a=a+1;}
}
結果為:
除了while
循環我們還可以使用一個for
循環,跟while
循環一樣,都是循環作用:
#include<stdio.h>
int main(){int a=0;for(a=0;a<10;a++){printf("重復\n");}
}
以上代碼for
與while
一樣是一個關鍵字,你可以當作是一個魔法咒語,在圓括號中使用分號分隔了a=0
、a<10
與a++
,其中a=0
只會運行一次,表示將0存入a
,隨后a<10
為這個for
循環的循環條件,如果條件不對將會跳出循環,每次for
循環運行a<10
都會運行一次,a++
等于a=a+1
,表示a變量自增1,此時每次循環a
變量就會加上1,總有一次會跳出循環。結果為:
十一、結構體
結構體簡單的來說是一個數據的類型,跟int
整型一樣,都是一種數據類型,是有多個或其它數量的數據類型組成的一種結構,其它數量的數據類型可以是整形等。代碼示例:
#include<stdio.h>void main(){struct human{int age;char sex;char name;} ;struct human xiaoming;
}
以上代碼使用一個 struct human
表示創建一個結構體,這個結構體叫做human
,花括號內表示這個結構體擁有什么屬性;int age;
用來存儲年齡,char sex;
中的char
表示字符類型的數據,跟int
不一樣,char
是值!@#¥……&*a之類的單個字符數據,char name
表示存儲一個姓名代號。struct human xiaoming;
表示創建一個結構體類型的數據叫做小明,其實就跟int a
一樣,struct human
只是表示這是結構體 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);
}
以上代碼 xiaoming.age=10;
表示xiaoming
這個結構體類型數據中有一個叫做age
的屬性,使用小數點加屬性名進行賦值,那么就表示將這個值存儲到這個屬性中;xiaoming.sex='T';
表示存儲T
這個字符到sex
這個戶型中,字符類型數據需要使用單引號引起來,其中xiaoming.name='M';
也是一樣;隨后使用printf
進行輸出時xiaoming.age
就表示在這里使用age
這個屬性的值進行輸出,%d
表示輸出的這個變量是個整數;下一句printf
語句中使用的占位符為%c
,表示的是這個位置即將輸出一個字符類型的數據,字符類的數據使用的是%c
,而整數則是使用的是%d。
數組
在之前的學習中我們使用了變量存儲單個的值,那如何使用一個容器存儲多個值呢?這個時候可以使用數組。顧名思義,數組就是一個值的組合,例如示例:
#include<stdio.h>void main(){int a[]={1,2,3,4,5,99,888};}
以上代碼使用int
描述了一個名稱為a的數組,其中方括號[]表示數組,在等于號右邊使用花括號將要存儲的值括起來,并且使用逗號進行分隔,這樣就創建好一個數組了。那如何顯示數組內的值呢?這個時候我們可以使用數組名加下標去進行取值,例如我想取第一個并且顯示那么就可以寫成 printf("%d",a[0]);
,在C語言中,是從0開始數數的,所以第一個我們使用的是a[0]
,第二個取值我們可以寫成printf("%d",a[1]);
;我們可以對這些位置的值進行重新的賦值例如 a[0]=11
,示例如下:
#include<stdio.h>void main(){int a[]={1,2,3,4,5,99,888};printf("%d\n",a[2]);a[2]=555;printf("%d\n",a[2]);
}
以上代碼顯示a[2]
的值為3,并且修改a[2]
的值為555再次輸出,結果如下:
那如何顯示所有數組a的值呢?這個時候需要使用循環,因為我們數組的取值是通過描述數組第幾個值進行存取,我們稱為下標,下標從0到數組所存儲的長度為最大,此時使用循環,設置一個變量從0開始即可取出數組內所有的內容:
#include<stdio.h>void main(){int a[]={1,2,3,4,5,99,888};int i;for(i=0;i<7;i++){printf("%d\n",a[i]);}}
以上代碼使用for
循環,對數組進行讀取,由于數組長度最大為7,所以需要小于7,最后再使用變量i作為數組下標即可,結果如下:
數組也可以先指定長度最后賦值:
#include<stdio.h>void main(){int a[10];int i;for(i=0;i<10;i++){a[i]=i;}for(i=0;i<10;i++){printf("%d\n",a[i]);}}
以上代碼我們使用for
循環設置數組a里面的內容,a[10]
表示數組a的長度為10,能存儲10個值。隨后使用for
循環設置數組a
的內容,第一次為1第二次為2以此類推,最后再使用循環進行輸出,結果如下: