iT邦幫忙

0

【從零開始的 C 語言筆記】第十九篇-While Loop(1)

  • 分享至 

  • xImage
  •  

不怎麼重要的前言

上一篇介紹了for loop的概念,讓大家面對在有重複性、明確次數的處理時,可以使用這個語法來解決問題。

這次我們來介紹迴圈中另一個很重要的語法--「While Loop」!


While Loop?

其實while迴圈與for迴圈的概念是很像的,都是為了處理重複性內容而生,但兩者最大的差別在於當沒有明確的次數處理時,會變得很不適合使用for迴圈(也不是不能用,就是不適合),取而代之的便是while迴圈了。

我們來看下列的例子:

#include <stdio.h>

int main(void)
{
    int data;

    printf("plz input your data(>0): ");
    scanf("%d", &data);
    while(data > 0){
        if(data%2 == 0){
            printf("this data is even.\n");
        }
        else{
            printf("this data is odd.\n");
        }

        printf("plz input your data(>0): ");
        scanf("%d", &data);
    }
    printf("---\n");
    printf("thanks for your using\n");

    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20211101/20142565ghqStvHK9C.png

我們讓使用者輸入數字來判斷奇偶數,直到輸入的數字小於0時終止程式,由於不曉得使用者會輸入多少數字,所以這時候使用for loop相對的不適合,且這樣的方式比較具有彈性。


正式使用

  1. 規則
    while迴圈是一個進入前、跑過一圈後判斷條件,只要符合條件就會持續執行的迴圈。

(1) while迴圈的基本結構:「( )」包住的內容為條件判斷,被「{ }」包住的內容為需重複執行的body。

while(data > 0){
    if(data%2 == 0){
        printf("this data is even.\n");
    }
    else{
        printf("this data is odd.\n");
    }

    printf("plz input your data(>0): ");
    scanf("%d", &data);
}

https://ithelp.ithome.com.tw/upload/images/20211101/20142565cBcUfp3xkh.png

(2) 謹慎設條件,避免無限迴圈(程式出不去迴圈一直執行,會導致電腦當機或程式壞掉)。

(3) 讀取到使用者輸入才會執行的語法。
a. while(scanf("%d", &data) != EOF)

#include <stdio.h>

int main(void)
{
    int data;

    while(scanf("%d", &data) != EOF){
        if(data%2 == 0){
            printf("this data is even.\n");
        }
        else{
            printf("this data is odd.\n");
        }
    }

    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20211101/20142565CNhJGMxb2q.png

b. while(~scanf("%d", &data))

#include <stdio.h>

int main(void)
{
    int data;

    while(~scanf("%d", &data)){
        if(data%2 == 0){
            printf("this data is even.\n");
        }
        else{
            printf("this data is odd.\n");
        }
    }

    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20211101/201425654tniFfePtK.png

c. while(scanf("%d", &data) != -1)

#include <stdio.h>

int main(void)
{
    int data;

    while(scanf("%d", &data) != -1){
        if(data%2 == 0){
            printf("this data is even.\n");
        }
        else{
            printf("this data is odd.\n");
        }
    }

    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20211101/20142565BW1owLx92V.png

(EOF的詳細意義的可以參考這裡)

  1. 應用
    while迴圈結合EOF的概念,搭配if條件判斷、次數計算。
#include <stdio.h>

int main(void)
{
    int data, i=0;

    while(scanf("%d", &data) != EOF){
        i++;
        if(data%2 == 0){
            printf("Case %d: EVEN.\n", i);
        }
        else{
            printf("Case %d: ODD.\n", i);
        }
    }

    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20211101/20142565XVnOXxsWEj.png


我們已經介紹完兩個最常使用到的迴圈了,大家可以多多嘗試看看提到的語法,有助加深學習印象。

下一篇我們來提while迴圈的延伸--「Do-While」!


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言