04 C循環(huán)結(jié)構(gòu)

1、while循環(huán)

#include <stdio.h>

int main()
{
   /*
    * if(條件表達(dá)式){
    *    條件滿足才執(zhí)行的代碼
    * }
    * 特點(diǎn): 只有條件滿足才會(huì)執(zhí)行if后面{}中的內(nèi)容,
    * 并且if后面{}中的內(nèi)容只會(huì)被執(zhí)行一次
    *
    * while(條件表達(dá)式){
    *    條件滿足才執(zhí)行的代碼
    * }
    * 特點(diǎn): 只有條件滿足才會(huì)執(zhí)行while后面{}中的內(nèi)容,
    * 并且執(zhí)行完之后會(huì)再次判斷條件表達(dá)式是否為真, 如果為真會(huì)再次執(zhí)行while后面{}中的內(nèi)容
    * 重復(fù)上述步驟, 知道條件表達(dá)式不為真為止
    *
    * 應(yīng)用場(chǎng)景:
    * 在企業(yè)開(kāi)發(fā)中, 但凡發(fā)現(xiàn)某些代碼是需要重復(fù)執(zhí)行的就要想到循環(huán)結(jié)構(gòu), 就可以使用while
    */

//    printf("發(fā)射子彈\n");
//    printf("發(fā)射子彈\n");
//    printf("發(fā)射子彈\n");
//    printf("發(fā)射子彈\n");
//    printf("發(fā)射子彈\n");
//    printf("發(fā)射子彈\n");
//    printf("發(fā)射子彈\n");
//    printf("發(fā)射子彈\n");
//    printf("發(fā)射子彈\n");
//    printf("發(fā)射子彈\n");

    // 1.先編寫(xiě)循環(huán)結(jié)構(gòu)的基本格式
    // 2.將需要重復(fù)執(zhí)行的代碼拷貝到循環(huán)體重({}里面我們就稱(chēng)之為循環(huán)體)
    // 3.確定循環(huán)結(jié)束的條件
    int num = 0;
    while(num < 10){
        printf("發(fā)射子彈%i\n", num);
        num++; // 控制循環(huán)結(jié)束的語(yǔ)句
    }

    return 0;
}
#include <stdio.h>

int main()
{
    /*
     * 需求: 1 .. n的和
     * 1 + 2 + 3 + 4 + 5
   0 + 1
     * 1 + 2
     *     3 + 3
     *         6 + 4
     *             10 + 5
     * 規(guī)律:
     * 1.每一次都是上一次的和加上當(dāng)前的一個(gè)數(shù)
     * 2.當(dāng)前加上的數(shù)是一個(gè)遞增的數(shù)
     */
    // 定義一個(gè)變量保存用戶(hù)輸入的n
    int n = 0;
    // 提示用戶(hù)如何輸入
    printf("請(qǐng)輸入一個(gè)正整數(shù), 以回車(chē)結(jié)束\n");
    // 接收用戶(hù)輸入的數(shù)據(jù)
    scanf("%i", &n);
    // 1.定義一個(gè)變量保存每次相加的和
    int sum = 0;
    // 2.定義一個(gè)變量保存每次加上的數(shù)
    int num = 1;
    // 3.用上一次的和加上當(dāng)前的數(shù)
    /*
    sum = sum + num; // sum = 0 + 1
    num++; // 2
    sum = sum + num; // sum = 1 + 2
    num++; // 3
    sum = sum + num; // sum = 3 + 3
    num++; // 4
    sum = sum + num; // sum = 6 + 4
    num++; // 5
    sum = sum + num; // sum = 10 + 5
    num++; // 6

//    int res = 1 + 2 + 3 + 4 + 5;
//    printf("res = %i\n", res);
    */

    // 1.編寫(xiě)循環(huán)的固定格式
    // 2.將重復(fù)執(zhí)行的代碼拷貝到循環(huán)體中
    // 這里使用了編程開(kāi)發(fā)中的一種思想: 累加思想
    // 累加實(shí)現(xiàn), 就是定義變量記錄每次的和
    while(num <= n){
        sum = sum + num;
        num++;
    }
    printf("sum = %i\n", sum);
    return 0;
}
#include <stdio.h>

int main()
{
    /*
     * 需求: 要求統(tǒng)計(jì)1~n中有多少個(gè)數(shù)能被7整除
     */
    // 定義變量記錄能被7整除的數(shù)的個(gè)數(shù)
    int count = 0;
    // 1.定義變量保存用戶(hù)輸入的數(shù)據(jù)
    int n = -1; // 5
    // 2.提示用戶(hù)如何輸入
    printf("請(qǐng)輸入一個(gè)正整數(shù), 以回車(chē)結(jié)束\n");
    // 3.接收用戶(hù)輸入的數(shù)據(jù)
    scanf("%i", &n);
    // 4.拿到1~n中的每一個(gè)數(shù)
    int num = 1;
    while(num <= n){ // 6 <= 5
//        printf("num = %i\n", num); // 1 2 3 4 5
        // 這里使用了編程開(kāi)發(fā)中的一種思想: 計(jì)數(shù)器實(shí)現(xiàn)
        if(0 == (num % 7)){
            count++;
        }
        num++;
    }
    printf("count = %i\n", count);
    return 0;
}
#include <stdio.h>

int main()
{
    // 1.while循環(huán)和if一樣, 可以省略大括號(hào)
    // while循環(huán)和if一樣, 省略大括號(hào)時(shí), 只能控制緊隨其后的那條語(yǔ)句
    // while循環(huán)和if一樣, 省略大括號(hào)時(shí), 不能定義新的變量
    // while循環(huán)和if一樣, 任何數(shù)值都有真假性
//    while(0)
//        printf("被控制的語(yǔ)句\n");
//    printf("不被控制的語(yǔ)句\n");

//    while(0)
//        int num = 666;
//    printf("不被控制的語(yǔ)句\n");

    // 2.while循環(huán)和if一樣, 不用書(shū)寫(xiě)分號(hào)
    // while循環(huán)和if一樣, 分號(hào)不能再寫(xiě)()和{}之間
//    while(0);{
//        printf("被控制的語(yǔ)句\n");
//    }

    // 3.while循環(huán)和if一樣, 可以嵌套其它合法代碼
//    if(1){
//        if(0){

//        }
//        switch (1) {
//        case 1:
//            break;
//        default:
//            break;
//        }
//        while(0){

//        }
//    }

    while(0){
        while(0){
            while(0){
                if(0){

                }
                switch (1) {
                case 1:
                    break;
                default:
                    break;
                }
            }
        }
    }
    return 0;
}
#include <stdio.h>

int main()
{
    /*
     * while(條件表達(dá)式){
     *   被控制的語(yǔ)句;
     * }
     * 特點(diǎn): 會(huì)先判斷條件是否滿足, 滿足就執(zhí)行{}中的代碼
     *
     * do{
     *  被控制的語(yǔ)句;
     * }while(條件表達(dá)式);
     * 特點(diǎn): 不會(huì)像判斷條件是否滿足, 會(huì)先執(zhí)行一次{}中的代碼, 然后再判斷條件
     */

    // while和dowhile的區(qū)別:
    // while會(huì)先判斷條件再執(zhí)行循環(huán)體
    // dowhile會(huì)先執(zhí)行循環(huán)體再判斷條件
//    while(0){
//        printf("被控制的語(yǔ)句\n");
//    }

//    do{
//        printf("被控制的語(yǔ)句\n");
//    }while (0);

    // 在大部分的情況下while和dowhile是可以互換的
    // 在企業(yè)開(kāi)發(fā)中如果能夠互換, 一般我們會(huì)使用while
//    int num = 1;
//    while(num <=5){
//        printf("num = %i\n", num);
//        num++;
//    }

//    int num = 1;
//    do{
//        printf("num = %i\n", num);
//        num++;
//    }while(num <=5);

    // dowhile的應(yīng)用場(chǎng)景
    // 驗(yàn)證

    // 1.定義變量保存用戶(hù)輸入的數(shù)據(jù)
    int num = -1;
    // 4.排除非法數(shù)據(jù)
//    if(num < 1 || num > 3){
//        printf("非法數(shù)字\n");
//    }else{
//        printf("輸入的數(shù)據(jù)是%i\n", num);
//    }

    // 1.編寫(xiě)循環(huán)的固定格式
    // 2.將需要重復(fù)執(zhí)行的代碼放到{}中
    // 3.確定循環(huán)結(jié)束條件
//    while(num < 1 || num > 3){
//        // 2.提示用戶(hù)如何輸入
//        printf("請(qǐng)輸入一個(gè)1~3的整數(shù), 以回車(chē)結(jié)束\n");
//        // 3.接收用戶(hù)輸入的判斷
//        scanf("%i", &num);
//    }

    do{
        // 2.提示用戶(hù)如何輸入
        printf("請(qǐng)輸入一個(gè)1~3的整數(shù), 以回車(chē)結(jié)束\n");
        // 3.接收用戶(hù)輸入的判斷
        scanf("%i", &num);
    }while(num < 1 || num > 3);
    printf("輸入的數(shù)據(jù)是%i\n", num);
    return 0;
}

1.1完沪、 whlie小練習(xí)

#include <stdio.h>

int main()
{
    /*
     * : 用while循環(huán)實(shí)現(xiàn)如下功能
     *
     * 1. 輸出
     * ****
     * ****
     * ****
     *
     * 2.輸出
     * ****
     * ***
     * **
     * *
     *
     * 3.輸出
     * *
     * **
     * ***
     * ****
     *
     * 4.輸出
     * ---*
     * --**
     * -***
     *
     * 5.輸出99乘法表
     */
    return 0;
}

2戏罢、for循環(huán)

#include <stdio.h>

int main()
{
    /*
     * while(條件表達(dá)式){
     *      被控制的語(yǔ)句;
     * }
     *
     * for(初始化表達(dá)式;條件表達(dá)式;循環(huán)后增量表達(dá)式){
     *      被控制的語(yǔ)句;
     * }
     * 初始化表達(dá)式的作用:
     * 循環(huán)執(zhí)行的過(guò)程中, 初始化表達(dá)式會(huì)有且只會(huì)被執(zhí)行一次
     * 條件表達(dá)式的作用:
     * 要想執(zhí)行循環(huán)體, 那么條件表達(dá)式必須為真
     * 每次執(zhí)行完循環(huán)體, 都會(huì)再次判斷條件表達(dá)式是否為真
     * 循環(huán)后增量表達(dá)式的作用:
     * 第一次執(zhí)行循環(huán)體的時(shí)候不會(huì)執(zhí)行循環(huán)后增量表達(dá)式
     * 只有循環(huán)體執(zhí)行完之后才會(huì)執(zhí)行循環(huán)后增量表達(dá)式
     *
     * for循環(huán)的執(zhí)行流程
     * 1.執(zhí)行一次初始化表達(dá)式
     * 2.判斷條件表達(dá)式是否為真
     * 3.如果條件表達(dá)式為真, 執(zhí)行循環(huán)體
     * 4.執(zhí)行完循環(huán)體, 執(zhí)行循環(huán)后增量表達(dá)式
     * 5.重復(fù)2~4步
     */

//    int num = 0;
//    while(num < 10){
//        printf("發(fā)射子彈%i\n", num);
//        num++;
//    }

    // 1.編寫(xiě)循環(huán)的固定格式
    // 2.將需要重復(fù)執(zhí)行的代碼放到{}中
    // 3.控制循環(huán)如何結(jié)束
//    int num = 0;
    for(int num = 0;num < 10; num++){
        printf("發(fā)射子彈%i\n", num);
//        num++;
    }
    return 0;
}


#include <stdio.h>

int main()
{

    // 如果利用while循環(huán)實(shí)現(xiàn)發(fā)射子彈, 我們講控制循環(huán)結(jié)束的變量, 定義在了while循環(huán)的外面
    // 特點(diǎn): 用于控制循環(huán)的變量, 在循環(huán)內(nèi)部和循環(huán)外部都可以使用
//    int num = 0;
//    while(num < 10){
//        printf("發(fā)射子彈%i\n", num);
//        num++;
//    }
//    printf("num = %i\n", num);

    // 如果利用for循環(huán)實(shí)現(xiàn)發(fā)射子彈, 我們將控制循環(huán)結(jié)束的變量, 定義在了for循環(huán)里面
    // 特點(diǎn): 用于控制循環(huán)的變量, 只能在循環(huán)里面使用, 不能在循環(huán)外面使用
    for(int num = 0;num < 10; num++){
        printf("發(fā)射子彈%i\n", num);
    }
//    printf("num = %i\n", num);
    // 總結(jié): 如果用于控制循環(huán)的變量, 在循環(huán)結(jié)束之后還需使用, 那么就使用while循環(huán)
    //      如果用于控制循環(huán)的變量, 在循環(huán)結(jié)束之后不需要使用, 那么就使用for循環(huán)
    // 規(guī)則: 在企業(yè)開(kāi)發(fā)中, 一般情況下, 能用for就用for
    return 0;
}


#include <stdio.h>

int main()
{
    /*
    // 1.for循環(huán)和while循環(huán)一樣, 可以省略大括號(hào)
    // 如果for循環(huán)省略了大括號(hào), 和while循環(huán)一樣, 只能控制緊隨其后的那條語(yǔ)句
    // 如果for循環(huán)省略了大括號(hào), 和while循環(huán)一樣, 不能定義行的變量
    // 和while循環(huán)一樣, 任何數(shù)值都有真假性
//    for(;0;)
//        printf("被控制的語(yǔ)句\n");
//    printf("不被控制的語(yǔ)句\n");

//    for(;0;)
//        int num = 666;

    // 2.還是和while一樣, for循環(huán)可以不寫(xiě)分號(hào)
    // 如果寫(xiě)了分號(hào), 一定不能寫(xiě)在()和{}之間
//    for(;0;);{
//        printf("被控制的語(yǔ)句\n");
//    }
    */

    // 3.for作用中變量的作用域問(wèn)題
    /*
    int num = 666;
    {
        int num = 888;
        printf("num = %i\n", num); // 888
    }
    printf("num = %i\n", num); // 666
    */

    // 結(jié)論: 在循環(huán)體中定義和初始化表達(dá)式同名的變量不會(huì)報(bào)錯(cuò)
//    for(int num = 0; num < 3; num++)
//    {
//        int num = 666;
//        printf("num = %i\n", num); // 666
//    }

    // 結(jié)論: 在for的()中不能范圍循環(huán)體中定義的變量
    for(int num = 0; num < 3; count++)
    {
        int count = 666;
        printf("num = %i\n", num); // 666
    }
    return 0;
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末烁兰,一起剝皮案震驚了整個(gè)濱河市减响,隨后出現(xiàn)的幾起案子靖诗,更是在濱河造成了極大的恐慌,老刑警劉巖支示,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刊橘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡颂鸿,警方通過(guò)查閱死者的電腦和手機(jī)促绵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)嘴纺,“玉大人绞愚,你說(shuō)我怎么就攤上這事∮币剑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵裆蒸,是天一觀的道長(zhǎng)熔萧。 經(jīng)常有香客問(wèn)我,道長(zhǎng)僚祷,這世上最難降的妖魔是什么佛致? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮辙谜,結(jié)果婚禮上俺榆,老公的妹妹穿的比我還像新娘。我一直安慰自己装哆,他們只是感情好罐脊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布定嗓。 她就那樣靜靜地躺著,像睡著了一般萍桌。 火紅的嫁衣襯著肌膚如雪宵溅。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天上炎,我揣著相機(jī)與錄音恃逻,去河邊找鬼。 笑死藕施,一個(gè)胖子當(dāng)著我的面吹牛寇损,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播裳食,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼矛市,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了胞谈?” 一聲冷哼從身側(cè)響起尘盼,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎烦绳,沒(méi)想到半個(gè)月后卿捎,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡径密,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年午阵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片享扔。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡底桂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出惧眠,到底是詐尸還是另有隱情籽懦,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布氛魁,位于F島的核電站暮顺,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏秀存。R本人自食惡果不足惜捶码,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望或链。 院中可真熱鬧惫恼,春花似錦、人聲如沸澳盐。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至盆繁,卻和暖如春掀淘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背油昂。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工革娄, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人冕碟。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓拦惋,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親安寺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子厕妖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 古代有一小姐,遇到一個(gè)上京趕考的窮書(shū)生避雨挑庶,發(fā)現(xiàn)其很有才華后以身相許言秸。 次日小姐垂淚送書(shū)生:“君若高中莫負(fù)妾身∮啵”...
    木白飛閱讀 257評(píng)論 0 0
  • 今天好開(kāi)心举畸,上學(xué)的時(shí)候我很開(kāi)心見(jiàn)到王勛,那是我新朋友凳枝。我喜歡我們的新老師今天學(xué)了體操還學(xué)了舞蹈在學(xué)校里好開(kāi)心呢
    高金鑫a閱讀 252評(píng)論 0 0
  • 今天是最早一次寫(xiě)東西抄沮,上了大學(xué)之后我發(fā)現(xiàn)那個(gè)當(dāng)時(shí)想要給自己大學(xué)生活爭(zhēng)光貼彩的那個(gè)自己不知道去那里了,一天到晚都是在...
    小10閱讀 1,022評(píng)論 0 1
  • 引言(開(kāi)篇語(yǔ)) 我從小喜歡魔術(shù)岖瑰,可以玩點(diǎn)小魔術(shù)叛买,也算是一個(gè)土魔術(shù)師吧! ...
    張世林zsl閱讀 979評(píng)論 0 1
  • H5與原生頁(yè)面交互是一個(gè)很常見(jiàn)的需求蹋订。app頁(yè)面調(diào)用h5方法很簡(jiǎn)單webView就有方法直接就可以調(diào)用JS方法這里...
    隔壁班小明閱讀 7,034評(píng)論 0 5