+ All Categories
Home > Documents > Introduction to the C Programming Language

Introduction to the C Programming Language

Date post: 20-Jan-2016
Category:
Upload: dwight
View: 35 times
Download: 5 times
Share this document with a friend
Description:
Introduction to the C Programming Language. 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷. false. expr. true. Statement2. Statement1. Statement3. 選擇性結構 (if-else statements). if-else 敘述的語法格式如下:. if-else 敘述的流程圖:. 根據判斷條件的結果為真或假來執行 Statement 1 或 2, 最後都會再回到 Statement3 繼續執行. if ( expr ) - PowerPoint PPT Presentation
30
CSIM, PU C Language Introduction to the C Programming Language 重重重重 (for,while,break,continue) 重重重重重重重重重重重
Transcript
Page 1: Introduction to the C Programming Language

CSIM, PU C Language

Introduction to the C Programming Language

重覆敘述 (for,while,break,continue)

適合重複性的計算或判斷

Page 2: Introduction to the C Programming Language

2CSIM, PU C Language

選擇性結構 (if-else statements)

if-else 敘述的語法格式如下:

Statement1

if-else 敘述的流程圖:

if (expr)

{

Statement1;

}

else

{

Statement2;

}

Statement3;

if (expr)

{

Statement1;

}

else

{

Statement2;

}

Statement3;

Statement1

expr

true

false

Statement2

Statement3

根據判斷條件的結果為真或假來執行Statement 1 或 2,

最後都會再回到 Statement3 繼續執行 .

Page 3: Introduction to the C Programming Language

3CSIM, PU C Language

重複性結構 根據判斷條件的成立與否

,決定程式段落的執行次數,這個程式段落就稱為迴圈的主體,如右圖的虛線範圍。

重覆敘述 (iteration statement ), 包括 while 、 for 及 do while( 下學期會教 )敘述。

Statement2

exprtrue

false

Statement1

重複性敘述的流程圖:

Page 4: Introduction to the C Programming Language

4CSIM, PU C Language

重覆敘述 --for 迴圈 (for loop)

for 迴圈的語法格式如下:

for ( expr1 ; expr2 ; expr3 )

{

statements;

}

next-statements;

for ( expr1 ; expr2 ; expr3 )

{

statements;

}

next-statements;

•運算式 1(expr1 ) 為迴圈控制變數的初值。•運算式 2 (expr 2) 為迴圈是否重覆執行的條件。•運算式 3 (expr 3) 為迴圈控制變數的增減值。•以上 3種運算式若有兩個以上的參數請以逗號隔開。

此處不可加分號

Page 5: Introduction to the C Programming Language

5CSIM, PU C Language

重覆敘述 --for 迴圈 (for loop)--- 範例 1

#include<stdio.h> main() { int i , sum=0; /* 宣告變數 i 、 sum 為整數 */ for (i=1;i<=100;i++) { sum= sum+ i; } printf(“sum = %d \n”, sum); /* 迴圈結束時,印出 sum 的值 */ }

範例 1:計算 1累加至 100 的總和,並輸出其總和

Ch3_1_1.c

/* 定義 i 的初值為 1*/

/* 判斷 i 的值是否小於等於 100*/

/* 如果是的話就作 sum+i, 並且將 i 作加 1 的動作 */

Page 6: Introduction to the C Programming Language

6CSIM, PU C Language

重覆敘述 --for 迴圈 (for loop)--- 範例 2

範例 2 流程圖:

輸入一個正整數 N,計算 1累加至 N的總和,並輸出其總和

流程圖符號說明

處理符號

流向符號

判斷符號

起始符號 / 結束符號

輸入 / 輸出方塊

開始

I <= N?

Sum = Sum +I

結束

false

Sum = 0 I = 1

輸入 正整數 N

true

I = I + 1

印出累加值

Page 7: Introduction to the C Programming Language

7CSIM, PU C Language

重覆敘述 --for 迴圈 (for loop)--- 範例 2

#include<stdio.h> int main() { int i ,N , sum=0; printf("Please input an integer: "); /* 由鍵盤輸入數值 N*/ scanf("%d", &N ); for (i=1; i<=N; i++) { sum= sum+i; /* 計算 1+2+…+N*/ } printf("1+2+…+%d = %d \n",N, sum); /* 印出 sum 的值 */ system("pause"); return 0; }

Ch3_1_2.c

範例 2 程式碼:

Page 8: Introduction to the C Programming Language

8CSIM, PU C Language

重覆敘述 --for 迴圈 (for loop)--- 範例 3

範例 3:流程圖

輸入 5個實數,計算並輸出其平均值N表示輸入實數的個數

開始

I =1Sum = 0.0

輸入實數 Data

結束

I = N?

Avg = Sum / 5

輸出 Avg

true

false

I = I+1

Sum=Sum+Data

Page 9: Introduction to the C Programming Language

9CSIM, PU C Language

重覆敘述 --for 迴圈 (for loop)--- 範例 3

#include<stdio.h> int main() { int i; double avg,sum; float Data; for(i=1,sum=0; i<=5; i++) { printf(" 請輸入實數 : "); scanf("%f", &Data); sum = sum+Data; } avg = sum/5.0; printf(“ 平均值 =%.3f\n”,sum); /*.3f 表示只印至小數點第三位之值 */ system("pause"); return 0; }

範例 3: 程式碼

Ch3_1_3.c

Page 10: Introduction to the C Programming Language

10CSIM, PU C Language

重覆敘述 --for 迴圈 (for loop)--- 範例 4

#include<stdio.h> int main() { int i, n, f; printf(" 請輸入一個正整數 n : "); scanf("%d", &n); f=1; for (i=n; i>1; i--) { f=f*i; printf(" 迴圈變數 i 值 = %d ",i); printf(" 連乘積 f 值 = %d\n", f); } system("pause"); return 0; }

執行結果 : 請輸入一個正整數 n : 4 迴圈變數 i 值 = 4 連乘積 f 值

= 4 迴圈變數 i 值 = 3 連乘積 f 值

= 12 迴圈變數 i 值 = 2 連乘積 f 值

= 24

範例 4: f(n)=n*(n-1)*(n-2)*(n-3)…*3*2*1

Ch3_1_4.c

Page 11: Introduction to the C Programming Language

11CSIM, PU C Language

九九乘法表—巢狀 for 迴圈 (nested for loop)--- 範例 5

#include<stdio.h> int main() { int i, j; for (i=1; i<=9; i++) /* 外層迴圈 */ { for (j=1; j<=9; j++) /* 內層迴圈 */ { printf("%d*%d=%2d ", i, j, i*j); } } system(“pause”); return 0; }

開始

結束

i 為外層迴圈的控制變數j 為內層迴圈的控制變數

i=1

i=i+1

j=j+1

j=1

印出 i*j

i<=9

j<=9

false

true

truefalse

Page 12: Introduction to the C Programming Language

12CSIM, PU C Language

重覆敘述 --for 迴圈 (for loop)--- 範例 5

範例 5 執行結果 :

若要將表格排列如下,應如何修改?

1*1= 1 1*2= 2 1*3= 3 1*4= 4 1*5= 5 1*6= 6 1*7= 7 1*8= 8 1*9= 9 2*1= 2 2*2= 4 2*3

= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*1= 3 3*2= 6 3*3= 9 3*4=12 3*5=15

3*6=18 3*7=21 3*8=24 3*9=27 4*1= 4 4*2= 8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*

8=32 4*9=36 5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 6*1=

6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54 7*1= 7 7*2=14 7*3=21 7

*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63 8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=

48 8*7=56 8*8=64 8*9=72 9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72

9*9=81

Page 13: Introduction to the C Programming Language

13CSIM, PU C Language

重覆敘述—巢狀 for 迴圈 (nested for loop)--- 範例6

#include<stdio.h> int main() { int i,k; for(i=1;i<=5;i++) { for(k=1;k<=i;k++) { printf(“%d”,k); } printf("\n"); } system("pause"); return 0; }

執行結果 :

練習 : 如果想改成倒三角形的話 ,程式要怎麼改呢 ?

Page 14: Introduction to the C Programming Language

14CSIM, PU C Language

重覆敘述 --for 迴圈 (for loop)--- 範例 7

#include<stdio.h> int main() { char ch; int i, sumA=0, sumB=0, sumC=0; for (i=0; i<10; i++) { printf(“ 請輸入一個字元 ch : ”); /* 讓使用者可一再輸入字元 , 直到滿足 for 迴圈或 break 條件

*/ scanf("%c",&ch); switch (ch) { case 'A' : sumA++; break; case 'B' : sumB++; break; case 'C' : sumC++; break; } fflush(stdin); if (!(ch>='A'&& ch<='C')) break; /* 當使用者輸入之值不在 A~C 的範圍時就會跳離開迴圈 */ } printf("\nA 出現 %d 次 \n", sumA); printf("B 出現 %d 次 \n", sumB); printf("C 出現 %d 次 \n", sumC); system("pause"); return 0;}

Ch3_1_7.c

練習 1:計算字元 A,B,C 出現的次數

Page 15: Introduction to the C Programming Language

15CSIM, PU C Language

重覆敘述 --while loop

適用於事先不確定迴圈需要執行多少次 .while loop 的語法格式如下:

依靠一個條件運算式來判斷是否停止迴圈 .迴圈內的 statement 必須能改變條件運算式的結果才能離開迴圈 ,否則也會變成無窮迴圈 .

設定迴圈初值 ;

while ( expr )

{

statements;

}

next-statements;

設定迴圈初值 ;

while ( expr )

{

statements;

}

next-statements;

迴圈主體 ;設定增減量 ;

條件運算式

Page 16: Introduction to the C Programming Language

16CSIM, PU C Language

重覆敘述 (while loop)

expr

Statements( 迴圈主體 ,

設定值的增減 )

true

false

next-statements

while loop 的流程圖

Page 17: Introduction to the C Programming Language

17CSIM, PU C Language

重覆敘述 --while 迴圈 (while loop) 範例 1

範例 1 流程圖:

求兩數的最大公因數

開始

輸入 M和 N

X>Y?

X=MY=N

X<Y?

X!=Y?輸出 X 即為最大公因數

X=X-Y

Y=Y-X

true

true

true

false

false

false結束

Page 18: Introduction to the C Programming Language

18CSIM, PU C Language

重覆敘述 --while 迴圈 (while loop)--- 範例 1 #include <stdio.h> int main(void) { int M, N, X, Y; printf(" 輸入兩個正數值 M,N \

n"); scanf("%d %d",&M, &N); /* 由鍵盤輸入數值 */ X=M; Y=N; while(X != Y) { if(X > Y) X=X-Y; if(X < Y) Y=Y-X; }

printf("M 和 N 的最大公因數 =%d ",X);

printf("\n"); system("pause"); return 0; }

Ch3_2_1.c

Page 19: Introduction to the C Programming Language

19CSIM, PU C Language

重覆敘述 --while 迴圈 (while loop) 範例 3 /* Copy the input to screen */

#include<stdio.h> #include<stdlib.h> int main() { char ch; while ( ( ch = getche() ) != '\r' ) { /* 判斷輸入的字元是不是換行符號

*/ putchar(ch); printf("\n"); } system("pause"); return 0; }

執行結果 :

輸入 g 與 x, 再按下 enter 鍵

Page 20: Introduction to the C Programming Language

20CSIM, PU C Language

重覆敘述 --while 迴圈 (while loop) 範例 4 假設有一盒子中 , 裝了 1024 顆雞蛋 , 若每次拿取盒中一半的雞蛋 , 請問

拿取幾次後 , 盒中只剩一顆雞蛋 ? /*the last one*/ main() { int n=1024, takes=0; while (n>1) { n=n/2; takes++; } printf(" 拿 %d 次後盒中只剩下一顆雞蛋 \n", takes); }

Page 21: Introduction to the C Programming Language

21CSIM, PU C Language

重覆敘述 --while 迴圈 (while loop) 範例 5

#include<stdio.h> int main() { int a, b, n10=0, n5=0, n1=0; printf(" 請輸入鉛筆盒金額 a 元 : "); scanf("%d", &a); b=100-a; n10=0; while(b>10) /* 可換成多少個 10 元 */ { b=b-10; n10++; } if (b>5) /* 可換成多少個 5 元 */ { b=b-5; n5++; }

else /* 可換成多少個 1 元 */ n5=0; n1=b; printf(" 鉛筆盒金額 %d 元 \n", a); printf(" 給 100 元,退還 %d 元 \n", 100-a

); printf(" 10 元 %d 個 \n", n10); printf(" 5 元 %d 個 \n", n5); printf(" 1 元 %d 個 \n", n1); system("pause"); return 0; }

某人到書局買一枝筆 a 元 , 拿一百元鈔票給老板 , 請問老板該找他幾個十元 , 幾個五元 , 幾個一元 ?

Page 22: Introduction to the C Programming Language

22CSIM, PU C Language

重覆敘述— for 與 while 的比較for (i=1;i<=5;i++,j++)

{

sum=sum+i*j;

}

i=1;

while(i<=5)

{ j++ ;i++;

sum=sum+i*j;

}

Page 23: Introduction to the C Programming Language

23CSIM, PU C Language

無窮迴圈

for( ; ; ){ statement;}

while(1){ statement;}

如果迴圈的條件永遠為真,則會形成無窮迴圈,程式將無法停止,若要強制中斷可按下 Ctrl + C 鍵強迫中止 .

Page 24: Introduction to the C Programming Language

24CSIM, PU C Language

重覆敘述 --for 迴圈 ( 無窮迴圈 ) ---- 範例 8

範例 6:無窮 for 迴路 (for loop with forever loop)

#include<stdio.h> int main() { int i; int count = 1; for ( ; ; ) { printf("\1: guess number here: "); scanf("%d",&i); if ( i == 5 ) /* 表示當 i 之值全等於 5 時 , 就會離開此迴圈

*/ break; count++; /* 若 i 之值不等於 5, 則繼續將 count 變數加 1

*/ } printf("\2: You take %d times to get it.\n",count); system(“pause”); return 0; }

無窮迴圈 , 此種寫法要小心確認終止條件一定會成立 , 否則程式會一直執行

Page 25: Introduction to the C Programming Language

25CSIM, PU C Language

重覆敘述 --for 迴圈 (for loop) --- 範例 8

範例 6 執行結果 :

☺: guess number here: 1

☺: guess number here: 2

☺: guess number here: 3

☺: guess number here: 19

☺: guess number here: 5

☻: You take 5 times to get it.

Page 26: Introduction to the C Programming Language

26CSIM, PU C Language

重覆敘述 --while 迴圈 (while loop) 範例 9 範例 2:while(1) 與 switch 的應用 #include<stdio.h> #include<stdlib.h> int main() { int i; while(1) { /* 無論如何一定要執行此迴圈 */ printf("Enter 1-4 for exit==>"); scanf("%d",&i); switch(i) { case 1: printf(" Excellent!\n"); break; case 2: printf(" Good!\n"); break;

case 3: printf(" Fair!\n"); break; case 4: printf(" Bye!\n"); break; default: /* 若輸入之值不在 1~4*/ printf(" Illegal number try

again!\n"); } if(i==4) /* 當 i 之值全等於 4 時 , 才

離開此迴圈 */

break; } system("pause"); return 0; }

Page 27: Introduction to the C Programming Language

27CSIM, PU C Language

重覆敘述 --while 迴圈 (while loop) 範例 9 執行結果

執行結果 :

Enter 1-4 for exit==>1

Excellent!

Enter 1-4 for exit==>2

Good!

Enter 1-4 for exit==>3

Fair!

Enter 1-4 for exit==>4

Bye!

Page 28: Introduction to the C Programming Language

28CSIM, PU C Language

重覆敘述 (Break and Continue 比較 )

break Continue不同點 跳離迴圈 , 繼續執行接在

迴圈後面的敘述 .忽略接在 continue 後面的敘述 , 直接返回到迴圈的條件運算式 , 並判斷是否繼續執行迴圈 .

相同點 可用在 for 、 while 、 do-while

可用在 for 、 while 、 do-while

Page 29: Introduction to the C Programming Language

29CSIM, PU C Language

Break 與 Continue--- 範例 10 #include<stdio.h> #include<stdlib.h> int main() { char ch; int ans,keyin,num1,num2; while(1) /* 外層的 while 迴圈 */ { printf("\n 請輸入兩個整數 :\n"); scanf("%d %d",&num1,&num2); ans=num1*num2; while(1) /* 內層的 while 迴圈 */ { printf("%d * %d =",num1,num2); scanf("%d",&keyin); if(keyin==ans) { printf(" 答對了 \n"); break; /* 若答對就離開內層的迴圈 , 跳

至接在內層迴圈後的程式碼 */ }

else { printf(" 答錯了 \n"); continue;

/* 若答錯就回到內層的迴圈判斷條件 */ } } printf("\n 是否繼續執行 :"); ch=getche(); if(ch==‘n’)

/* 若輸入 n 表示要離開外層迴圈 , 跳至接在外層迴圈後的程式碼 */

break; } printf("\n"); system("pause"); return 0; }

Page 30: Introduction to the C Programming Language

30CSIM, PU C Language

Break 與 Continue--- 範例 10

執行結果 :

使用者輸入之值


Recommended