C語言流程控制

 

C語言流程控制編程

1、流程控制結構ide

(1)順序結構:按書寫順序執行每一條語句。post

(2)選擇結構:對給定的條件進行判斷,根據判斷結果決定執行哪一段代碼。性能

(3)循環結構:在給定條件成立的狀況下,反覆執行某一段代碼。spa

2、選擇結構-ifcode

(一)if簡單使用blog

1) 第一種結構:seo

a) 若是條件爲真,就執行後面的語句,不然不執行。作用域

if(條件)編譯器

{

語句1;

語句2;

····

}

2) 第二種結構:

a) 若是條件成立就執行語句1,不然執行語句2。

if(條件)

{

語句1;

}

else

{

語句2;

}

3) 第三種結構:

a) 先判斷條件1,若成立則執行語句1,其它不執行;若條件1不成立,則檢查條件2···,【注意】若是條件3成立,則說明前面的都不成立。全部的語句塊只有一個會被執行。

if(條件1)

{

語句1;

}

else if(條件2)

{

語句2;

}

else (條件3)

{

語句3;

}

4) 第四種結構:

a) 在這種狀況下,當條件成立,只執行語句1,語句2不屬於次條件結構,但不推薦此種寫法。

If(條件)

語句1;

語句2;

 

(二)if使用注意

 

①. 比較大小時,能夠把常量值放在左邊,變量值放在右邊以免錯誤。由於if(a==0)也容易被寫成if(a=0),而這種狀況,編譯器並不會報錯,推薦使用if(0==a)這種寫法。

②. 注意賦值運算符,不要把=寫成是==。

③. If(條件)後面不要加分號,這表明是一個空語句,後面的代碼塊將成爲一個獨立的代碼塊。如if(條件);{.....}//須要多加註意

④. 注意做用域的問題,若是要在if後面定義新的變量,則必定要使用大括號。

if(10>6)

{

Int a;//a的做用域在代碼塊結束後失效

}

Printf(「a=%d」,a);//編譯器報錯,找不到標識符

 

if(10>6)

Int a; //這種狀況下報錯,a的做用域不明確

Printf(「a=%d」,a); //編譯器報錯,找不到標識符

 

⑤. If(0){...}隨便挑一個數值也能夠作條件

(三)If結構練習

問題:輸入一個整數seore表明分數,根據分數輸出等級(A-E)。

A 90-100  B80-89 C70-79 D60-69 E0-60

代碼:

複製代碼
 1 #include<stdio.h>
 2 
 3 int main()
 4 
 5 {
 6 
 7 //定義變量存儲分數值
 8 
 9 int score;
10 
11 //提示輸入
12 
13 printf("請輸入分值:\n");
14 
15 //接受輸入
16 
17 scanf("%d",&score);
18 
19 //判斷等級
20 
21 if(score>=90&&score<=100)
22 
23 printf("A\n");
24 
25 else if(score>=80)
26 
27 printf("B\n");
28 
29 else if(score>=70)
30 
31 printf("C\n");
32 
33 else if(score>=60)
34 
35 printf("D\n");
36 
37 else
38 
39 printf("E\n");
40 
41 return 0;
42 
43 }

 

複製代碼
 
   
複製代碼

 

3、選擇結構-switch

(一)switch結構

Switch(值) //一般是變量

{

Case 數值1:

語句1;

Break;

Case 數值2:

語句2;

Break;

Case 數值3:

語句3;

Break;

Default :

語句4;

Break;

}

解說:該結構把數值與數值1進行比較,若相等,則執行後面的全部語句,直到碰見break語句跳出整個循環,若前面的條件都不知足,則最終會執行default後面的語句。若是不寫break語句,則後面的語句會接連執行,直到遇到break語句或者是所有語句執行完畢,只要前面的條件成立,則後面的判斷就直接被忽略。

(二)Switch使用注意

Char c=‘A’;

Switch(c)

{

Case ‘A’:

語句1;

Break;

Case  65://不能這樣寫,由於‘A’的ASCII值就是65,會報錯

語句2;

Break;

Case 數值3:

Int a=10;

//a的做用域不明確報錯,c語言檢查變量的做用域根據{}決定,這裏能夠加{}

Break;

Default :

語句4;

Break;

 

}

注意:若是要在case後面的語句中定義變量,則必須使用大括號包住。

(三)switch結構練習

問題:輸入一個整數seore表明分數,根據分數輸出等級(A-E)。

A 90-100  B80-89 C70-79 D60-69 E0-60

代碼:

 1 #include<stdio.h>
 2 
 3 int main()
 4 
 5 {
 6 
 7 //定義變量存儲分數值
 8 
 9 int score;
10 
11 //提示輸入
12 
13 printf("請輸入分值:\n");
14 
15 //接受輸入
16 
17 scanf("%d",&score);
18 
19 //判斷等級
20 
21 switch(score/10)
22 
23 {
24 
25 case 10:
26 
27 case 9:
28 
29 printf("A\n");
30 
31 case 8:
32 
33 printf("B\n");
34 
35 break;
36 
37 case 7:
38 
39 printf("C\n");
40 
41 break;
42 
43 case 6:
44 
45 printf("D\n");
46 
47 break;
48 
49 default:
50 
51 printf("E\n");
52 
53 break;
54 
55 }
56 
57 return 0;
58 
59 }

 

複製代碼
 
   
複製代碼

【對比】if與switch:

1. If語句可以完成的功能,switch有時並不可以完成,如判斷if(a>100)

2. 在有些狀況下,if語句和switch語句能夠互換

3. Switch語句能完成的功能,if語句均可以完成

 

4、循環結構-while

(一)簡單使用

While(條件)

{

語句;

}

解說:先判斷條件是否成立,成立則執行,執行完代碼後再次判斷條件是否成立(判斷條件-》執行代碼塊-》判斷條件-》執行代碼塊···)1.首先肯定循環執行的操做,2.在肯定約束條件,即須要循環多少次,3.定義一個變量來記錄循環的次數。

提示:在while循環體內使用if...break(跳出整個循環)或if...continue語句(跳出本次循環,繼續下一次循環判斷)。

While結構的運行原理:

①. 若是一開始條件不成立,則永遠不會執行循環體。

②. 若是條件成立,則執行一次循環體,執行完畢後再次判斷條件是否成立。

③. Break:直接退出整個循環。

④. Continue:結束當前循環體,進行下一輪循環判斷。

(二)使用注意

1) While(1){.....}是一個死循環

2) While(a<10);{...}在條件後面加逗號表示循環體是一個空語句,而非{}部分

3) While條件語句後推薦使用{},不然只有第一條語句時循環體

4) 最簡單的死循環  while(1);//永遠執行空語句,讓程序崩潰

(三)While練習

問題:編程實現,提示輸入一個正整數n,計算1+2+3+...n的值。

代碼:

 1 #include<stdio.h>
 2 
 3 int main()
 4 
 5 {
 6 
 7 //定義變量保存用戶輸入的整數
 8 
 9 int n;
10 
11 while(n<=0)
12 
13 {
14 
15 //提示輸入
16 
17 printf("請輸入一個正整數:\n");
18 
19 //接受輸入
20 
21 scanf("%d",&n);
22 
23 }
24 
25 int sum=0;
26 
27 int number=0;//默認被加的數值
28 
29 while(number<n)
30 
31 {
32 
33 number++;
34 
35 sum=sum+number;
36 
37 }
38 
39 printf("計算結果爲:%d\n",sum);
40 
41 return 0;
42 
43 }

 

複製代碼
 
   
複製代碼

 

5、循環結構-do while

Do

{

語句

}while(條件)

特色:do while循環至少會執行一次循環體

 

6、循環結構-for

(一)基本使用

for(語句1,條件,語句2)

{

循環體

}

語句1:通常爲初始化語句

語句2:通常爲增量語句(執行完循環體後再執行的語句)

For循環原理:

1) For循環一開始就會執行語句1(整個for循環只會執行一次)

2) 判斷條件是否成立,若成立,則執行一次循環體,而後執行語句2,再次判斷條件是否成立,若條件不成立則結束循環

3) 順序爲:(語句1-》判斷條件-》循環體—》語句2-》判斷條件-》循環體···)

【對比】for和while:

在性能上,for循環稍勝一籌,由於while循環只能使用外部的變量,而for循環能夠對變量進行及時回收。

 

(二)for使用注意

①. 不要隨便在for語句後面寫上分號,如for();{....}

②. 定義變量的做用域不明確錯誤

for(int i=0;i<5;i++)

Int a=10; //編譯器報錯,變量做用域不明確

③. For語句中最簡單的死循環for(;;);

④. 須要注意變量定義的做用域

Int a=10;

For(int i=0,int a=9;i<5;i++)

{

Int a=10;

Printf(「a=%d\n」,a);//這裏打印的a的值是多少?

}

 

(三)For循環嵌套

用以輸出特定格式的內容,如QQ好友列表等,提高可擴展性。

For(in i=0;i<5;i++)

{

//外面的循環控制行數

Printf(「好友列表%d\n」,i);

//內部的循環控制列數

For(int j=1;j<=6;j++)

{

Printf(「好友%d\n」,j);

}

}

(四)For練習

使用for循環輸出九九乘法表。//先控制行數,在控制列數

代碼:

複製代碼
 1 #include<stdio.h>
 2 
 3 int main()
 4 
 5 {
 6 
 7 for(int i=1;i<=9;i++)
 8 
 9 {
10 
11 for(int j=1;j<=i;j++)
12 
13 {
14 
15 printf("%dx%d=%d\t",i,j,i*j);
16 
17 }
18 
19 printf("\n");
20 
21 }
22 
23 return 0;
24 
25 }
複製代碼

 

複製代碼
 
   
複製代碼
相關文章
相關標籤/搜索