類型名稱說明char字符類型存放字符的ASCII碼int整型存放有符號整數short短整型存放有符號整數long長整型存放有符號整數long long存放有符號整數float單精度浮點型存放精度不高的小數double雙精度浮點型存放精度較高的小數數組
根據存放類型的不一樣,能夠大體分爲字符型,整型和浮點型微信
類型大小範圍說明函數
int4-231~231-1測試
short2-215~215設計
short(int) 短整型code
long4-231~231-1long (int) 長整型,規定範圍不得低於intblog
long long8-263~263-1不低於long類型遞歸
類型大小範圍說明char1-1281270127每一個數字表明一個字符,可是不是全部的字符都是可打印字符遊戲
類型大小範圍說明float4-3.4e383.4e38**單精度浮點型,精確到小數點67位double8-1.7e3081.7e308**雙精度浮點型,精確到小數點後面1617位圖片
//定義變量的格式 類型 變量名; int a;
有一些名字拿去作其餘做用,好比int 表明整型,這些就稱之爲關鍵字
每一個變量名由若干個單詞組成,除了第一個單詞以外,其他單詞首字母所有大寫.單詞能夠是縮寫。好比 mciSendString
格式佔位符做用%d有符號10進制整型%c字符類型%f單精度浮點型%lf雙精度浮點型%s字符數組類型%o無符號8進制整型%x無符號16進制整型
C語言的分支結構主要有if和switch
if(條件) { //語句1 } else { //語句2; } //若是條件知足 執行語句1,若是條件不知足 執行語句2
if(條件1){ 語句1; } else if(條件2) { 語句2; } … else { 語句n; }
switch(變量) { case 狀況1: 語句1; break case 狀況2: 語句2; break; //... default: break; }
sw itch的case後面只能接整型或者字符型的常量表達式,不能夠是小數或者字符
sw itch每一個case後面都有一個break
default語句若是不須要能夠不要
對比
好比遊戲的操做和貼圖,這些都是要屢次執行的,就會用到循環
while(條件) { 語句; //循環{}中語句稱之爲循環體 } //執行順序 先判斷條件 條件知足執行循環體,不知足直接退出
當條件知足的時候執行循環體,執行以後再去判斷條件,條件不知足的時候退出
//打印ASCII碼錶中的全部字符 int i=0; while(i<128) { printf("%c\t",i++); } //同一個代碼能夠有多種不一樣的寫法 熟練使用其中一個循環就行了
w hile循環不要加分號
w hile循環體只有一句的時候能夠省略{} 可是不要省略
若是條件知足則會一直進行循環,不知足就會退出循環,因此w hile可能一次都不執行
for循環
for(初始化1;條件2;自增自減3) { 循環體4; } //爲了描述方便 給每一個語句都加了一個編號 //執行順序 先執行初始化語句1,而後判斷條件2,條件成立執行循環體4,不成立跳出循環. //循環體執行完畢以後,執行自增語句3 而後判斷條件 開始下一輪循環 //簡記 1243 243 243
for循環相似w hile循環 一樣是先判斷而後執行循環體的,不過for的語法比較簡單而且相對於w hile更不易寫錯,因此能夠先從for循環開始熟悉
for循環中的兩個分號必不可少,其他的部分均可以不要,可是分號必不可少
for循環外面不要加分號!!!! 畫重點 if w hile for通常都不要加分號
do while循環
do { //循環體; }while(條件); //;不能少 //do while循環的特色是先執行循環體而後判斷條件,若是條件成立進行下一輪循環 //do while的循環體一定會執行一次
do w hile循環條件放在後面,先執行而後判斷,若是條件不成立會退出,否則會繼續循環
特別說明
跳轉語句使用方式做用說明goto跳轉到程序的任意位置使用不當會形成代碼的可讀性差,可維護性差,基本上不用breakbreak;跳出最近的一個循環或者switch若是是循環中的sw itch中的break只能跳出sw itch,若是是多層循環只能跳出最近的一個循環continuecontinue;跳過當前的一輪循環,進入下一輪循環只能和在循環中使用.跳過當前循環,進入下一輪循環returnreturn 返回值;或者return;跳出當前函數主函數中的return會跳出主函數(跳出主函數也就意味着程序結束),其他函數的return是跳出當前的函數.能夠跳出多層循環
exit做用 跳出整個程序,是stdlib.h裏面的函數,使用的時候須要加上
經常使用寫法
exit(0); //裏面的數字0表示正常退出,其他數字表示異常退出,不影響代碼
在任意地方使用均會跳出整個程序
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-dzN3NXey-1570415333052)(D:\微信公衆號\Typora\素材\潭州vip\數組.png)]
存放多個相同類型的元素,若是有多個相同類型的元素須要存放,那麼可使用數組。
//存放3個成績 //方式1 單獨定義變量 int grade1,grade2,grade3; //方式2 使用數組 int grade[3];
int arr[16];//定義一個數組 數組中能夠存放16個int類型數據
若是你想要定義的時候就給裏面的元素賦值的話,能夠定義的時候直接用=
int arr[16]={1,2,33,2,4,5,6,1,6,7,7,7,8}; //定義的時候給數組元素賦值 //數組元素個數是16,可是後面只有13個值,那麼多餘的就用0賦值 //若是定義的時候給數組元素賦值,能夠省略掉數組大小,用後面賦值的個數做爲數組的大小 //int arr[]={1,2,3,4,5}; //此處數組大小是5
//定義數組以後 至關於同時定義了多個變量,若是要使用這些變量,就用數組名加下標的形式去單獨訪問其中的元素 // [ ] 下標運算符 arr[2]=12; //表示給數組中第二個元素賦值(下標從0開始計算)
for(int i=0;i<16;++i) { printf("%d\t",arr[i]); }
若是要定義幾組數據就要用到二維數組,好比說地圖,好比說一個學校有20個班級,每一個班級40個學生,這種用一維數組也能夠存,不過用二維數組更加方便
定義格式 類型 數組名[ 行 ] [ 列 ] 使用方式 數組名i (使用時候注意,行列都是從0開始的)
//一維數組元素地址打印測試 int arr[12]={1,2,3,4}; for(int i=0;i<12;++i) { printf("%p\t",&arr[i]); }
和一維數組相似,二維數組初始化能夠直接在定義的時候賦值
int douArr1[3][4]={{1,2,3,4},{2,2,3,4}}; //每一行單獨賦值 int douArr2[3][4]={1,2,3,4}; //先存第一行,而後第二行 以此類推 int douArr3[][4]={1,2,3,4}; //省略行 根據後面賦值判斷有多少行
若是是定義的時候賦值,二維數組定義的時候能夠省略掉行(不推薦省略)
//一維數組元素地址打印測試 int arr[12]={1,2,3,4}; for(int i=0;i<12;++i) { printf("%p\t",&arr[i]); } //二維數組元素地址打印測試 int douArr[3][4]={1,2,3,4}; for(int i=0;i<3;++i) { for(int j=0;j<4;++j) { printf("%p\t",&douArr[i][j]);//打印地址 } printf("\n"); } //%p用於打印地址的格式佔位符 打印的是16進制形式
分析打印結果,發現這些元素地址都是相鄰的. 相似一維數組,實質上二維數組的元素存放方式也是一個個相鄰存放的,一行存完以後存下一行,從內存角度看,多維數組和一維數組其實沒有什麼太大的區別,使用的話,能夠用以下方式
for(int i=0;i<12;++i) { printf("%d\t",douArr[0][i]); }
基本上二維數組以上的多維數組就用的不多了,規則和二維數組相似,因此掌握了二維數組,多維數組也是同樣操做.
用雙引號括起來的一串內容是字符串,字符串通常用字符數組存儲
char str[20]="hello w orld";//定義字符數組存放一個字符串
字符串末尾都有一個'\0',表示的字符串的結尾,所以在進行和字符串相關的操做,都會用到'\0'
對於一些常常會使用到的(屢次 重複使用)的代碼能夠將它封裝成一個函數,C語言程序的基本組成單位就是函數.
調用方式 函數名(參數)
int fun(int ,int); //函數聲明 int main() { fun(3,4); //函數調用 getchar(); return 0; } int fun(int x,int y) //函數定義 { return x>y?x:y; }
int fun(int ,int); //函數聲明 形參 int main() { fun(3,4); //函數調用 實參 getchar(); return 0; } int fun(int x,int y) //函數定義 形參 { return x>y?x:y; }
變量要先定義而後才能使用,可是 變量定義位置會影響到使用的範圍
在函數或者{}裏面定義的變量,出了{}就不能繼續使用
在函數外部定義的變量,定義以後整個程序中均可以使用
變量的做用域不同的話,名字能夠相同,使用的時候依據就近原則(最近定義的那個變量).
問題1 若是要傳遞一個數組進去,那麼形參和實參要怎麼寫 問題2 若是想要在函數裏面修改實參的值 能不能作到
函數實參實參寫法函數形參備註int xxint x基本數據類型直接寫就行int arr[128]arrint arr[]一維數組傳參的時候數組大小是不寫的,須要另外傳遞進去int douArr[3] [4]douArrint douArr[] [4]二維數組傳遞參數實參直接寫數組名,形參省略行號,可是列不能省略
形參名和實參名能夠不同,這裏只是做爲示例,不是意味着須要名字相同
函數直接或者間接調用本身叫作遞歸,循環均可以用遞歸實現
遞歸只是一種解決問題的方式,關鍵在於找到遞歸公式
//示例 求階乘 //思考 n!=1*2*3*4*.....*(n-1)*n //能夠獲得遞歸公式 n!=n*(n-1) //當n==1的時候 n!=1 int Fn(int n) //求n的階乘 { if(n>1) { return Fn(n-1)*n; } else { return 1; } }