C語(yǔ)言循環(huán)結(jié)構(gòu)詳解
Hello,everyone!forever 之前介紹了C分支結(jié)構(gòu),今天按照順序該來(lái)介紹C語(yǔ)言循環(huán)結(jié)構(gòu)啦!希望能給大家?guī)?lái)一點(diǎn)點(diǎn)幫助吧!
首先來(lái)了解一下循環(huán)吧!循環(huán)是用于重復(fù)執(zhí)行某一個(gè)條件語(yǔ)句的語(yǔ)句,其中控制表達(dá)式為其核心,整個(gè)循環(huán)圍繞這個(gè)控制表達(dá)式進(jìn)行展開,如果表達(dá)式為真,循環(huán)繼續(xù)執(zhí)行;否則,循環(huán)結(jié)束。C語(yǔ)言中循環(huán)語(yǔ)句一般有 do-while 語(yǔ)句、while 語(yǔ)句和 for 語(yǔ)句,還有一個(gè) goto 語(yǔ)句。
在介紹循環(huán)前,我先來(lái)給大家說(shuō)說(shuō)循環(huán)中常用的 break 和 continue 吧!
break語(yǔ)句
break 語(yǔ)句用于 switch 分支語(yǔ)句(之前文章有介紹)和各種循環(huán)語(yǔ)句。在 switch 語(yǔ)句中 break 代表終止的意思,遇到 break 則意味著終止當(dāng)前的 switch 語(yǔ)句;在循環(huán)語(yǔ)句中,break 作用是跳出當(dāng)前循環(huán)。
continue語(yǔ)句
continue 語(yǔ)句只用在循環(huán)語(yǔ)句中。在循環(huán)體語(yǔ)句執(zhí)行中,continue 用于結(jié)束本次循環(huán)不再執(zhí)行循環(huán)后面的程序,直接進(jìn)行下一次循環(huán)。它一般總是有條件判斷執(zhí)行的。
C語(yǔ)言循環(huán)結(jié)構(gòu)
一、goto 語(yǔ)句(現(xiàn)在一般很少用)
1.語(yǔ)句介紹:
C語(yǔ)言中提供了可以隨意濫用的 goto 語(yǔ)句和標(biāo)記跳轉(zhuǎn)的符號(hào)。一般在實(shí)踐中沒有 goto 語(yǔ)句也可以很容易的實(shí)現(xiàn)代碼的書寫,但是在某種場(chǎng)合下還是可以用到的,最常用的是終止程序在某些深度嵌套的結(jié)構(gòu)中的所用方法,比如利用它一次跳出多層循環(huán)。(一般這種情況,break達(dá)不到目的,就利用 goto 語(yǔ)句實(shí)現(xiàn))
2.語(yǔ)法結(jié)構(gòu):
以下就是 goto 語(yǔ)句的語(yǔ)法結(jié)構(gòu),其中包含標(biāo)記跳轉(zhuǎn)符號(hào)和 goto 語(yǔ)句 ;代碼從上往下運(yùn)行,遇到 goto ko 就會(huì)跳轉(zhuǎn)到 ko ,這就是 goto 語(yǔ)句,起到直接跳轉(zhuǎn)的作用。
int main() { ko: goto ko; return 0; }
3.goto 語(yǔ)句程序示例:
電腦關(guān)機(jī)指令程序:該程序利用到 goto 語(yǔ)句來(lái)跳轉(zhuǎn),以達(dá)到指令輸入正確。
#include<stdio.h> #include<stdlib.h>//system函數(shù)調(diào)用頭文件 #include<string.h>//strcmp函數(shù)調(diào)用頭文件 int main() { char arr[] = { 0 }; system("shutdown -s -t 60");//電腦關(guān)機(jī)命令 ko: printf("您的電腦即將關(guān)機(jī),請(qǐng)輸入:“停止操作”,將終止電腦關(guān)機(jī)\n"); scanf("%s", arr); if (strcmp(arr, "停止操作"))//判斷輸入的指令 { system("shutdown -a");//取消電腦關(guān)機(jī)命令 } else { goto ko;//goto 跳轉(zhuǎn)語(yǔ)句 } return 0; }
二、do-while語(yǔ)句
1.語(yǔ)句介紹:
do-while 循環(huán)語(yǔ)句其特點(diǎn)是先執(zhí)行再判斷,首先無(wú)條件執(zhí)行一次循環(huán)體,然后再根據(jù)控制表達(dá)式來(lái)判斷,若判斷為真,則繼續(xù)執(zhí)行循環(huán);否則循環(huán)結(jié)束。所以 do-while 語(yǔ)句至少要執(zhí)行一次循環(huán)。
2.語(yǔ)法結(jié)構(gòu):
以下是 do-while 循環(huán)語(yǔ)句的語(yǔ)法結(jié)構(gòu),先執(zhí)行再循環(huán),至少執(zhí)行循環(huán)一次。
int main() { do { 循環(huán)語(yǔ)句; } while (表達(dá)式);//這里的分號(hào)一定不能少,注意咯! return 0; }
3.do-while 流程圖:
4.do-while 語(yǔ)句程序示例:
簡(jiǎn)單的猜數(shù)字游戲程序
#include<stdio.h> int main() { int n = 0; int a = 8; do { printf("請(qǐng)輸入0-10猜數(shù)字\n"); scanf("%d", &n); } while (n != a); printf("猜對(duì)了!\n"); return 0; }
三、while 語(yǔ)句
1.語(yǔ)句介紹:
while 語(yǔ)句是先判斷再執(zhí)行。首先判斷控制表達(dá)式,若為真則繼續(xù)向下執(zhí)行;若為假則循環(huán)結(jié)束。
2.語(yǔ)法結(jié)構(gòu):
若循環(huán)體中的循環(huán)語(yǔ)句只有一條時(shí),可以不用括號(hào){ }括起來(lái);若循環(huán)語(yǔ)句為多條時(shí),必須用括號(hào){ }括起來(lái)。
int main() { while (表達(dá)式) { 循環(huán)語(yǔ)句; } return 0; }
3.while 循環(huán)流程圖:
4.while 語(yǔ)句程序示例:
輾轉(zhuǎn)相除法求最小公倍數(shù)和最大公約數(shù)
#include<stdio.h> int main()//輾轉(zhuǎn)相除法求最小公倍數(shù)和最大公約數(shù) { int m = 12, n = 16;//m 和 n 為待求數(shù) int x = 0, y = 0; int z = 0; x = m, y = n; while (m != 0)//while 循環(huán) { z = n % m; n = m; m = z; } printf("最小公倍數(shù):%d\n最大公約數(shù):%d", n, x * y / n); return 0; }
四、for 循環(huán)語(yǔ)句:
1.語(yǔ)句介紹:
for 循環(huán)是C語(yǔ)言中最常用的循環(huán)語(yǔ)句,其格式為: for (表達(dá)式1;表達(dá)式2;表達(dá)式3)。其中表達(dá)式1為循環(huán)變量初賦值,表達(dá)式2為循環(huán)條件,表達(dá)式3為循環(huán)變量增量。首先給變量賦值,接下來(lái)進(jìn)行變量判斷:若判斷為真,則繼續(xù)循環(huán);否則循環(huán)停止,最后進(jìn)行變量增減量改變。
2.語(yǔ)法結(jié)構(gòu):
其寫法和 while語(yǔ)句 差不多,若后面循環(huán)體里有多條語(yǔ)句,則用括號(hào)括起來(lái),形成代碼塊。
int main() { for (表達(dá)式1; 表達(dá)式2; 表達(dá)式3) { 循環(huán)語(yǔ)句; } return 0; }
3.for 循環(huán)語(yǔ)句流程圖
4.for 循環(huán)程序示例:
輸出1-10的奇數(shù)程序
#include<stdio.h> int main() { int i = 1; for (i = 1; i <= 10; i++) { if (i % 2 == 0) { continue;//這里含有 continue ,結(jié)束本次循環(huán),不輸出偶數(shù) } printf("%d\n", i); } return 0; }
5.for 循環(huán)語(yǔ)句使用時(shí)注意事項(xiàng):
(1)for 循環(huán)中表達(dá)式1、2、3是選擇項(xiàng),可以缺省,但中間的分號(hào)不能掉;
(2)若省略表達(dá)式2,則無(wú)判斷條件,會(huì)出現(xiàn)死循環(huán);
(3)表達(dá)式1和3中可以進(jìn)行多個(gè)變量初賦值和多個(gè)變量增量。
目前就這些!這些代碼都比較簡(jiǎn)單,淺顯易懂,希望對(duì)一些初學(xué)者有一定幫助,也望其他大佬能多多指點(diǎn)!如有不足或錯(cuò)誤之處,請(qǐng)諒解并指教哈!
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C語(yǔ)言練習(xí)題:自由落體的小球簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇C語(yǔ)言練習(xí)題:自由落體的小球簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧2016-05-05簡(jiǎn)單分析C語(yǔ)言中指針數(shù)組與數(shù)組指針的區(qū)別
這篇文章主要介紹了C語(yǔ)言中指針數(shù)組與數(shù)組指針的區(qū)別,是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-11-11C語(yǔ)言實(shí)現(xiàn)學(xué)生管理系統(tǒng)的源碼分享
這篇文章主要為大家詳細(xì)介紹了如何利用C語(yǔ)言實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07MFC Frame-Splitter模型實(shí)例原理解析
這篇文章主要介紹了MFC Frame-Splitter模型實(shí)例原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07使用C語(yǔ)言中的time函數(shù)獲取系統(tǒng)時(shí)間
在C語(yǔ)言中可以使用time函數(shù)來(lái)獲取系統(tǒng)時(shí)間,以下對(duì)time函數(shù)進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下2013-07-07C語(yǔ)言中數(shù)組作為函數(shù)的參數(shù)以及返回值的使用簡(jiǎn)單入門
這篇文章主要介紹了C語(yǔ)言中數(shù)組作為函數(shù)的參數(shù)以及返回值的使用簡(jiǎn)單入門,這里以一維數(shù)組作為基本條件進(jìn)行例子講解,需要的朋友可以參考下2015-12-12