CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷.

Slides:



Advertisements
Similar presentations
While 迴圈 - 不知重複執行次數
Advertisements

親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
迴圈 迴圈基本觀念 while迴圈 do 迴圈 for迴圈 巢狀迴圈 迴圈設計注意事項 其他控制指令 迴圈與選擇的組合.
Loops.
第 5 章 流程控制 (一): 條件分支.
第4章 选择结构程序设计 在现实生活中,需要进行判断和选择的情况是很多的 如果你在家,我去拜访你 如果考试不及格,要补考
C语言程序设计 第八章 函数.
第一章 程序设计入门.
Introduction to the C Programming Language
C语言程序设计 第五章 选择结构程序设计.
C语言程序设计 课程 第5章 数组 主讲:李祥 博士、副教授 单位:软件学院软件工程系.
循环结构又称为重复结构:用来处理需要重复处理的问题,它是程序中一种很重要的结构。
Class 2 流程控制-選擇敘述與迴圈.
第3章 顺序结构程序设计 本章要点: 格式化输出函数──printf() 格式输入函数——scanf() 字符输出函数——putchar()
適用於多選一 可減少if 與 else配對混淆的錯誤.
C程序设计.
Chap 2 用C语言编写程序 2.1 在屏幕上显示 Hello World! 2.2 求华氏温度 100°F 对应的摄氏温度
C 程式設計— 控制敘述 台大資訊工程學系 資訊系統訓練班.
Introduction to the C Programming Language
Introduction to the C Programming Language
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
C 語言簡介 - 2.
第三章 流程控制與例外處理 資訊教育研究室 製作 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
Introduction to the C Programming Language
Chap 3 分支结构 3.1 简单的猜数游戏 3.2 四则运算 3.3 查询自动售货机中商品的价格.
1. 說明一個一維整數陣列passwd,下標範圍0至49 2. 在屏幕顯示 "Enter password"
C语言 程序设计基础与试验 刘新国、2012年秋.
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
本章中將會更詳細地考慮有關重複的概念,並且會 介紹for和do…while等兩種用來控制重複的敘述 式。 也將會介紹switch多重選擇敘述式。 我們會討論直接和迅速離開某種控制敘述式的 break敘述式,以及用來跳過重複敘述式本體剩餘 部份的continue敘述式。 本章會討論用來組合控制條件的邏輯運算子,最後.
C++语言程序设计 第二章 C++简单程序设计.
程序的三种基本结构 if条件分支语句 switch多路开关语句 循环语句 循环嵌套 break,continue和goto语句
計數式重複敘述 for 迴圈 P
第5讲 结构化程序设计(Part II) 周水庚 2018年10月11日.
第4章 顺序程序设计.
第2章 C++流程控制语句 if 语句 switch语句 for语句 while语句 do - while语句 break语句
第0章作业: 教材P12-练习与实践 1.写出用符号’*’输出描绘汉字”大”的流程图。
第4讲 C++程序控制结构(二) 4.1 循环结构 4.2 转向控制 4.3 综合案例分析.
C++大学基础教程 第3章 C++控制语句 北京科技大学 信息基础科学系.
C语言概述 第一章.
第1讲 C语言基础 要求: (1) C程序的组成 (2) C语言的标识符是如何定义的。 (3) C语言有哪些基本数据类型?各种基本数
程式結構&語法.
4 條件選擇 4.1 程式基本結構 循序式結構 選擇式結構 重複式結構 4-3
第三章 C++的语句和简单的程序设计 主要内容:
for 迴圈 while迴圈 do-while迴圈 break 與 continue goto 與 標籤 程式觀摩
C 语言程序设计 程序的循环结构 电大崇信县工作站 梁海亮.
第2章 算法与C语言程序 程序 (1)数据的描述:数据的类型和组织形式(数据结构) (2)操作的描述:操作步骤(算法) 沃思指出:
Introduction to the C Programming Language
Instructor:Po-Yu Kuo 教師:郭柏佑
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
程式的時間與空間 Time and Space in Programming
輸出與輸入(I/O).
C程序设计.
C++程式設計入門 變數與運算子 作者:黃建庭.
第二章 Java语法基础.
Introduction to the C Programming Language
第三章 基本的輸出與輸入函數 (Basic Output & Input Function)
程序设计基础.
第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式
Introduction to the C Programming Language
第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
多重條件選擇敘述
C/C++基礎程式設計班 陣列 講師:林業峻 CSIE, NTU 3/14, 2015.
第一次上機考參考答案 僅供參考,同學可自行再想更好的方法..
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
第二章 Java基础语法 北京传智播客教育
Q1(a) 小偉打算編寫一個程序。該程序把兩個44的表內的數字相加。表3內的數字是由表1和表2應格子內的數字相加而成。例如:
C语言基础学习 从外行到入门.
Presentation transcript:

CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷

CSIM, PU C Language 2 選擇性結構 (if-else statements)  if-else 敘述的語法格式如下: Statement1  if-else 敘述的流程圖: if (expr) { Statement1; } else { Statement2; } Statement3; Statement1 expr true false Statement2 Statement3 根據判斷條件的結 果為真或假來執行 Statement 1 或 2, 最 後都會再回到 Statement3 繼續執 行.

CSIM, PU C Language 3 重複性結構  根據判斷條件的成立與否 ,決定程式段落的執行次 數,這個程式段落就稱為 迴圈的主體,如右圖的虛 線範圍。  重覆敘述 (iteration statement ), 包括 while 、 for 及 do while( 下學期會教 ) 敘述。 Statement2 expr true false Statement1  重複性敘述的流程圖:

CSIM, PU C Language 4  重覆敘述 --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 種運算式若有兩個以上的參數請以逗號隔開。 此處不可加分號

CSIM, PU C Language 5 重覆敘述 --for 迴圈 (for loop)--- 範例 1  #include  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 的動作 */

CSIM, PU C Language 6 重覆敘述 --for 迴圈 (for loop)--- 範例 2 範例 2 流程圖: 輸入一個正整數 N ,計算 1 累加至 N 的總和,並輸出其總和 流程圖符號說明 處理符號 流向符號 判斷符號 起始符號 / 結束符號 輸入 / 輸出方塊 開始 I <= N? Sum = Sum +I 結束 false Sum = 0 I = 1 輸入 正整數 N true I = I + 1 印出累加值

CSIM, PU C Language 7 重覆敘述 --for 迴圈 (for loop)--- 範例 2  #include  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 程式碼:

CSIM, PU C Language 8 重覆敘述 --for 迴圈 (for loop)--- 範例 3 範例 3 :流程圖 輸入 5 個實數,計算並輸出其平均值 N 表示輸入實數的個數 開始 I =1 Sum = 0.0 輸入實數 Data 結束 I = N ? Avg = Sum / 5 輸出 Avg true false I = I+1 Sum=Sum+Data

CSIM, PU C Language 9 重覆敘述 --for 迴圈 (for loop)--- 範例 3  #include  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

CSIM, PU C Language 10 重覆敘述 --for 迴圈 (for loop)--- 範例 4  #include  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

CSIM, PU C Language 11 九九乘法表 — 巢狀 for 迴圈 (nested for loop)--- 範例 5  #include  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 false

CSIM, PU C Language 12 重覆敘述 --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

CSIM, PU C Language 13 重覆敘述 — 巢狀 for 迴圈 (nested for loop)--- 範例 6  #include  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;  }  執行結果 :  練習 : 如果想改成倒三角形的話, 程 式要怎麼改呢 ?

CSIM, PU C Language 14 重覆敘述 --for 迴圈 (for loop)--- 範例 7  #include  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 出現的次數

CSIM, PU C Language 15  重覆敘述 --while loop  適用於事先不確定迴圈需要執行多少次.  while loop 的語法格式如下:  依靠一個條件運算式來判斷是否停止迴圈.  迴圈內的 statement 必須能改變 條件運算式的結果才能離開迴圈, 否 則也會變成無窮迴圈. 設定迴圈初值 ; while ( expr ) { statements; } next-statements; 設定迴圈初值 ; while ( expr ) { statements; } next-statements; 迴圈主體 ; 設定增減量 ; 條件運算式

CSIM, PU C Language 16  重覆敘述 (while loop) expr Statements ( 迴圈主體, 設定值的增減 ) true false next-statements  while loop 的流程圖

CSIM, PU C Language 17 重覆敘述 --while 迴圈 (while loop) 範例 1 範例 1 流程圖: 求兩數的最大公因數 開始 輸入 M 和N和N X>Y? X=M Y=N X<Y? X!=Y? 輸出 X 即為 最大公因數 X=X-Y Y=Y-X true false 結束

CSIM, PU C Language 18 重覆敘述 --while 迴圈 (while loop)--- 範例 1  #include  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

CSIM, PU C Language 19 重覆敘述 --while 迴圈 (while loop) 範例 3  /* Copy the input to screen */  #include  int main()  {  char ch;  while ( ( ch = getche() ) != '\r' )  {  /* 判斷輸入的字元是不是換行符號 */  putchar(ch);  printf("\n");  }  system("pause");  return 0;  } 執行結果 : 輸入 g 與 x, 再按下 enter 鍵

CSIM, PU C Language 20 重覆敘述 --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);  }

CSIM, PU C Language 21 重覆敘述 --while 迴圈 (while loop) 範例 5  #include  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 元, 拿一百元鈔票給老板, 請問老板該找他幾個 十元, 幾個五元, 幾個一元 ?

CSIM, PU C Language 22 重覆敘述 —for 與 while 的比較 for (i=1;i<=5;i++,j++) { sum=sum+i*j; } i=1; while(i<=5) { j++ ;i++; sum=sum+i*j; }

CSIM, PU C Language 23 無窮迴圈  for( ; ; )  {  statement;  }  while(1)  {  statement;  } 如果迴圈的條件永遠為真,則會形成無窮迴圈,程式將無法停止,若要強制中 斷可按下 Ctrl + C 鍵強迫中止.

CSIM, PU C Language 24 重覆敘述 --for 迴圈 ( 無窮迴圈 ) ---- 範例 8 範例 6 :無窮 for 迴路 (for loop with forever loop)  #include  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; } 無窮迴圈, 此種寫法要小心 確認終止條件一定會成立, 否則程式會一直執行

CSIM, PU C Language 25 重覆敘述 --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.

CSIM, PU C Language 26 重覆敘述 --while 迴圈 (while loop) 範例 9  範例 2:while(1) 與 switch 的應用  #include  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;  }

CSIM, PU C Language 27 重覆敘述 --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!

CSIM, PU C Language 28 重覆敘述 (Break and Continue 比較 ) breakContinue 不同點跳離迴圈, 繼續執行接在迴 圈後面的敘述. 忽略接在 continue 後面的敘 述, 直接返回到迴圈的條件 運算式, 並判斷是否繼續執 行迴圈. 相同點可用在 for 、 while 、 do- while

CSIM, PU C Language 29 Break 與 Continue--- 範例 10  #include  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; }}

CSIM, PU C Language 30 Break 與 Continue--- 範例 10  執行結果 : 使用者輸入之值