單元:重覆結構 do…while, while….,

 

壹、            do…while簡單的例子:progr3-1.c 本題RUN 成功,得分。

請完成猜數字遊戲

#include <stdio.h>

#include <stdlib.h>

#include <time.h>     //使用time( )函數,必須使用的引入

 

int main( )

{

  int guess;           //存放使用者猜的數

  int ans;             //存放電腦產生的答案

 

  srand( (unsigned)  time(NULL)  );   //啟動亂數產生器

  ans = rand( )%100+1;            //產生一個1~100的數

 

  printf("Guess(1~100):");

  scanf("%d",&guess);

 

 

 

  if  (guess == ans)
      printf(“  YOU WIN.  \n ”);

  if  (guess > ans)
      printf(“                     ”);
  else

      printf(“                     ”);

 

 

 

 

  system("PAUSE");

  return 0;

}

 

【程式解說】:

1、srand(  (unsigned) time(NULL)  );  以時間函數為亂數種子,運算產生出一堆亂數

2、rand( ) 函數,是從一堆亂數中取出一個任意亂數

3、rand( ) % 100可以把取出的數限制在 0 99 之間。
     
除以100取餘數的意思。


貳、             while簡單的例子:progr3-2.c 本題RUN 成功,得分。

程式功能:將一正整數反轉過來。如: 13579 -> 97531

 

#include <stdio.h>

#include <stdlib.h>

 

int main()

{

  int  a, rev;

 

  while (1)

  {

     do          //輸入大於0的正整數

     {

         printf(“Input an integer:”);

         scanf(“%d”, &a);

     }

     while (a <=0);

 

     printf(“The reverse is:”);

     while (a!=0)                   //將正整數倒過來輸出

     {

        rev = a % 10;        //取出a 位數

        a = a / 10;

        printf(“%d”, rev);

     }

     printf(“\n\n”);

  }

  system("PAUSE");

  return 0;

}

 

 

【程式解說】:

1、 while(1) 敘述表示當判斷條件的值爲1時,這個敘述永遠成立,所以程式主體會一直執行

2、 do{…..}while(a<=0);
是判斷輸入的數 a 是否為正整數。 若不是,則重複輸入直到 a 為正整數。

3、 a % 10 表示求 a 除以10 所得的餘數
a / 10
表示求 a 除以10 所得的商數