發信人: ax.bbs@bbs.ee.nthu.edu.tw. (athena), 信區: test
標 題: 星星流講座 0016 (修訂版)
發信站: ☆清華電機☆ (Tue May 16 10:36:18 1995)
轉信站: star
星星流講座 0016 C 語言講座
第 4 講 之 1 基本的流程控制
Topic: if-else & goto (1)
現在我們來研究一下程式中如何做流程控制 (Flow Control)。什麼
是流程控制呢?就是控制你的程式要如何執行的方法。我們以一個
模擬收銀機的例子來說好了:
我們現在想用電腦做一部收銀機,收銀機就是一次輸入一個數值,
然後加以加總,加上百分之五的營業稅,收銀員再輸入收入金額,
收銀機顯示應找金額。對於這個問題,我們可以用流程圖表示如
下:(註:由於硬體的關係,沒有辦法畫出標準的流程圖,請將就
著看看,或是期待 WWW 版吧! :) )
() 開始
↓
□ 輸入一數字並加總 ←┬───┐
↓ │ 是 │
◇ 數字是否小於 0?┘ │否
↓否 │
◇ 數字是否為 0 ? ────┘
↓是
□ 結總並加上營業稅
↓
□ 要求操作員輸入收銀金額 ←┐
↓ │是
◇ 檢查金額是否小於應收貨款 ─┘
↓否
□ 輸出找錢金額
↓
() 結束
我們看到程式流程中有分支,而且是判斷某個條件是否成立,條件成
立的話就跳到那裡,這種型態的流程分支叫做條件跳躍,在 C 語言
中以 if 這個敘述來達成。if 的語法如下:
if 條件運算式
條件成立時執行的程式區塊或敘述式
else
條件不成立時執行的程式區塊或敘述式
我們把上面的收銀機程式實作如下:
/* checker.c */
#include <stdio.h>
void main (void)
{
int sum, input, cash;
sum = 0;
cash = 0;
input = 1;
label1:
if (input != 0)
{
scanf ("%d", &input);
if (input > 0)
sum += input;
goto label1;
}
sum *= 1.05;
printf ("Total = %d\nCash = ? ", sum);
label2:
scanf ("%d", &cash);
if (cash < sum)
goto label2;
printf ("Change = %d\n", cash - sum);
}
※ 上次貼的為本講初稿,貼太快了以致內容有錯,更正後重貼。