C語言基礎 4

2021-09-02 18:47:11 字數 3230 閱讀 8597

一、控制語句

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 結構體的成員可...