1.電腦與人類的作業模式有很大的不同:電腦在執行重覆性的工作時不會抱怨。只要有足夠的時間,配合設計好的程式,我們可以用電腦來處理大量重覆的工作以節省保貴的人力。
2.在程式中控制重覆執行的機制稱為「迴圈」。我們可以設計迴圈重覆執行的次數及條件,來達到想要的結果。
3.執行次數固定的迴圈:
for
3.1.sytax:
for(起始值;執行條件;遞增或遞減敘述式){
//敘述式
}
|
3.2.e.g.1
//印出100次Hello World!
for(int i=1;i<=100;i++)
printf("Hello World!\n");
|
3.2. e.g.2
//計算從1到1000的所有奇數的和
int sum=0;
for(int i=1;i<=1000;i=i+2)
sum=sum+i;
printf("sum=%d\n",sum);
|
3.3. e.g.3
//輸入n個數字,並計算其平均
int n,x;
float sum=0,avg;
printf("Please input n");
scanf("%d",&n)
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
sum=sum+x;
}
avg=sum/n;
printf("avg=%f\n",avg);
|
4.執行次數不固定的迴圈:
while
4.1.syntax:
4.2.eg
/* 假設某細菌一小時可由一個分裂為兩個,在不考慮細菌死亡的情況下,計算經多久時間細菌數量會達10000個。 */
int no=1,time=0;
int limit=10000;
while(no < limit){
no=no*2;
time++;
}
|
5.至少執行一次的迴圈:
do while
5.1.syntax:
5.2.eg:
//本程式會偵測使用者的按鍵,按q可結束。
char key;
do{
key=getchar();
printf("%c",key);
}while(key!='q');
|
6.巢狀迴圈(nested loop)
6.1.若迴圈內有其他的迴圈,那麼就稱為巢狀迴圈,如下例:
在上例中,若A,B分別為迴圈1及2的敘述式(statement),且其原本的執行次數分別為m及n次,則B的總執行次數為m*n次。
6.2.eg:
//本程式可印出九九乘法表
for(int i=1;i<=9;i++)
for(int j=1;j<=9;j++)
printf("%d*%d=%d\n",i,j,i*j);
|
7.想想看
7.1.請寫一程式,可以計算X^Y(X的Y次方)。
輸出入範例:
please input x: 2
please input y: 5
Answer: 2^5=32
7.2.請寫一程式,可計算X!(X!=X*(X-1)(X-2)..*2*1)。
輸出入範例:
Please input x: 5
Anser: 5!=5*4*3*2*1=120
7.3.請設計一程式,輸入正整數N,可印出下列結果
*
**
***
****
*......* =>共N個*號
輸出入範例:
Please input N: 4
*
**
***
****
7.4 溫度轉換
請你設計一程式,可印出下列的溫度轉換表(攝氏Celsius<->華氏Fahrenheit)。請注意,起始溫度(Starting Temperature),終止溫度(Ending Temperature),及溫度遞增值(Temperature Increment)應讓使用者可自行輸入。轉換公式為:F=1.8*C+32.0。(C為攝氏溫度,F為華氏溫度)
輸出入範例:
Enter Starting Temperature:0
Enter Ending Temperature:10
Enter Temperature Increment:2
Celsius Fahrenheit
0 32
2 35.6
4 39.2
6 42.8
8 46.4
10 50
7.5 銀行貸款
「真能貸」銀行提供優惠貸款給一般民眾。現在請你幫忙設計程式來計算償還事宜。
請留意,銀行每月計息一次,而你的程式必須可接受使用者輸入貸款額度,年利率,每月償還金額,
並且將償還貸款的年限及支付利息的累計金額計算列印出來。
範例輸出入:
請輸入貸款額度: 10000
請輸入年利率(%): 3.6
請輸入每月還款額度: 2000
年 月 利息 償還金額 未償金額 累計利息
0 1 30.00 2000.00 8030.00 30.00
0 2 24.09 2000.00 6054.09 54.09
0 3 18.16 2000.00 4072.25 72.25
0 4 12.22 2000.00 2084.47 84.47
0 5 6.25 2000.00 90.72 90.72
0 6 0.27 90.72 0.00 90.99
貸款還清時間為 0 年 6 月
累計利息:90.99元