999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

程良萍 劉星辰

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

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

引言

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

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

1.1 while循環(huán)語句

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

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

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

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

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

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

1.3 for循環(huán)語句

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

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

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

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

2.1 雙循環(huán)

雙循環(huán)又稱為循環(huán)的嵌套,即在一個循環(huán)語句中又有一個完整的循環(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)行第一個for語句中的表達(dá)式1,然后進(jìn)行表達(dá)式2進(jìn)行判斷,為真就進(jìn)行循環(huán)體語句第二個for循環(huán)就在循環(huán)體語句中,然后進(jìn)行表達(dá)式4,再進(jìn)行表達(dá)式5,這也是為了進(jìn)行判斷,為真就進(jìn)入第二個for循環(huán)的循環(huán)體語句,然后執(zhí)行表達(dá)式6,等第二個for循環(huán)退出后再執(zhí)行第一個表達(dá)式3,循環(huán)上述步驟,直到退出第一個for循環(huán)。其語法格式如下:

2.2 break和continue語句

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

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

3.案例分析

3.1 字符串復(fù)制

【問題描述】編寫一個字符串復(fù)制函數(shù)strCopy(),將字符串1中的字符復(fù)制到另一個字符串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),先對()中的條件語句進(jìn)行判斷,判斷字符串1此時的元素是否為‘\0’,因為字符串以‘\0’為結(jié)束,判斷為真后,進(jìn)入循環(huán)體,將此時的元素賦值給字符串2,并讓字符串2的下標(biāo)加1,再讓字符串1的下標(biāo)加1然后再進(jìn)行條件語句判斷從而進(jìn)入下一次循環(huán),直到字符串元素為‘\0’退出循環(huán),再讓字符串2以‘\0’結(jié)束,通過主函數(shù)輸出出來。此代碼就比較直觀地表現(xiàn)了while循環(huán)的用法。

3.2 九九乘法表

【問題描述】在剛上小學(xué)的時候,數(shù)學(xué)老師就會教我們背誦九九乘法表,九九乘法表也是我們后面學(xué)習(xí)數(shù)學(xué)的基礎(chǔ),那時候每次數(shù)學(xué)課都會看到這個九九乘法表,讓我們爛熟于心,但是運用c語言能不能實現(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;

}

此代碼運用了循環(huán)的嵌套俗稱雙循環(huán),先讓i=0,然后進(jìn)行判斷i是否小于9,真就進(jìn)行循環(huán)體,進(jìn)入循環(huán)體先讓i自身加1,并存儲在數(shù)組a[i]中,然后發(fā)生循環(huán)的嵌套,再進(jìn)行第二個for循環(huán)讓s=0,判斷s是否不等于這時的a[i],真則進(jìn)入循環(huán),讓s自身加1,再讓d等于s乘a[i],并在第二個for循環(huán)中輸出,當(dāng)不符合第二個for循環(huán)的條件語句后,再進(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;這時并沒有退出第二個for循環(huán),s再進(jìn)行加1,變?yōu)?,所以再輸出2*2=4。這個過程循環(huán)進(jìn)行直到輸出9*9=81,在個代碼中for循環(huán)()中的第3個表達(dá)式都省略了,為的是更好的進(jìn)行循環(huá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個正數(shù),所有正數(shù)之和為:%2f\n”,i,sum);

}

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

4.結(jié)束語

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

參考文獻(xiàn):

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

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

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

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

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

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

主站蜘蛛池模板: 欧美.成人.综合在线| 精品伊人久久大香线蕉网站| 国产精品思思热在线| 国产特级毛片aaaaaaa高清| 亚洲第一天堂无码专区| 久夜色精品国产噜噜| 欧美成人精品欧美一级乱黄| 美女扒开下面流白浆在线试听 | 亚洲天堂视频在线观看免费| 91色在线观看| 国产精品人莉莉成在线播放| 日韩无码白| 91青青草视频在线观看的| 久久影院一区二区h| 全裸无码专区| 国产精品开放后亚洲| 欧美不卡视频一区发布| 亚洲一级毛片在线观播放| 在线播放91| 亚洲欧美另类日本| 一级片一区| 99精品在线看| 99精品欧美一区| 欧美五月婷婷| 手机永久AV在线播放| 欧美一级大片在线观看| 欧美日韩国产成人高清视频| 在线精品亚洲一区二区古装| 成人在线不卡视频| 欧美成人区| 国产成人综合久久精品尤物| 国产日韩av在线播放| 亚洲成年网站在线观看| 久久99精品国产麻豆宅宅| 国产区精品高清在线观看| 欧美亚洲激情| 国产一区二区三区夜色| 精久久久久无码区中文字幕| 亚洲人成网站日本片| 超清人妻系列无码专区| 久久精品嫩草研究院| 92精品国产自产在线观看| 亚洲日韩第九十九页| 国产成人1024精品| 午夜视频www| 欧美亚洲第一页| 色吊丝av中文字幕| 亚洲欧美日本国产专区一区| 国产精品第一区在线观看| 国产一二三区在线| 国产成人精品视频一区视频二区| 亚洲AⅤ无码国产精品| 亚洲视频免| 国产第一页第二页| 欧美区一区| 国产人人射| 中国国语毛片免费观看视频| 国产日本欧美在线观看| 国产美女叼嘿视频免费看| 天天综合网亚洲网站| 视频一本大道香蕉久在线播放| 亚洲欧美综合在线观看| 成年片色大黄全免费网站久久| 国产精品香蕉| 91精品aⅴ无码中文字字幕蜜桃| 国产视频入口| 国精品91人妻无码一区二区三区| 亚洲区欧美区| 亚洲精品福利网站| 538精品在线观看| 四虎成人精品| 国产亚洲欧美另类一区二区| 91无码人妻精品一区二区蜜桃| 亚洲色成人www在线观看| 亚洲精品无码专区在线观看| 欧美97欧美综合色伦图| 久久久久国产精品熟女影院| 亚洲日韩每日更新| 亚洲精品你懂的| 色窝窝免费一区二区三区| 国产欧美日韩专区发布| 亚洲国产精品日韩欧美一区|