一把梭系列 ~ C語言範例 (0009) [迴圈語法: for/while]

一把梭系列 ~ C語言範例 (0009) [迴圈語法: for/while]

一把梭系列 ~ C語言範例 (0009) [迴圈語法: for/while]


資料來源: 

https://openhome.cc/Gossip/CGossip/forStatement.html
https://openhome.cc/Gossip/CGossip/whileStatement.html
https://openhome.cc/Gossip/CGossip/BreakContinueGoto.html


★前言:


★主題:

    為了要讓程式具有重複執行的能力,C 提供了 for和while 迴圈語法,其語法模板如下:
    
    01.for迴圈(先判斷後執行 ~ 不一定會執行)

    for (初始變數; 終止判斷式; 變化式)
    { 
        陳述句一; 
        陳述句二; 
        .... 
    }
    /*執行順序:
    初始變數
    終止判斷式
    迴圈主體
    
    變化式
    終止判斷式
    迴圈主體
    
    變化式
    ...
    */

    
    02.while迴圈(先判斷後執行 ~ 不一定會執行)

    while(條件式)
    { 
        陳述句一; 
        陳述句二; 
        .... 
    }

    
    03.do-while迴圈(先執行後判斷 ~ 至少執行一次)

    do { 
        陳述句一; 
        陳述句二; 
        .... 
    } while(條件式);

    
    04.break

    //跳離最近一層迴圈

    
    05.continue

    //中斷最近的這一次迴圈,直接從下一次的迴圈接續執行

    
    06.goto

    //直接從目前程式位置,跳要到指定程式位置
    //由於這操作屬於破壞程式結構,因此老師(老師傅)都說:『goto = go home(回家吃自己)』


★code:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i,j;
    //使用for迴圈在畫面印出0~9共10個數字
    printf("使用for迴圈在畫面印出0~9共10個數字\n");
    for( i = 0; i < 10; i++)
    {
        printf("%d ", i);
    }
    printf("\n");

    //使用while迴圈在畫面印出0~9共10個數字
    i=0;
    printf("\n使用while迴圈在畫面印出0~9共10個數字\n");
    while(i<10)
    {
        printf("%d ", i);
        i++;
    }
    printf("\n");

    //使用do-while迴圈在畫面印出0~9共10個數字
    i=0;
    printf("\n使用do-while迴圈在畫面印出0~9共10個數字\n");
    do
    {
        printf("%d ", i);
        i++;
    }while(i<10);
    printf("\n");

    //使用雙層for迴圈在畫面印出九九乘法表
    printf("\n使用雙層for迴圈在畫面印出九九乘法表\n");
    for(j = 1; j < 10; j++)
    {
        for(i = 2; i < 10; i++)
        {
            printf("%d*%d=%2d ", i, j, i * j);
        }
        puts("");
    }

    //使用break跳離最近迴圈
    printf("\n使用雙層for迴圈在畫面印出九九乘法表 + break跳離最近迴圈\n");
    for(j = 1; j < 10; j++)
    {
        for(i = 2; i < 10; i++)
        {
            if(i==5)
            {
                break;
            }
            printf("%d*%d=%2d ", i, j, i * j);
        }
        puts("");
    }

    //使用continue 中斷最近的這一次迴圈,直接從下一次的迴圈接續執行
    printf("\n使用雙層for迴圈在畫面印出九九乘法表 + 使用continue 中斷最近的這一次迴圈,直接從下一次的迴圈接續執行\n");
    for(j = 1; j < 10; j++)
    {
        for(i = 2; i < 10; i++)
        {
            if(i==5)
            {
                continue;
            }
            printf("%d*%d=%2d ", i, j, i * j);
        }
        puts("");
    }
    return 0;
}
/*
執行結果備份
使用for迴圈在畫面印出0~9共10個數字
0 1 2 3 4 5 6 7 8 9

使用while迴圈在畫面印出0~9共10個數字
0 1 2 3 4 5 6 7 8 9

使用do-while迴圈在畫面印出0~9共10個數字
0 1 2 3 4 5 6 7 8 9

使用雙層for迴圈在畫面印出九九乘法表
2*1= 2 3*1= 3 4*1= 4 5*1= 5 6*1= 6 7*1= 7 8*1= 8 9*1= 9
2*2= 4 3*2= 6 4*2= 8 5*2=10 6*2=12 7*2=14 8*2=16 9*2=18
2*3= 6 3*3= 9 4*3=12 5*3=15 6*3=18 7*3=21 8*3=24 9*3=27
2*4= 8 3*4=12 4*4=16 5*4=20 6*4=24 7*4=28 8*4=32 9*4=36
2*5=10 3*5=15 4*5=20 5*5=25 6*5=30 7*5=35 8*5=40 9*5=45
2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 7*6=42 8*6=48 9*6=54
2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 8*7=56 9*7=63
2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 9*8=72
2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

使用雙層for迴圈在畫面印出九九乘法表 + break跳離最近迴圈
2*1= 2 3*1= 3 4*1= 4
2*2= 4 3*2= 6 4*2= 8
2*3= 6 3*3= 9 4*3=12
2*4= 8 3*4=12 4*4=16
2*5=10 3*5=15 4*5=20
2*6=12 3*6=18 4*6=24
2*7=14 3*7=21 4*7=28
2*8=16 3*8=24 4*8=32
2*9=18 3*9=27 4*9=36

使用雙層for迴圈在畫面印出九九乘法表 + 使用continue 中斷最近的這一次迴圈,直接從下一次的迴圈接續執行
2*1= 2 3*1= 3 4*1= 4 6*1= 6 7*1= 7 8*1= 8 9*1= 9
2*2= 4 3*2= 6 4*2= 8 6*2=12 7*2=14 8*2=16 9*2=18
2*3= 6 3*3= 9 4*3=12 6*3=18 7*3=21 8*3=24 9*3=27
2*4= 8 3*4=12 4*4=16 6*4=24 7*4=28 8*4=32 9*4=36
2*5=10 3*5=15 4*5=20 6*5=30 7*5=35 8*5=40 9*5=45
2*6=12 3*6=18 4*6=24 6*6=36 7*6=42 8*6=48 9*6=54
2*7=14 3*7=21 4*7=28 6*7=42 7*7=49 8*7=56 9*7=63
2*8=16 3*8=24 4*8=32 6*8=48 7*8=56 8*8=64 9*8=72
2*9=18 3*9=27 4*9=36 6*9=54 7*9=63 8*9=72 9*9=81
*/

★結果:


★延伸說明/重點回顧:

    01.for迴圈式所有迴圈當中最經典且最標準的語法,它完整呈現迴圈所有組成要素,分別是『初始變數、終止判斷式、變化式和迴圈主體』


    02.所有迴圈語法都可以互相取代,只看程式設計師習慣使用哪一種語法


    03.善用if判斷式和break與continue組合可以讓迴圈各具彈性結果


    04.本篇範例程式沒有演示『goto』使用方法,有興趣的人可以去資料來源的第三個網址查看,因為我也是堅持不用GOTO的人 哈哈


    05.為了彌補第四點,我有看過一篇超狂的『do while(0)』的應用,各位可以利用本部落格的搜尋功能去找出來看一看

One thought on “一把梭系列 ~ C語言範例 (0009) [迴圈語法: for/while]

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *