• 
    

      <address id="upfr9"><pre id="upfr9"><strike id="upfr9"></strike></pre></address>
      1. <address id="upfr9"><tr id="upfr9"></tr></address><dl id="upfr9"></dl>

        淺談c語言中實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的控制語句

        這篇文章主要淺談c語言中實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的控制語句,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

        專注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)巴里坤哈薩克免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

        c語言中實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的控制語句有:while語句、do-while語句和for語句,一般形式為“while(表達(dá)式){語句塊}”,“do{語句塊}while(表達(dá)式);”,“for(表達(dá)式1; 表達(dá)式2; 表達(dá)式3){語句塊}”。

        淺談c語言中實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的控制語句

        所謂循環(huán)(Loop),就是重復(fù)地執(zhí)行同一段代碼,例如要計(jì)算 1+2+3+……+99+100 的值,就要重復(fù)進(jìn)行99次加法運(yùn)算。

        while循環(huán)

        while循環(huán)的一般形式為:

        while(表達(dá)式){
            語句塊
        }

        意思是,先計(jì)算“表達(dá)式”的值,當(dāng)值為真(非0)時(shí), 執(zhí)行“語句塊”;執(zhí)行完“語句塊”,再次計(jì)算表達(dá)式的值,如果為真,繼續(xù)執(zhí)行“語句塊”……這個(gè)過程會(huì)一直重復(fù),直到表達(dá)式的值為假(0),就退出循環(huán),執(zhí)行 while 后面的代碼。

        我們通常將“表達(dá)式”稱為循環(huán)條件,把“語句塊”稱為循環(huán)體,整個(gè)循環(huán)的過程就是不停判斷循環(huán)條件、并執(zhí)行循環(huán)體代碼的過程。

        用 while 循環(huán)計(jì)算1加到100的值:

        #include <stdio.h>
        int main(){
            int i=1, sum=0;
            while(i<=100){
                sum+=i;
                i++;
            }
            printf("%d\n",sum);
            return 0;
        }

        運(yùn)行結(jié)果:

        5050

        代碼分析:

        1) 程序運(yùn)行到 while 時(shí),因?yàn)?i=1,i<=100 成立,所以會(huì)執(zhí)行循環(huán)體;執(zhí)行結(jié)束后 i 的值變?yōu)?2,sum 的值變?yōu)?1。

        2) 接下來會(huì)繼續(xù)判斷 i<=100是否成立,因?yàn)榇藭r(shí) i=2,i<=100 成立,所以繼續(xù)執(zhí)行循環(huán)體;執(zhí)行結(jié)束后 i 的值變?yōu)?3,sum 的值變?yōu)?。

        3) 重復(fù)執(zhí)行步驟 2)。

        4) 當(dāng)循環(huán)進(jìn)行到第100次,i 的值變?yōu)?101,sum 的值變?yōu)?050;因?yàn)榇藭r(shí) i<=100 不再成立,所以就退出循環(huán),不再執(zhí)行循環(huán)體,轉(zhuǎn)而執(zhí)行while循環(huán)后面的代碼。

        while 循環(huán)的整體思路是這樣的:設(shè)置一個(gè)帶有變量的循環(huán)條件,也即一個(gè)帶有變量的表達(dá)式;在循環(huán)體中額外添加一條語句,讓它能夠改變循環(huán)條件中變量的值。這樣,隨著循環(huán)的不斷執(zhí)行,循環(huán)條件中變量的值也會(huì)不斷變化,終有一個(gè)時(shí)刻,循環(huán)條件不再成立,整個(gè)循環(huán)就結(jié)束了。

        如果循環(huán)條件中不包含變量,會(huì)發(fā)生什么情況呢?

        1) 循環(huán)條件成立時(shí)的話,while 循環(huán)會(huì)一直執(zhí)行下去,永不結(jié)束,成為“死循環(huán)”。例如:

        #include <stdio.h>
        int main(){
            while(1){
                printf("1");
            }
            return 0;
        }

        運(yùn)行程序,會(huì)不停地輸出“1”,直到用戶強(qiáng)制關(guān)閉。

        2) 循環(huán)條件不成立的話,while 循環(huán)就一次也不會(huì)執(zhí)行。例如:

        #include <stdio.h>
        int main(){
            while(0){
                printf("1");
            }
            return 0;
        }

        運(yùn)行程序,什么也不會(huì)輸出。

        再看一個(gè)例子,統(tǒng)計(jì)從鍵盤輸入的一行字符的個(gè)數(shù):

        #include <stdio.h>
        int main(){
            int n=0;
            printf("Input a string:");
            while(getchar()!='\n') n++;
            printf("Number of characters: %d\n", n);
            return 0;
        }

        運(yùn)行結(jié)果:

        Input a string:c.biancheng.net↙
        Number of characters: 15

        本例程序中的循環(huán)條件為getchar()!='\n',其意義是,只要從鍵盤輸入的字符不是回車就繼續(xù)循環(huán)。循環(huán)體n++;完成對輸入字符個(gè)數(shù)計(jì)數(shù)。

        do-while循環(huán)

        除了while循環(huán),在C語言中還有一種 do-while 循環(huán)。

        do-while循環(huán)的一般形式為:

        do{
            語句塊
        }while(表達(dá)式);

        do-while循環(huán)與while循環(huán)的不同在于:它會(huì)先執(zhí)行“語句塊”,然后再判斷表達(dá)式是否為真,如果為真則繼續(xù)循環(huán);如果為假,則終止循環(huán)。因此,do-while 循環(huán)至少要執(zhí)行一次“語句塊”。

        用do-while計(jì)算1加到100的值:

        #include <stdio.h>
        int main(){
            int i=1, sum=0;
            do{
                sum+=i;
                i++;
            }while(i<=100);
            printf("%d\n", sum);
            return 0;
        }

        運(yùn)行結(jié)果:

        5050

        注意while(i<=100);最后的分號;,這個(gè)必須要有。

        while循環(huán)和do-while各有特點(diǎn),大家可以適當(dāng)選擇,實(shí)際編程中使用while循環(huán)較多。

        除了while循環(huán),C語言中還有 for 循環(huán),它的使用更加靈活,完全可以取代 while 循環(huán)。

        for循環(huán)

        上面我們使用 while 循環(huán)來計(jì)算1加到100的值,代碼如下:

        #include <stdio.h>
        int main(){
            int i, sum=0;
            i = 1;  //語句①
            while(i<=100 /*語句②*/ ){
                sum+=i;
                i++;  //語句③
            }
            printf("%d\n",sum);
            return 0;
        }

        可以看到,語句①②③被放到了不同的地方,代碼結(jié)構(gòu)較為松散。為了讓程序更加緊湊,可以使用 for 循環(huán)來代替,如下所示:

        #include <stdio.h>
        int main(){
            int i, sum=0;
            for(i=1/*語句①*/; i<=100/*語句②*/; i++/*語句③*/){
                sum+=i;
            }
            printf("%d\n",sum);
            return 0;
        }

        在 for 循環(huán)中,語句①②③被集中到了一起,代碼結(jié)構(gòu)一目了然。

        for 循環(huán)的一般形式為:

        for(表達(dá)式1; 表達(dá)式2; 表達(dá)式3){
            語句塊
        }

        它的運(yùn)行過程為:

        1) 先執(zhí)行“表達(dá)式1”。

        2) 再執(zhí)行“表達(dá)式2”,如果它的值為真(非0),則執(zhí)行循環(huán)體,否則結(jié)束循環(huán)。

        3) 執(zhí)行完循環(huán)體后再執(zhí)行“表達(dá)式3”。

        4) 重復(fù)執(zhí)行步驟 2) 和 3),直到“表達(dá)式2”的值為假,就結(jié)束循環(huán)。

        上面的步驟中,2) 和 3) 是一次循環(huán),會(huì)重復(fù)執(zhí)行,for 語句的主要作用就是不斷執(zhí)行步驟 2) 和 3)。

        “表達(dá)式1”僅在第一次循環(huán)時(shí)執(zhí)行,以后都不會(huì)再執(zhí)行,可以認(rèn)為這是一個(gè)初始化語句。“表達(dá)式2”一般是一個(gè)關(guān)系表達(dá)式,決定了是否還要繼續(xù)下次循環(huán),稱為“循環(huán)條件”?!氨磉_(dá)式3”很多情況下是一個(gè)帶有自增或自減操作的表達(dá)式,以使循環(huán)條件逐漸變得“不成立”。

        for循環(huán)的執(zhí)行過程可用下圖表示:

        淺談c語言中實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的控制語句

        我們再來分析一下“計(jì)算從1加到100的和”的代碼:

        #include <stdio.h>
        int main(){
            int i, sum=0;
            for(i=1; i<=100; i++){
                sum+=i;
            }
            printf("%d\n",sum);
            return 0;
        }

        運(yùn)行結(jié)果:

        5050

        代碼分析:

        1) 執(zhí)行到 for 語句時(shí),先給 i 賦初值1,判斷 i<=100 是否成立;因?yàn)榇藭r(shí) i=1,i<=100 成立,所以執(zhí)行循環(huán)體。循環(huán)體執(zhí)行結(jié)束后(sum的值為1),再計(jì)算 i++。

        2) 第二次循環(huán)時(shí),i 的值為2,i<=100 成立,繼續(xù)執(zhí)行循環(huán)體。循環(huán)體執(zhí)行結(jié)束后(sum的值為3),再計(jì)算 i++。

        3) 重復(fù)執(zhí)行步驟 2),直到第101次循環(huán),此時(shí) i 的值為101,i<=100 不成立,所以結(jié)束循環(huán)。

        由此我們可以總結(jié)出for循環(huán)的一般形式:

        for(初始化語句; 循環(huán)條件; 自增或自減){
            語句塊
        }

        for循環(huán)中的三個(gè)表達(dá)式

        for 循環(huán)中的“表達(dá)式1(初始化條件)”、“表達(dá)式2(循環(huán)條件)”和“表達(dá)式3(自增或自減)”都是可選項(xiàng),都可以省略(但分號;必須保留)。

        1) 修改“從1加到100的和”的代碼,省略“表達(dá)式1(初始化條件)”:

        int i = 1, sum = 0;
        for( ; i<=100; i++){
            sum+=i;
        }

        可以看到,將i=1移到了 for 循環(huán)的外面。

        2) 省略了“表達(dá)式2(循環(huán)條件)”,如果不做其它處理就會(huì)成為死循環(huán)。例如:

        for(i=1; ; i++) sum=sum+i;

        相當(dāng)于:

        i=1;
        while(1){
            sum=sum+i;
            i++;
        }

        所謂死循環(huán),就是循環(huán)條件永遠(yuǎn)成立,循環(huán)會(huì)一直進(jìn)行下去,永不結(jié)束。死循環(huán)對程序的危害很大,一定要避免。

        3) 省略了“表達(dá)式3(自增或自減)”,就不會(huì)修改“表達(dá)式2(循環(huán)條件)”中的變量,這時(shí)可在循環(huán)體中加入修改變量的語句。例如:

        for( i=1; i<=100; ){
            sum=sum+i;
            i++;
        }

        4) 省略了“表達(dá)式1(初始化語句)”和“表達(dá)式3(自增或自減)”。例如:

        for( ; i<=100 ; ){
            sum=sum+i;
            i++;
        }

        相當(dāng)于:

        while(i<=100){
            sum=sum+i;
            i++;
        }

        5) 3個(gè)表達(dá)式可以同時(shí)省略。例如:

        for( ; ; )  語句

        相當(dāng)于:

        while(1)  語句

        6) “表達(dá)式1”可以是初始化語句,也可以是其他語句。例如:

        for( sum=0; i<=100; i++ )  sum=sum+i;

        7) “表達(dá)式1”和“表達(dá)式3”可以是一個(gè)簡單表達(dá)式也可以是逗號表達(dá)式。

        for( sum=0,i=1; i<=100; i++ )  sum=sum+i;

        或:

        for( i=0,j=100; i<=100; i++,j-- )  k=i+j;

        8) “表達(dá)式2”一般是關(guān)系表達(dá)式或邏輯表達(dá)式,但也可是數(shù)值或字符,只要其值非零,就執(zhí)行循環(huán)體。例如:

        for( i=0; (c=getchar())!='\n'; i+=c );

        又如:

        for( ; (c=getchar())!='\n' ; )
            printf("%c",c);

        看完上述內(nèi)容,是不是對淺談c語言中實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的控制語句有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

        本文標(biāo)題:淺談c語言中實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的控制語句
        URL地址:http://www.jbt999.com/article4/ppjeoe.html

        成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站策劃、網(wǎng)站導(dǎo)航、企業(yè)網(wǎng)站制作、網(wǎng)站制作、靜態(tài)網(wǎng)站

        廣告

        聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

        外貿(mào)網(wǎng)站建設(shè)

      2. 
        

          <address id="upfr9"><pre id="upfr9"><strike id="upfr9"></strike></pre></address>
          1. <address id="upfr9"><tr id="upfr9"></tr></address><dl id="upfr9"></dl>
            亚洲AV无码久久精品色欲 | 日日成人网 | 久在草视频 | 国产成人在线综合豆花 | 欧美午夜激情视频 | 亚洲激情AV | 欧美一级乱码 | 俺去拉官方二区三区 | 无码一区二区三区中文 | 欧美日韩操逼网 |