C 語言 講義 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 A B C
函數8 : while() 迴圈 ( 可由 for() 來取代 )
用法:
while(測試條件式)
{
程式碼;
}for(起始值運算式;測試條件式;遞增運算式)
{
程式碼;
}
例:
while(i<10) //用 while 的寫法
{
程式碼;
...
}for(i=0;i<10;i=i+1) //用 for 的寫法
{
程式碼;
...
}
完整的例子1:
#include<stdio.h>
main() //用 while 的寫法
{
int i;
i=0;
while(i<10)
{
i=i+1;
printf("Hello , %d th.\n",i);
}
}#include<stdio.h>
main() //用 for 的寫法
{
int i;
for(i=0;i<10;i=i+1)
{
printf("Hello , %d th.\n",i);
}
}
練習1:請寫一個程式來計算 1+2+3+......+20,請用while 來寫
觀念 : for() 和 while() 適合使用的場合
for() 適合使用在巳知重覆次數的場合,如: 累加、固定次數的重覆性動作
完整的例子2:請寫一個程式來計算 1+2+3+......+20
#include<stdio.h>
main() //用 for 的寫法
{
int i,sum;
sum=0;
for(i=1;i<=20;i=i+1)
{
sum = sum + i
}
printf("1+2+3+... +20 = %d \n",sum);
}
while() 適合使用在符合條件下的重覆場合,如: 當條件符合時就不斷重覆的動作
完整的例子3:試寫一個產生的亂數在 0 ~ 99 之間的程式,產生完後會問使用者是否再來一次
#include<stdio.h>
#include<stdlib.h>
void main()
{
int i,a;
i=1
while(i==1)
{
a=rand()%100; // 產生的亂數在 0 ~ 99 之間
printf("random number is %d\n",a);
printf("Continue again (1: continue , 0: end ) ?");
scanf("%d",&i);
}
}
練習2:請寫一個程式來計算 1+2+3+......+ x > 1000,x 是最小的正整數,請問 x=?
練習3 : 使用者輸入 一個數字,電腦回答該數有幾個2的因數,有幾個3的因數,(例:120 有 3 個2 的因數,有1個3的因數)
函數9 : do { } while() 迴圈 ( 可由 for() 來取代 )
用法:
do {
程式碼;
} while(測試條件式) ;for(起始值運算式;測試條件式;遞增運算式)
{
程式碼;
}
例:
do {
程式碼;
...
} while(i<10) ;for(i=0;i<10;i=i+1)
{
程式碼;
...
}
完整的例子4:
main()
{
int i;
i=0;
do {
i=i+1;
printf("Hello , %d th.\n",i);
} while(i<=10);
}main()
{
int i;
for(i=0;i<10;i=i+1)
{
printf("Hello , %d th.\n",i);
}
}
練習4:請將完整的例子3用 do...while() 來改寫,(完整的例子3:試寫一個產生的亂數在 0 ~ 99 之間的程式,產生完後會問使用者是否再來一次)
while( ) 迴圈 與 do { } while() 迴圈 的差別
while( ) 必需條件成立才執行,do { } while( ) 則是先執行一次,才判斷條件是否成立來繼續執行
完整的例子5:
#include<stdio.h>
void main()
{
int i;
i=15;
do {
i=i+1;
printf("Hello , %d th.\n",i);
} while(i<=10);
}
完整的例子6:
#include<stdio.h>
void main()
{
int i;
i=15;
while(i<=10)
{
i=i+1;
printf("Hello , %d th.\n",i);
}
}
do ... while() 適合使用在先做一次,再判斷是否符合條件的重覆場合,如: 問 continue again 的程式
函數10 : switch ... case 判斷 ( 可由 if() 來取代 )
用法:
switch(條件式)
{
case 條件值 1 :
程式碼 ;
break ;
case 條件值 2 :
程式碼 ;
break ;
default :
程式碼 ;
}if(條件式)
{
程式碼;
}else if(條件式)
{
程式碼;
}else
{
程式碼;
}else
例:
switch(c)
{
case 1:
printf("you input 1\n");
break;
case 2:
printf("you input 2\n");
break;
default:
printf("Input error \n");
}
完整的例子7:
#include<stdio.h>
void main()
{
int c;
c=0;
printf("Contine ? (1 for YES, 2 for no)");
scanf("%d",&c);
switch(c)
{
case 1:
printf("you input 1\n");
break;
case 2:
printf("you input 2\n");
break;
default:
printf("Input error \n");
}
}
練習5: 使用者輸入一個整數,電腦會回答奇/偶數(限用switch來判斷)
練習6: 計算水費程式,採"累加"計算法,0~100度: 每度0.5元, 101~200度: 每度0.8元, 201度以上 ~; 每度1.5元(例如: 210 度的水費是 100*0.5+100*0.8+10*1.5=145 元)