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 元)

  

C 語言 講義   1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  A  B  C