close

迴圈就是某段程式碼要重複執行
C語言分三種迴圈for,while,do..while

基本上,都是只要條件成立就會繼續執行,所以是可以互換的,只差在for跟while是先判斷條件在執行,do...while則是先執行到下面才判斷條件是否成立。

跳脫(break)與繼續(continue)

break; 只要在迴圈內執行這個指令,迴圈就會跳脫(不繼續loop)
continue; 只要在迴圈內執行這個指令,迴圈會直接開始下一圈

迴圈與if相同,只要單行都可以省略大括號

 

for迴圈

for(初始指令;條件;迴圈末端執行指令)
{
    成立時執行的指令;
}

初始指令

執行迴圈之前,先執行初始指令,可以不執行,也可以執行多個指令(用逗號隔開,與三元運算相同)

條件

與if、while、do..while相同都是如果成立時執行,可以填入多個條件(用逗號隔開),也可用&& || !等布林運算

迴圈末端執行指令

每圈所有程式執行完之後,在後面執行的指令,也可以是多個指令(用逗號隔開)

for迴圈主要用在"知道要重複執行幾次"的程式碼,而通常for迴圈會用一個變數index來做計算次數,並用index來作條件
但是for也可以用來做不知道次數的用途 index不只可以決定迴圈次數,並且可以拿來輸出,協助計算,比方說第一圈的時候輸出1,第二圈輸出2...,這樣就把i輸出就好了 常用的寫法

int i;
for(i=0;i<20;i++){...;}//執行20次 (i從0~19)
for(i=1;i<=20;i++){...;}//執行20次 這種寫法相當於VB的for i= 1 to 20

TIY

當然,初始動作,結束動作,條件等都不一定要使用這樣的格式,不一定要有i,不一定要初始化i,末端也可以執行不是i++的指令,而且,那三個地方都能執行多個指令,與三元運算子相同,多個指令用逗號隔開  

 

int i,j;
for(i=1,j=2;i<=20,j<=30;i++,j++){...;}//執行多個初始動作,多個條件,多個迴圈末端動作
for(i=20;i>=1;i--){...;}//執行20次,從20開始 相當於VB for i=20 to 1 step -1
i=5;
for( ;i<=20;i++)//不含初始動作 i沒有初始,所以為上一行的5 相當於VB for i=5 to 20

99乘法表範例

#include
void main()
{
    int x,y;
    for(y=1;y<=9;y++)
    {
            for(x=1;x<=9;x++)
                {
                    printf("%dx%d=%d\t",x,y,x*y);
                }
            printf("\n");
    }
}

印字元範例

#include <stdio.h>
void main()
{
    int n=0;
    char c;
    printf("Please enter how many char you want to print");
    scanf("%d",&n);
    scanf("%c",&c);//取得換行
    printf("Please enter which you want to print");
    scanf("%c",&c);
    int i=0;
    for(i=0;i<n;i++)
        printf("%c",c);
}

印三角

#include<stdio.h>
void print_n_ch(int n,char c)
{
        int i=0;
        for(i=0;i<n;i++)
            printf("%c",c);
}
void main()
{
    int i=0,h;
    printf("enter the height of the triangle ");
    scanf("%d",&h);
    for(i=1;i<=h;i++)//正印
    {
        print_n_ch(i,'*');
        printf("\n");
    }
} 

印全部三角

void print_n_ch(int n,char c)
{
        int i=0;
        for(i=0;i=1;i--)//反印 此初始值沿用 上方最後的i 上方最後的i為 h+1 因為三角形尖端只有一行 所以反印要比h-1
    {
        print_n_ch(i,'*');
        printf("\n");
    }
}

 

while迴圈

 

while(條件)
{
    成立時執行的指令;
}

while通常用在不知道到底要執行幾次的程式碼,比如說我要執行很多次,如果輸入-1程式就結束了,這種條件不成立才會結束,但不知道要執行幾次的程式碼就可以用while,但是知道次數也可以使用while,可以將while做for用。

條件

與if、for、do..while相同都是如果成立時執行,也可用&& || !等布林運算
while迴圈主要用在"不知道要重複執行幾次"的程式碼

範例 模擬for(i=1;i<=20;i++) VB for i=1 to 20

int i=1;//初始化
while(i<=20)//條件
{
    /*其他code*/
    i++;//尾端+1
}

TIY

範例 無限輸入(直到-1)

int input=0;
while(input!=-1)//不知道多少圈 但是-1就結束的結構
{
    scanf("%d",&input);
    /*其他處理*/
}

TIY

範例 無限輸入第二種寫法

int input=0;
while(1)//1在C語言表示true 這樣條件永遠成立,所以會無限執行
{
    scanf("%d",&input);
    if(input==-1)break;//如果輸入為-1強制跳脫 
    /*其他處理*/
}

TIY

 

範例 判斷位數

#include<stdio.h>
void main()
{
    printf("Please enter a number that I'll tell you how many digital it have ");
    int num,sizeofnum=0;
    scanf("%d",&num);
    printf("The number of digital of %d = ",num);
    if(num!=0)
    {
        while(num!=0)
        {
            num/=10;
            sizeofnum++;
        }
        printf("%d",sizeofnum);
    }
}

範例 無限判斷位數 直到-1(結合function)

#include<stdio.h>
void digital(int num)
{
    int sizeofnum=0;
    if(num!=0)
    {
        printf("The number of digital of %d = ",num);
        while(num!=0)
        {
            num/=10;
            sizeofnum++;
        }
        printf("%d\n",sizeofnum);
    }
}
void main()
{
    int num;
    while(num!=-1)
    {
            printf("Please enter a number that I'll tell you how many digital it have ");
            scanf("%d",&num);
            digital(num);
    }
}

do...while迴圈

do
{
    先執行一次,如果後面成立繼續執行的指令;
}
while(條件);

do..while主要用在,無論如何都要執行一次,再重複執行的程式碼
do...while後方一定要加分號,跟上面的迴圈不同

條件

與if、for、while相同都是如果成立時執行,也可用&& || !等布林運算

範例 無限輸入 且無論如何都要執行一次

char input='\0';
do
{
    printf("Are you edger?(input y/n)");
    scanf("%c",&input);
}
while(input!='y');
printf("You are honest.");

TIY

arrow
arrow
    創作者介紹
    創作者 繩繩 的頭像
    繩繩

    繩繩的部落格

    繩繩 發表在 痞客邦 留言(0) 人氣()