• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    淺談C語(yǔ)言中的循環(huán)結(jié)構(gòu)

    2021-09-10 19:46:58程良萍劉星辰
    科教創(chuàng)新與實(shí)踐 2021年6期

    程良萍 劉星辰

    摘要:在C語(yǔ)言程序設(shè)計(jì)中順序、選擇、循環(huán)三大基本結(jié)構(gòu)之一的循環(huán)結(jié)構(gòu)由于其具有較高的方便性和靈活性因而被廣泛應(yīng)用于程序設(shè)計(jì)中。循環(huán)結(jié)構(gòu)是指在C語(yǔ)言程序設(shè)計(jì)中需要反復(fù)執(zhí)行而設(shè)計(jì)的程序結(jié)構(gòu),由循環(huán)體中的某個(gè)條件來判斷是否繼續(xù)執(zhí)行某個(gè)功能。C語(yǔ)言中的循環(huán)結(jié)構(gòu)包含三種循環(huán)語(yǔ)句:while循環(huán)語(yǔ)句、do-while循環(huán)語(yǔ)句和for循環(huán)語(yǔ)句。本文對(duì)循環(huán)語(yǔ)句的執(zhí)行過程進(jìn)行了探討、分析和舉例,同時(shí)針對(duì)執(zhí)行過程的特殊要求引入了break語(yǔ)句和continue語(yǔ)句來實(shí)現(xiàn)程序運(yùn)行的高效性,為C語(yǔ)言程序設(shè)計(jì)的應(yīng)用提供了借鑒思路。

    關(guān)鍵詞:C語(yǔ)言程序設(shè)計(jì);while循環(huán)語(yǔ)句;do-while循環(huán)語(yǔ)句;for循環(huán)語(yǔ)句

    引言

    C語(yǔ)言是一門計(jì)算機(jī)語(yǔ)言,使用者可以通過它和計(jì)算機(jī)交流,讓計(jì)算機(jī)完成想做的事情[1]。計(jì)算機(jī)軟件編程通過C語(yǔ)言,能夠使編程工作更為便捷,提升編程工作的效率[2]。計(jì)算機(jī)語(yǔ)言就是指人與計(jì)算機(jī)之間通訊的語(yǔ)言,是人與計(jì)算機(jī)之間傳遞信息的媒介。計(jì)算機(jī)系統(tǒng)最大的特征就是指令通過一種語(yǔ)言的形式傳達(dá)給機(jī)器,使之進(jìn)行各種工作,C語(yǔ)言就是這種特殊語(yǔ)言中的一種,由字符和語(yǔ)法規(guī)則組成計(jì)算機(jī)能夠接受的語(yǔ)言。

    1.循環(huán)結(jié)構(gòu)中的三種循環(huán)語(yǔ)句

    1.1 while循環(huán)語(yǔ)句

    While循環(huán)的一般使用格式如下:

    圖1為while循環(huán)的執(zhí)行過程。在一般使用格式中,“表達(dá)式”是循環(huán)條件,“語(yǔ)句”是循環(huán)體。上述格式的含義為:計(jì)算表達(dá)式的值,當(dāng)值為真(非0),執(zhí)行循環(huán)體語(yǔ)句。當(dāng)值為假(0)時(shí),跳出循環(huán)體,執(zhí)行循環(huán)體后面的語(yǔ)句。while后面括號(hào)里面的表達(dá)式為邏輯值、關(guān)系表達(dá)式或邏輯表達(dá)式,只要表達(dá)式的值為真(非0),即可繼續(xù)循環(huán)。由于while循環(huán)取決于表達(dá)式條件的值,因此,while語(yǔ)句用于滿足條件時(shí)的循環(huán)結(jié)構(gòu)[3],也可用于循環(huán)次數(shù)不固定或循環(huán)次數(shù)未知的情況。一旦循環(huán)執(zhí)行完畢(當(dāng)條件的結(jié)果為假時(shí)),程序就執(zhí)行循環(huán)后面的代碼。表達(dá)式括號(hào)后面一般不能加“;”,加了會(huì)導(dǎo)致循環(huán)為空,不會(huì)執(zhí)行循環(huán)體。在循環(huán)體中要有能改變條件表達(dá)式中的語(yǔ)句,如果條件表達(dá)式變量不發(fā)生改變,那么循環(huán)就永遠(yuǎn)不會(huì)結(jié)束,從而變成死循環(huán)。

    1.2 do- while循環(huán)語(yǔ)句以及與while的聯(lián)系與區(qū)別

    do-while與while相似,只是在結(jié)構(gòu)中有點(diǎn)不同。一般格式如下:

    圖2為do-while循環(huán)的執(zhí)行過程循環(huán)體語(yǔ)句可以是簡(jiǎn)單語(yǔ)句、復(fù)合語(yǔ)句和空語(yǔ)句。do-while的執(zhí)行步驟一般是:先執(zhí)行一次循環(huán)體語(yǔ)句,然后判斷while括號(hào)中的條件表達(dá)式的值,若為真(非0),繼續(xù)執(zhí)行循環(huán)體語(yǔ)句;若為假(0)則退出循環(huán),while循環(huán)條件表達(dá)式后面必須帶“;”,不可省略。與while循環(huán)的聯(lián)系:在使用while語(yǔ)句設(shè)計(jì)循環(huán)結(jié)構(gòu)時(shí)遵循的規(guī)則對(duì)do-while語(yǔ)句也成立,在循環(huán)體內(nèi)部都必須要有改變條件(即邏輯表達(dá)式的變量)的語(yǔ)句,否則將造成死循環(huán)。一般來講while循環(huán)能解決的問題,do-whie也可以解決,只需要在解決問題的時(shí)候,考慮好循環(huán)第一次運(yùn)行的條件即可。

    與while循環(huán)的區(qū)別:while循環(huán)需要先進(jìn)行判斷才能進(jìn)行循環(huán)體,而do-while則先執(zhí)行循環(huán)體再對(duì)條件變量進(jìn)行判斷,也就是說do-while循環(huán)至少會(huì)進(jìn)行一次循環(huán)體的運(yùn)行。

    1.3 for循環(huán)語(yǔ)句

    在C語(yǔ)言中有一種循環(huán)不但可以用于循環(huán)次數(shù)已經(jīng)確定的情況,也可以用于循環(huán)次數(shù)不確定的而只給出循環(huán)結(jié)束條件的情況,這個(gè)強(qiáng)大的循環(huán)就是for循環(huán)結(jié)構(gòu)。for循環(huán)語(yǔ)句是C語(yǔ)言所提供的功能更強(qiáng)、使用更廣泛的一種循環(huán)語(yǔ)句。其語(yǔ)法格式如下:

    for循環(huán)結(jié)構(gòu)中表達(dá)式和語(yǔ)句的作用如下:

    表達(dá)式1:相當(dāng)于對(duì)條件變量進(jìn)行初始化,該表達(dá)式只在進(jìn)入循環(huán)時(shí),執(zhí)行一次,在后續(xù)的循環(huán)過程中不再執(zhí)行。表達(dá)式2:相當(dāng)于循環(huán)結(jié)構(gòu)中的條件判斷,一般是關(guān)系或邏輯表達(dá)式,但也可以是數(shù)值表達(dá)式和字符表達(dá)式,只要這個(gè)判斷體能進(jìn)行真假判斷即可。表達(dá)式3:相當(dāng)于循環(huán)體中對(duì)條件變量進(jìn)行改變即修改計(jì)數(shù)器(循環(huán)變量),使循環(huán)變量進(jìn)行變化,從而使循環(huán)程序最終達(dá)到退出的條件。每執(zhí)行一次循環(huán)體,就會(huì)執(zhí)行一次該表達(dá)式改變循環(huán)變量。每個(gè)表達(dá)式都需要用“;”進(jìn)行隔開,不能省略。從流程圖3中可以看出for循環(huán)先進(jìn)行表達(dá)式1,然后用表達(dá)式2對(duì)循環(huán)變量進(jìn)行判斷,若判斷為真就進(jìn)入循環(huán)體進(jìn)行循環(huán)語(yǔ)句,再進(jìn)行表達(dá)式3,若判斷為假,則直接退出循環(huán)進(jìn)行for循環(huán)后面的語(yǔ)句。進(jìn)行了一次循環(huán)后直接從表達(dá)式2開始判斷從而進(jìn)入下一次的循環(huán)。在for循環(huán)中一般可以將表達(dá)式1進(jìn)行省略,寫到代碼的其他地方,但是“;”不能省略,表達(dá)式3也是可以在()中進(jìn)行省略,將表達(dá)式3寫到循環(huán)體語(yǔ)句中。表達(dá)式2語(yǔ)句的位置也可以是空,如果表達(dá)式2語(yǔ)句的位置為空的話,表示循環(huán)條件永遠(yuǎn)為真,如果是這樣的話,在循環(huán)體中就要配合break語(yǔ)句使用,否則for循環(huán)語(yǔ)句將無法退出循環(huán)[4]。

    2.循環(huán)結(jié)構(gòu)中的特殊結(jié)構(gòu)和特殊語(yǔ)句

    2.1 雙循環(huán)

    雙循環(huán)又稱為循環(huán)的嵌套,即在一個(gè)循環(huán)語(yǔ)句中又有一個(gè)完整的循環(huán)結(jié)構(gòu)的形式。常見的嵌套式一般為:while循環(huán)嵌套,do-while循環(huán)嵌套,for循環(huán)嵌套,for循環(huán)與while循環(huán)相互嵌套,while與do-while循環(huán)相互嵌套,do-while循環(huán)中嵌套for循環(huán)。在雙循環(huán)中一般都是使用for循環(huán)的嵌套,流程為,先進(jìn)行第一個(gè)for語(yǔ)句中的表達(dá)式1,然后進(jìn)行表達(dá)式2進(jìn)行判斷,為真就進(jìn)行循環(huán)體語(yǔ)句第二個(gè)for循環(huán)就在循環(huán)體語(yǔ)句中,然后進(jìn)行表達(dá)式4,再進(jìn)行表達(dá)式5,這也是為了進(jìn)行判斷,為真就進(jìn)入第二個(gè)for循環(huán)的循環(huán)體語(yǔ)句,然后執(zhí)行表達(dá)式6,等第二個(gè)for循環(huán)退出后再執(zhí)行第一個(gè)表達(dá)式3,循環(huán)上述步驟,直到退出第一個(gè)for循環(huán)。其語(yǔ)法格式如下:

    2.2 break和continue語(yǔ)句

    在執(zhí)行循環(huán)語(yǔ)句時(shí),總是需要等條件變量不符合條件時(shí)才會(huì)退出循環(huán)體,如果想中途就退出循環(huán),就可以使用break語(yǔ)句,因?yàn)閎reak語(yǔ)句可以不顧循環(huán)條件表達(dá)式檢驗(yàn)的結(jié)果。比如,當(dāng)一個(gè)小孩正在打游戲,父母叫他不要打了,可小孩不聽,這時(shí)父母就會(huì)采取一些措施讓他強(qiáng)行停下來,這就是break語(yǔ)句[5]。break的功能說明有:1.改變程序的控制力2.如果已執(zhí)行break語(yǔ)句就不會(huì)在執(zhí)行break后面的語(yǔ)句3.通常與循環(huán)中的條件語(yǔ)句一起使用,若條件真,則跳出循環(huán)4。某些時(shí)候需要?jiǎng)?chuàng)建一個(gè)死循環(huán)結(jié)構(gòu)這時(shí)就可用break來退出循環(huán)。

    continue語(yǔ)句則是與break語(yǔ)句有一定的區(qū)別,continue的作用是跳過循環(huán)體后面剩余的語(yǔ)句,結(jié)束本次循環(huán),轉(zhuǎn)而進(jìn)入下一次的循環(huán),不像break那樣直接退出循環(huán),一般用來加快循環(huán)。所以continue不能強(qiáng)制退出死循環(huán)。continue語(yǔ)句只能作用于循環(huán)結(jié)構(gòu)不能在其他結(jié)構(gòu)中,通常也是和if語(yǔ)句連用。

    3.案例分析

    3.1 字符串復(fù)制

    【問題描述】編寫一個(gè)字符串復(fù)制函數(shù)strCopy(),將字符串1中的字符復(fù)制到另一個(gè)字符串2中,在主函數(shù)中調(diào)用函數(shù)strCopy()并輸出復(fù)制后的結(jié)果。例如,當(dāng)字符串1為“This is a C program”,則字符串2為“This is a C program”。代碼如下:

    #include<stdio.h>

    void strCopy(char str[]);

    int main()

    {

    char s[100],cop[100],t;

    gets(s);

    strCopy(s);

    return 0;

    }

    void strCopy(char str[])

    {

    int i,j;

    char str2[100];

    j=0;

    i=0;

    while(str[i]!=’\0’)

    {

    str2[j]=str[i];

    j++;

    i++;

    }

    str2[j]=’\0’;

    puts(str2);

    }

    在此代碼中,循環(huán)體放入了函數(shù)strCopy()中,用了while循環(huán),先對(duì)()中的條件語(yǔ)句進(jìn)行判斷,判斷字符串1此時(shí)的元素是否為‘\0’,因?yàn)樽址浴?’為結(jié)束,判斷為真后,進(jìn)入循環(huán)體,將此時(shí)的元素賦值給字符串2,并讓字符串2的下標(biāo)加1,再讓字符串1的下標(biāo)加1然后再進(jìn)行條件語(yǔ)句判斷從而進(jìn)入下一次循環(huán),直到字符串元素為‘\0’退出循環(huán),再讓字符串2以‘\0’結(jié)束,通過主函數(shù)輸出出來。此代碼就比較直觀地表現(xiàn)了while循環(huán)的用法。

    3.2 九九乘法表

    【問題描述】在剛上小學(xué)的時(shí)候,數(shù)學(xué)老師就會(huì)教我們背誦九九乘法表,九九乘法表也是我們后面學(xué)習(xí)數(shù)學(xué)的基礎(chǔ),那時(shí)候每次數(shù)學(xué)課都會(huì)看到這個(gè)九九乘法表,讓我們爛熟于心,但是運(yùn)用c語(yǔ)言能不能實(shí)現(xiàn)九九乘法表呢?答案是可以的。具體代碼如下:

    #include<stdio.h>

    int main()

    {

    int a[10],i,s,d;

    for(i=0;i<9;)

    {

    i++;

    a[i]=i;

    for(s=0;s!=a[i];)

    {

    s++;

    d=a[i]*s;

    printf(“%d*%d=%d “,a[i],s,d);

    }

    printf(“\n”);

    }

    return 0;

    }

    此代碼運(yùn)用了循環(huán)的嵌套俗稱雙循環(huán),先讓i=0,然后進(jìn)行判斷i是否小于9,真就進(jìn)行循環(huán)體,進(jìn)入循環(huán)體先讓i自身加1,并存儲(chǔ)在數(shù)組a[i]中,然后發(fā)生循環(huán)的嵌套,再進(jìn)行第二個(gè)for循環(huán)讓s=0,判斷s是否不等于這時(shí)的a[i],真則進(jìn)入循環(huán),讓s自身加1,再讓d等于s乘a[i],并在第二個(gè)for循環(huán)中輸出,當(dāng)不符合第二個(gè)for循環(huán)的條件語(yǔ)句后,再進(jìn)行換行,進(jìn)入下一次循環(huán),比如:第一次i=1,a[i]=1,則s=1,所以輸出為1*1=1;然后進(jìn)入下一次循環(huán),i=2,a[i]=2,s再次等于1,輸出為2*1=2;這時(shí)并沒有退出第二個(gè)for循環(huán),s再進(jìn)行加1,變?yōu)?,所以再輸出2*2=4。這個(gè)過程循環(huán)進(jìn)行直到輸出9*9=81,在個(gè)代碼中for循環(huán)()中的第3個(gè)表達(dá)式都省略了,為的是更好的進(jìn)行循環(huán)變量的改變,運(yùn)行結(jié)果如圖4。

    3.3 正數(shù)和

    【問題描述】從鍵盤上輸入數(shù)據(jù),只求所有輸入的正數(shù)之和,如果輸入負(fù)數(shù)則不累加其和,直到輸入0為止。具體代碼如下:

    #include<stdio.h>

    int main()

    {

    float n,sum=0;

    int i=0;

    do

    {

    scanf(“%f”,&n);

    if(n<0) continue;

    if(n==0) break;

    i++;

    sum=sum+n;

    }while(l)

    printf(“你輸入了%d個(gè)正數(shù),所有正數(shù)之和為:%2f\n”,i,sum);

    }

    這個(gè)代碼運(yùn)用了do-while循環(huán),continue和break語(yǔ)句,通過題目要求可以看出只進(jìn)行正數(shù)的相加,當(dāng)輸入負(fù)數(shù)時(shí)則不相加,于是需要進(jìn)行下一次的循環(huán),這是continue就起到了這個(gè)作用,為了當(dāng)輸入0時(shí)就退出循環(huán),于是通過if(n==0) break;語(yǔ)句就完成了這個(gè)功能,break語(yǔ)句就讓循環(huán)強(qiáng)行退出,這也體現(xiàn)了這個(gè)循環(huán)體并不需要特別設(shè)置條件變量進(jìn)行判斷,于是while()中就是一個(gè)空語(yǔ)句。

    4.結(jié)束語(yǔ)

    所謂循環(huán)是指使用一定條件對(duì)同一個(gè)程序段重復(fù)執(zhí)行若干次,所解決的問題需要執(zhí)行的若干次基本操作都應(yīng)該相同或相似。循環(huán)的執(zhí)行需要滿足一定的條件,利用此條件可以終止循環(huán),C語(yǔ)言就提供了while,do-while,for這3種循環(huán)結(jié)構(gòu)。如何學(xué)習(xí)循環(huán)結(jié)構(gòu)呢?首先,循環(huán)結(jié)構(gòu)與選擇、順序結(jié)構(gòu)不同,在實(shí)際的問題解決中很少會(huì)按照循環(huán)的思想考慮如何解決一個(gè)問題。因而在學(xué)習(xí)循環(huán)結(jié)構(gòu)的時(shí)候,要多分析一些循環(huán)的源程序,總結(jié)其編寫的規(guī)律。同時(shí)要記住一些常見的算法,如累加、連乘、判斷素?cái)?shù)、最大公約數(shù)、費(fèi)式數(shù)列等,還有枚舉、遞推的方法。以后出現(xiàn)同樣的問題,盡量使用已經(jīng)具備的算法解決。

    參考文獻(xiàn):

    [1]韋鵬程,李靜,C語(yǔ)言程序設(shè)計(jì)[M].北京:中國(guó)林業(yè)出版社,2019.

    [2]王華,計(jì)算機(jī)軟件編程中的C語(yǔ)言設(shè)計(jì)和應(yīng)用[J].信息與電腦,2020,2:68-70.

    [3]戚龍,C語(yǔ)言程序設(shè)計(jì)中的循環(huán)語(yǔ)句應(yīng)用算法研究[J].計(jì)算機(jī)產(chǎn)品與流通,2020,7:200-201.

    [4]戚龍,C語(yǔ)言程序設(shè)計(jì)中for循環(huán)語(yǔ)句應(yīng)用算法研究[J].計(jì)算機(jī)產(chǎn)品與流通,2020,8:11-12.

    [5]高茂嬋,呂雪,彭星星,孫新杰,淺談C語(yǔ)言中循環(huán)結(jié)構(gòu)程序設(shè)計(jì)[J].軟件設(shè)計(jì)與開發(fā),2020,16:58-60.

    重慶第二師范學(xué)院 400065

    普安县| 宕昌县| 合肥市| 东丽区| 丰镇市| 运城市| 阳江市| 枞阳县| 新野县| 宕昌县| 洞口县| 兰坪| 灵丘县| 安吉县| 神农架林区| 体育| 安达市| 平阴县| 巴塘县| 沙雅县| 新乐市| 抚顺市| 安国市| 东辽县| 青田县| 锡林郭勒盟| 安阳县| 兴山县| 亚东县| 湄潭县| 梧州市| 宁乡县| 新密市| 安义县| 乌兰浩特市| 溆浦县| 成武县| 宁晋县| 道孚县| 肥乡县| 万宁市|