一、控制語句
1、順序語句
2、分支語句
1> if ~ else 語句
三種形式
簡答形式
if(表示式) 語句;
eg:if(a > b) printf("a>b\n");
階梯形式
if(表示式1) 語句塊1
else if(表示式2) 語句塊2
...else
語句塊n;
eg:練習:輸出學生成績等級
注意:if中的表示式一般是邏輯表示式或關係表示式,也可以是常量(字元、整型、實型常量),也可以是賦值表示式;
eg:if(a>b && b!= 100) printf(""); //邏輯表示式
if(a > b) printf("a>b\n"); //關係表示式
if('a') printf("a\n");
if(3.14) printf("3.14\n");
注意:「非零」與「零」的用法
請區分if(x=1)與if(x= =1)的不同。
巢狀形式
if (表示式)
注意:if語句中if與else的配對關係為
else總是與它上面的最近的if配對.書寫格式的縮排與否與它們之間的配對無關.
要實行強行的配對關係可以利用
練習:求三個數中最小的數,並列印輸出;
2> switch ~ case 語句
形式:switch(表示式)
執行過程:
判斷switch中的表示式的值是否與case後邊的常量值相等,如果相等,則執行對應case後邊的語句塊,
否則,執行default後邊的語句塊;
default放到中間後必須跟break,否則不退出。
注意:switch中的表示式一般是整型或常量表示式
每個常量表示式的值必須各不相同,否則將會出現矛盾。
當表示式的值與case後面的常量表示式值相等時就執行此case後面的語句。
「case 常量:」只起語句標號的作用。
各個case出現的先後順序不影響程式的執行結果.
多個case可以執行一組語句.
break強行跳出switch~case語句;
練習:求學生等級;
3、迴圈語句
1> while 迴圈
形式:while(表示式)
eg:while(1)
執行過程:
迴圈判斷表示式的值是否為真,如果為真,則執行語句塊,否則,跳出while迴圈;
eg:實現1~100的和;
2> do~while 迴圈
形式:dowhile(表示式);
執行過程:
型執行do中語句塊,再去判斷while中的表示式的值,如果為真,則繼續執行do中的語句塊,否則,跳出迴圈;
eg:實現1~100的和;
while和do_while的比較:
while先判斷在執行,而do_while先執行再判斷;
do_while至少執行一次;
注意:do_while 中while後邊的 ";" 不能忘;
3> for迴圈
形式:for(表示式1;表示式2;表示式3)
執行過程:
step 1:執行表示式1,
step 2:判斷表示式2,如果表示式2的值為真,則執行step3;如果表示式2的值為假,則跳出for迴圈;
step 3:執行語句塊;
step 4:執行表示式3,執行step 2;
說明:1》 表示式1可以省略,但在for之前要對迴圈變數賦初值
2》 表示式2也可以被省略,省略之後變為死迴圈
3》 表示式3也可以被省略,但在迴圈語句中提現迴圈變數的改變
如何構成死迴圈:
while(1);
for(;;);
goto loop;
eg:for迴圈實現1~100的和;
4、return break continue
break語句:
強行跳出switch~case語句,
跳出本層迴圈
continue:跳出本次迴圈,進入下次迴圈
return:一般結束函式
二、陣列
1、一維陣列
相同資料型別的若干個變數的有序集合;
形式儲存型別 資料型別 陣列名[元素個數];
說明:1> 儲存型別:auto static extern
2> 資料型別是陣列中各個元素的資料型別,既可以是基本資料型別,也可以是構造資料型別;
eg:int a[10]; //陣列a的資料型別:int [10]
struct stu student[3]; //結構體陣列
3> 陣列名符合合法的識別符號
4> 元素個數是常量或常量表示式,元素下標從0開始
5> 不能用變數來說明陣列的長度
eg:int i = 10;
int a[i];(×)
6> 陣列佔記憶體大小 = 元素個數*sizeof(資料型別) 或 sizeof(陣列名);
7> 陣列在記憶體中是連續儲存的;(順序儲存)
8> 陣列名是陣列首元素的位址,同時陣列名是位址常量,不能作左值;
eg:int a[10];
a == &a[0]
a++;(×)
注意:一維陣列的引用
1> 先定義,再使用陣列;
2> 只能逐個引用陣列元素,不能一次引用整個陣列
例 int a[10];
printf(「%d」,a); (×)
必須 for(j=0;j<10;j++)(√)
printf(「%d\t」,a[j]);
2、一維陣列初始化
形式:儲存型別 資料型別 陣列名[元素個數] = ;
方式:1> 陣列不初始化時,陣列中各個元素的值為隨機值;
2> 全部初始化
eg:int a[10] = ;
3> 部分初始化,未初始化的元素系統自動賦值0
eg:int a[10] = ; //a[6]、a[7]、a[8]、a[9]的值都為0;
4> static修飾的陣列初始化
static int a[10]; //系統為每個元素賦值0
static int a[10] = ;
static int a[10] = ; //未初始化的元素系統自動賦0
5> 不指定元素個數時,陣列大小由賦值決定;
eg:int a = ;
練習:求 int a[10] = ; 中各個元素之和;
C語言基礎4
基 礎 概 括 陣列 陣列 由同一種資料,型別組成。陣列中只能存放一種型別的資料。元素 陣列大括號裡的數字。陣列元素的個數只能是常量值。定義陣列 陣列的型別 陣列名 數值列印格式 printf 陣列名 d d n 陣列名 i 遍歷 按順序檢視陣列中每乙個元素。小語法 只要確定大括號中元素的個數,就能...
c語言基礎4
指標常量和指標變數的區別 常量只在宣告的時候賦值,變數可以在任何時候賦值,對於指標來說,就是常量指標指向的位址從宣告之後就再也改變不了。float零值 const float epsion 0.000001 if n epsion n epsion 在這之間的就是float的零值 函式和指標 在c語...
C語言基礎 4
結構體具有結構體 指標與結構體 結構體作為函式引數 struct student 此處有分號,不能忽略還有另外一種定義方法 typedef struct studentstudent 這個結構體語句定義了乙個新的資料型別,叫做學生 它包含了兩個成員,也可以理解為屬性 property 結構體的成員可...