C/C++基礎程式設計班

Similar documents
Microsoft Word - ACL chapter02-5ed.docx

Microsoft PowerPoint - C_Structure.ppt

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

C/C++ - 字符输入输出和字符确认

Microsoft PowerPoint - STU_C_Lang_CH05

CC213

Microsoft PowerPoint - 06_迴圈2.pptx

新・解きながら学ぶC言語

新版 明解C言語入門編

新・明解C言語入門編『索引』

untitled

Java 程式設計初階 第 5 章:基本輸出入 & 流程控制

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

If Close[Length]!= 0 Then B Close[Length] 是 Length 日前的 Close 不是 0 的話則執行 B % Number 以 Divisor 來求取除法並傳回剩下的部份和 Divisor 具備相同的符 號 格式 :Number % Divisor Numb

Microsoft Word - Chap05.doc

C/C++语言 - 运算符、表达式和语句

CHAPTER VC#

CC213

C

C/C++ 语言 - 循环

Microsoft Word doc

C/C++语言 - C/C++数据

迴圈控制 : for, while, repeat Textbook reading: Chapter 7. 固定次數迴圈 : for 指令. 假設有 k 個指令 C(1),..., C(k), 而我們要依序完成其中的 C(m),..., C(n), 語法為 for ( i in m:n) { C(

C/C++语言 - 分支结构

Python_02

C/C++ - 函数

<4D F736F F D DA5BFA6A1C476C1C92DBEC7ACECB8D5A8F728B57BB35D292E646F63>

Microsoft Word C-A卷.docx

FY.DOC

untitled

新・解きながら学ぶJava

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

######## First set of commands x <- 0.5; y <- 0 if (x>3) y <- 1 else y <- 2 ######## Second set of commands x <- 0.5; y <- 0 if (x>3) y <- 1 else ###

untitled

碩命題橫式

Microsoft Word - 第3章.doc

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Excel VBA Excel Visual Basic for Application

C/C++程序设计 - 字符串与格式化输入/输出

¥¼©R¦W-5

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

プログラムの設計と実現II

untitled

PowerPoint 簡報

C C

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

此運算子具有的優先順序高於下一個區段且低於前一個區段 請注意, 您可以按一下運算子以移至內附範例的詳細資料頁面 x && y 邏輯 AND 如果第一個運算元為 false,c# 就不會評估第二個運算元 條件 OR 運算子 此運算子具有的優先順序高於下一個區段且低於前一個區段 請注意, 您可以按一下運

4

_汪_文前新ok[3.1].doc

CC213

Microsoft Word - AEL0124-CH05

C 1

untitled

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

Microsoft Word - ch03.doc


3. 給 定 一 整 數 陣 列 a[0] a[1] a[99] 且 a[k]=3k+1, 以 value=100 呼 叫 以 下 兩 函 式, 假 設 函 式 f1 及 f2 之 while 迴 圈 主 體 分 別 執 行 n1 與 n2 次 (i.e, 計 算 if 敘 述 執 行 次 數, 不

2003 1,,,,,,1902,1905 3, 1911,11, 4,641,, :,,,,, :,,,,,1930,,,, ( ), ( ) ( ) , 3 25 :, 1963,1 :,1972,497 :, 25,1937 3,

PowerPoint 簡報

第3章.doc

nooog

<4D F736F F D B0D3B77EC3FEA7DEC3C0C476C1C9A5BFA6A1B8D5C3442DB57BA6A1B35DAD702DBEC7ACEC2E646F6378>

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

untitled

2015年计算机二级(C语言)模拟试题及答案(四)

(京)新登字063号

C 語言—陣列及字串

C

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

C/C++基礎程式設計班

Microsoft PowerPoint - VB14.ppt

, 即 使 是 在 昏 暗 的 灯 光 下, 她 仍 然 可 以 那 么 耀 眼 我 没 有 地 方 去, 你 会 带 着 我 么 杜 晗 像 是 在 嘲 笑 一 般, 嘴 角 的 一 抹 冷 笑 有 着 不 适 合 这 个 年 龄 的 冷 酷 和 无 情, 看 着 江 华 的 眼 神 毫 无 温

Microsoft Word - Chap05.doc

PowerPoint Presentation

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

关于规范区委、区委办公室发文

Microsoft Word - ??山

Microsoft Word - 助理人員教育訓練-會計室.docx

填 写 要 求 1. 以 word 文 档 格 式 如 实 填 写 各 项 2. 表 格 文 本 中 外 文 名 词 第 一 次 出 现 时, 要 写 清 全 称 和 缩 写, 再 次 出 现 时 可 以 使 用 缩 写 3. 本 表 栏 目 未 涵 盖 的 内 容, 需 要 说 明 的, 请 在

Microsoft Word - NEWch (P5-15).doc

資料結構之C語言重點複習

新版 明解C++入門編

C/C++ - 文件IO

Microsoft Word - CPE考生使用手冊 docx

90 課程 大綱 條件判斷 : if ( 表 示式 ) {... } [P.91] 如果表 示式成 立就... if ( 表 示式 ) {... } else {... } [P.93] 如果表 示式成 立就... 否則就.. C / C++ 的複合指定與遞增遞減運算 子 [P.96] 重複執 行

untitled

Microsoft PowerPoint - 07b1 Max and Sum.ppt [相容模式]

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

C/C++基礎程式設計班

华恒家庭网关方案

C/C++ - 字符串与字符串函数

Microsoft Word - 透析8051之迴圈控制方法.doc

Microsoft Word - 01.DOC

Microsoft PowerPoint - Class2.pptx

投影片 1

3.1 num = 3 ch = 'C' 2

Java 程式設計初階 第 5 章:基本輸出入 & 流程控制

Transcription:

C/C++ 基礎程式設計 流程控制敘述 講師 : 張傑帆 CSIE, NTU 追隨我的好奇與直覺, 大部分我所投入過的事務, 後來都成了無比珍貴的經歷 Much of what I stumbled into by following my curiosity and intuition turned out to be priceless later on. -Steve Jobs

課程大綱 選擇控制 ( 流程控制 ) IF-ELSE SWITCH-CASE 重覆控制 ( 迴圈 ) FOR WHILE 迴圈中的流程控制 : break, continue 巢狀迴圈 作業

選擇結構簡介

人會做判斷

選擇敘述 if-else 敘述 程式中的選擇結構有如口語中的 如果.. 就 否則. 在 C 語言中是使用 if-else 敘述來達成 如語法 若條件成立時 則執行接在 if 後面的敘述區段 1 否則 ( 條件不成立 ) 執行接在 else 後面的敘述區段 2

IF-ELSE 用途 : 程式執行時根據條件情況選擇要執行的程式碼 語法 : if( 條件判斷式 ) { 條件成立的話要做的程式碼 ; 縮排 else { 條件不成立的話要做的程式碼 ; 縮排 註 :else 可視情況省略不寫 ; 當 { 中程式只有一行 ( 敘述 ), 可省略 {

想判斷分數是否及格 Start 輸入分數 yes 分數是否 < 60 分 no 不及格 及格 End 7

IF-ELSE 範例 : 寫個程式, 判斷一個人的成績是否及格 ( 及格分數為 60 分 ) Start #include <stdio.h> int main() { int score; printf(" 輸入您的分數 :"); scanf("%d",&score); if ( score < 60 ) { 縮排 printf(" 不及格 \n"); else { 縮排 printf(" 及格 \n"); return 0; 不及格 輸入分數 分數 < 60 yes End 及格 no

IF-ELSE 邏輯判斷可以使用的運算符號如下 運算符號 意義 > 大於 < 小於 >= 大於或等於 <= 小於或等於 == 等於!= 不等於 用來連結邏輯判斷的符號有 符號 && 意義 和 = ( 指定運算子 ) 不同! " 而且 ", 所有的條件都要成立, 整個判斷才會成立 " 或 ", 只要有任何一個條件成立, 整個判斷就會成立! 非, 條件不成立時, 整個判斷就會成立

1 1 1 1 1 1 1 1 1 1 1

邏輯運算子使用範例 5>3 && 3==4 ( 結果為 false) a==6 a>=12 ( 如果變數 a 的值等於 6 或是大於等於 12, 結果就會是 true)! (a==6) ( 當變數 a 等於 6 以外的其他值時, 結果就會是 true)

IF-ELSE IF 若我們要判斷的條件不只是做 對 或 錯 的二分法時, 可以在 if 後增加 else if 來做多重判斷 語法 : if( 條件判斷式 1 ){ 條件 1 成立的話要做的程式碼 ; else if ( 條件判斷式 2 ) { 條件 2 成立的話要做的程式碼 ; else{ 以上條件都不成立的話要做的程式碼 ;

IF-ELSE IF 範例 : 寫個程式, 判斷一個人的成績是否及格 ( 大學部及格分數為 60 分, 研究所為 70 分 ) #include <stdio.h> int main() { int score, n; printf("(1) 大學部 (2) 研究所 :"); scanf("%d",&n); printf(" 輸入您的分數 :"); scanf("%d",&score); if ( score < 60 && n == 1) { printf(" 不及格 \n"); else if ( score < 70 && n == 2) { printf(" 不及格 \n"); else { printf(" 及格 \n"); return 0;

小練習 修改上頁程式, 若使用者輸入值不合下列格式則不做任何輸出, 並提示使用者輸入分數錯誤 只能輸入 1 或 2 代表大學部或研究所 成績只能輸入 0~100 0 100 score < 0 score >=0 && score <= 100 score >100

If else 大刮號 { 的恩怨情仇 if else 用大刮號 { 表示其程式碼範圍 當 { 中程式只有一行 ( 敘述 ), 可省略 { if( 條件判斷式 ) 裡面只可以寫一行 行但請務必記得改成多行時要加上 { 不然. 就會變成爆肝工程師!

課程大綱 選擇控制 ( 流程控制 ) IF-ELSE SWITCH-CASE 重覆控制 ( 迴圈 ) FOR WHILE 迴圈中的流程控制 : break, continue 巢狀迴圈 作業

SWITCH-CASE 用途 : 程式執行時根據資料數值選擇要執行的程式 語法 : ( 註 :default: 可有可無 ) switch( 變數或運算式 ) { case 值 1: 程式碼 ; break; // 可不加, 結果不同! case 值 2: 程式碼 ; break; default: 程式碼 ; break;

SWITCH-CASE 範例, 輸入兩個數字, 再輸入 +,-,*,/ 任一鍵, 根據輸入的鍵內容顯示兩數計算結果 #include <stdio.h> //#include <conio.h> int main() { double a, b, ans; char key; printf("input two number:"); scanf("%lf %lf", &a, &b); printf("press +, -, *, / : "); //key = getch(); scanf( %c, &key); switch( key ) { case '+': ans = a + b; break; case '-': ans = a - b; break; case '*': ans = a * b; break; case '/': ans = a / b; break; default: printf("undefined key\n"); return 0; printf( "%lf %c %lf = %lf \n",a,key,b,ans ); return 0;

課程大綱 選擇控制 ( 流程控制 ) IF-ELSE SWITCH-CASE 重覆控制 ( 迴圈 ) FOR WHILE 迴圈中的流程控制 : break, continue 巢狀迴圈 作業

印出 10 行 hello? printf("hello %d\n",i); printf("hello %d\n",i); printf("hello %d\n",i); printf("hello %d\n",i); printf("hello %d\n",i); printf("hello %d\n",i); printf("hello %d\n",i); printf("hello %d\n",i); printf("hello %d\n",i); printf("hello %d\n",i); 那 100 行呢?

重複結構簡介 C 語言允許將需要連續重複執行的敘述區段改用 迴圈敘述, 不但可縮短程式的長度, 而且程式易維護及增加程式可讀性 此種程式架構稱為 重複結構 或 迴圈 (Loop)

下圖是密碼檢查的流程圖, 若密碼正確, 則進入系統繼續往下執行 ; 反之, 密碼輸入錯誤, 重新輸入密碼, 一直詢問到輸入的密碼正確為止

for 迴圈敘述 C 語言提供三種迴圈敘述 :for while do-while 敘述 若迴圈的次數可以預知,for 敘述是最好的選擇 若迴圈次數無法確定, 則可使用 while do-while 敘述來達成

FOR 迴圈 用途 : 當程式需要來回重複執行某一段程式碼時 for 通常用在已知重覆執行次數時 語法 : for ( 進入迴圈前要做的事 ; 繼續執行迴圈的條件 ; 每跑完一次迴圈會做的事 ) { 要被重覆執行的程式碼 ; for 迴圈會重複執行數次 { 中所包含的程式碼, 至於是執行幾次則由 for ( ; ; ) 當中的東西來決定

for 迴圈 for( i=1; i<=3; i++ )

FOR 迴圈 範例 : 印出 10 行 hello 所以在下面的例子中, 進入迴圈前會令 i=0; 當 i 還是 <10 的時候, 迴圈會繼續跑 迴圈每跑完一圈, 就會做 i++ 的動作 執行程式時可以看到 i 由一開始的 0 會每次都累加上 1, 到最後變成 10 之後就結束程式 #include <stdio.h> int main() { int i; for ( i=0; i<10; i++ ) { printf("hello %d\n",i); return 0; printf("hello %d\n",i); printf("hello %d\n",i); printf("hello %d\n",i);?

FOR 迴圈 範例 : 算出 1+2+3+...+9+10 #include <stdio.h> int main() { int i; int sum=0; for ( i=1; i<=10; i++ ) { sum+=i; printf("%d\n",sum); return 0;

練習 一 輸入一個大於 0 的整數 n 印出 1 加到 n 的結果 二 輸入一個大於 0 的整數 n 印出 "1+2+3+ +n = 結果 例如 : 輸入 5, 印出 1+2+3+4+5 = 15 列出加總過程中的數字 ( 控制變數 i ) 想在中間的數字加上 + 號該怎麼做呢?

課程大綱 選擇控制 ( 流程控制 ) IF-ELSE SWITCH-CASE 重覆控制 ( 迴圈 ) FOR WHILE 迴圈中的流程控制 : break, continue 巢狀迴圈 作業

WHILE 迴圈 ( 前測式 ) 用途 : 當程式需要來回重複執行某一段程式碼時 while 通常用在未知重覆執行次數時 語法 : while( 繼續執行迴圈的條件 ) { 條件成立的話要做的程式碼 ; 把 for 中的進入迴圈前要做的事與每跑完一次迴圈會做的事拿掉, 就是 while 迴圈

WHILE 迴圈 ( 前測式 ) 範例 : 輸入鍵盤按鍵, 直到輸入 q 後程式結束 #include <stdio.h> //#include <conio.h> // 只有 windows 能用 int main() { char key=0; while(key!='q') { //key=getche(); // 只有 windows 能用 scanf( %c, &key); printf("\n%c\n", key); return 0;

DO-WHILE 迴圈 ( 後測式 ) 用途 : 當程式需要先做一次某一段程式碼再判斷是否要重複執行該一段程式碼時 語法 : do { 條件成立的話要做的程式碼 ; while( 繼續執行迴圈的條件 ); // 記得加 ; 號 while 迴圈中的判斷式可以放在迴圈的最後端, 形成一個 do-while 迴圈這樣子的迴圈至少會跑一次

DO-WHILE 迴圈 範例 : 輸入鍵盤按鍵, 直到輸入 q 後程式結束 #include <conio.h> int main() { char key; do { key=getche(); printf("\n%c\n", key); while(key!='q'); return 0;

動動腦 while(exp){ 與 do{ while(exp); 兩者在應用上有什麼不同? 剛才的例子是按下 q 離開程式, 但 假如我想要讓使用者按下 y 才重覆執行程式呢? char key; do { key=getche(); printf("\n%c\n", key); while(key== y'); return 0; char key; key=getche(); printf("\n%c\n", key); while(key== y') { key=getche(); printf("\n%c\n", key); return 0;

練習 寫個程式, 判斷一個人的成績是否及格 ( 及格分數為 60 分 ) Start 每次判斷完成績後可輸入 'y': 繼續 其他 : 離開 不及格 輸入分數 分數 < 60 yes 及格 no 輸入字元 yes 是否繼續? End no End

課程大綱 選擇控制 ( 流程控制 ) IF-ELSE SWITCH-CASE 重覆控制 ( 迴圈 ) FOR WHILE 迴圈中的流程控制 : break, continue 巢狀迴圈 作業

迴圈中的流程控制 在迴圈中, 有兩個指令可方便做控制 : break: 直接結束迴圈 continue: 直接跳到迴圈開頭處繼續下一次執行 用途 : 常用來設定在迴圈中某些情形下, 選擇做結束 (break) 或回頭 (continue)

迴圈中的流程控制 : break 範例 : 輸入鍵盤按鍵, 直到輸入 q 後程式結束 #include <conio.h> int main() { char key; while(1) //while 中條件為 1 稱為無窮迴圈 { key=getche(); if ( key=='q' ) break; return 0;

迴圈中的流程控制 : continue 範例 : 假如有一棟大樓沒有 4 樓這個樓層, 寫一個程式顯示從 1 樓坐電梯到 10 樓所經過的樓層 #include <stdio.h> int main() { int i; for ( i=1; i<=10; i++ ){ // 若是 4 樓就跳過, 回到迴圈開頭繼續執行 if ( i==4 ) continue; printf("floor %d\n",i); return 0;

課程大綱 選擇控制 ( 流程控制 ) IF-ELSE SWITCH-CASE 重覆控制 ( 迴圈 ) FOR WHILE 迴圈中的流程控制 : break, continue 巢狀迴圈 作業

巢狀迴圈 迴圈中的迴圈 下面範例中, i 每加三次, j 才加一次, 試著觀察輸出結果 #include <stdio.h> int main() { int i, j; for ( j=0; j<3; j++ ) { for ( i=0; i<3; i++ ) { printf("* "); printf("\n"); return 0;

練習 輸入一個整數, 印出 n 列 * 號, 每列各含 1~n 個 * 例如 : 輸入 5 輸出 :

課程大綱 選擇控制 ( 流程控制 ) IF-ELSE SWITCH-CASE 重覆控制 ( 迴圈 ) FOR WHILE 迴圈中的流程控制 : break, continue 巢狀迴圈 作業

回家作業 : 印出下列九九乘法表 : 提示 : 在印星號的例子中, 將迴圈控制變數 i, j 印出

作業 ( 加分題 ): 中文大寫數字輸出 輸入一個金額 1~99999 整數, 印中文大寫數字金額 中文大寫 1~9: 壹, 貳, 參, 肆, 伍, 陸, 柒, 捌, 玖 需要印出單位 : 萬, 仟, 佰, 拾 不需輸出 " 零 " 最後要印出 " 元整 " 輸入錯誤數值範圍, 顯示錯誤後程式直接結束 輸入輸出格式 ( 格式必須與下面程式結果一致 )