您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“C語(yǔ)言控制語(yǔ)句中循環(huán)的用法”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“C語(yǔ)言控制語(yǔ)句中循環(huán)的用法”吧!
在執(zhí)行多次循環(huán)之前之就已經(jīng)決定是否執(zhí)行循環(huán)
代碼格式:
while(關(guān)系表達(dá)式) 語(yǔ)句 //可以是以分號(hào)結(jié)尾的簡(jiǎn)單語(yǔ)句,也可以是用花括號(hào)括起來(lái)的復(fù)合語(yǔ)句。
關(guān)系表達(dá)式的結(jié)果有真(非0)執(zhí)行
和假(0)不執(zhí)行
兩種狀態(tài)
所以,我們發(fā)現(xiàn)while循環(huán)的終止條件很重要,要實(shí)現(xiàn)終止就必須讓測(cè)試表達(dá)式的值產(chǎn)生變化,直到為假。while循環(huán)才可終止,否則,沒(méi)有人為干預(yù),它就不會(huì)停止(后面會(huì)學(xué)到使用if和break語(yǔ)句來(lái)終止循環(huán),現(xiàn)在先不說(shuō)
)
看下面代碼:
#include <stdio.h> #include <windows.h> int main(){ int a=1; while (a<2) { printf("破軍:攻擊+200\t"); Sleep(100); } return 0; }
這就是寫(xiě)了一個(gè)不能終止循環(huán)條件
的結(jié)果,還好我加了睡覺(jué)函數(shù)
?,就這我平時(shí)風(fēng)扇不轉(zhuǎn)的電腦
就轉(zhuǎn)了起來(lái)
。謹(jǐn)慎謹(jǐn)慎?。。?/code>
何時(shí)循環(huán)終止呢? 要明確一點(diǎn),只有在測(cè)試條件為假時(shí),也就是需要讓條件動(dòng)起來(lái)(easy)比如循環(huán)體加一個(gè)a++
,也可以在測(cè)試條件的地方加,等等……好,?
#include<stdio.h> int main(){ int i=2; while (i++<1) { printf("執(zhí)行了"); } }
上面代碼,我們一讀就會(huì)發(fā)現(xiàn)2本就不小于1,況且i++,所以說(shuō)不滿(mǎn)足沒(méi)有進(jìn)去的機(jī)會(huì),這就是入口條件
#include <stdio.h> int main(){ int i=1; while (i++ < 7); printf("i的值=%d\n",i); return 0; }
這個(gè)代碼,while條件后面直接分號(hào),其實(shí)就是空語(yǔ)句,它什么也不做,意思就是循環(huán)體是空語(yǔ)句,最后程序結(jié)束的條件i=8,理解理解。
只有在測(cè)試條件后面單獨(dú)語(yǔ)句(簡(jiǎn)單語(yǔ)句或復(fù)合語(yǔ)句)才是循環(huán)部分
重點(diǎn)理解???
for把(初始化,測(cè)試和更新)組合在一起處理
for中的表達(dá)式也叫控制表達(dá)式,他們都是完整的表達(dá)式,所以副作用都發(fā)生在對(duì)下一個(gè)表達(dá)式求值之前。
可以省略一個(gè)或多個(gè)表達(dá)式(分號(hào)不能省哦),只要在循環(huán)體中包含能結(jié)束循環(huán)的語(yǔ)句即可。
第一個(gè)表達(dá)式不一定必須是給變量賦值,也可以使用printf();
語(yǔ)法格式 for(i=1;i<=100;i++){ 循環(huán)體 }
#include<stdio.h> int main(){ int i; for (;i < 2;) { printf("%d",i); i++; } return 0; }
#include<stdio.h> int main(){ int i; for ( printf("請(qǐng)輸入,輸入2我就結(jié)束了\n"); i != 2;) { scanf("%d",&i); printf("%d\n",i); } return 0; }
for(初始化表達(dá)式;測(cè)試表達(dá)式;更新表達(dá)式){ //復(fù)合語(yǔ)句 }
初始化表達(dá)式在執(zhí)行for之前只執(zhí)行一次,然后比較測(cè)試表達(dá)式得出結(jié)果是0不執(zhí)行1執(zhí)行,接著更新表達(dá)式的副作用發(fā)生,遍歷循環(huán)體,然后繼續(xù)重復(fù)檢查判斷的步驟,直至測(cè)試表達(dá)式結(jié)果為0,退出循環(huán)
while和for都是入口條件循環(huán),就是在循環(huán)之前檢查條件,所以會(huì)有一次也不執(zhí)行循環(huán)體的情況。因此,引入do while 先執(zhí)行循環(huán)體,然后再去判斷是否要進(jìn)行下一次迭代,它能夠使得程序至少執(zhí)行一次。
代碼格式:
do 語(yǔ)句; while(條件);
注意:do while 循環(huán)以分號(hào)結(jié)尾,do while適用于那些特殊的至少要迭代一次的程序。
什么是真?
在C中,表達(dá)式一定有一個(gè)值,關(guān)系表達(dá)式也不例外。那么我們通過(guò)代碼來(lái)讓計(jì)算機(jī)自己說(shuō)說(shuō)它認(rèn)為的真假指的是什么。
#include<stdio.h> int main(){ int a,b; a=(1+1==2); b=(1+1==1); printf("true = %d; false = %d",a,b); return 0; }
原來(lái)如此!對(duì)C而言,表達(dá)式為真的值是1,表達(dá)式為假的值為0
由此,死循環(huán)就非常簡(jiǎn)單了,比如信息轟炸就可以通過(guò)死循環(huán)結(jié)合windows庫(kù)來(lái)實(shí)現(xiàn)。是不是非常的easy呢。
while(1) { …… }
1被C視為真,其他值呢,繼續(xù)通過(guò)代碼來(lái)試試
#include<stdio.h> int main(){ int i=2; while (i) printf("%d is true\n",i--); printf("%d is false\n",i); i=-2; while (i) printf("%d is true\n",i++); printf("%d is false\n",i); return 0; }
我們發(fā)現(xiàn)在C中
好像真假
就是非0
和0
,
#include<stdio.h> int main(){ int a=3; while (a) { printf("again"); scanf("%d",&a); } return 0; }
while循環(huán)經(jīng)常依賴(lài)測(cè)試表達(dá)式作比較,這樣的表達(dá)式被稱(chēng)為
關(guān)系表達(dá)式
,出現(xiàn)在關(guān)系表達(dá)式里的運(yùn)算符叫做關(guān)系運(yùn)算符
。
下面復(fù)習(xí)下C語(yǔ)言的所有關(guān)系運(yùn)算符
< //小于 > //大于 >= //大于或等于 <= //小于或等于 == //等于 != //不等于
用關(guān)系運(yùn)算符
來(lái)構(gòu)造關(guān)系表達(dá)式
,通過(guò)關(guān)系表達(dá)式的真假
決定一些操作
fabs()是需要包括math
庫(kù)的,它是對(duì)浮點(diǎn)數(shù)取絕對(duì)值的函數(shù)
abs()是在stdio
庫(kù)中的,它是對(duì)整數(shù)取絕對(duì)值的函數(shù)
舉個(gè)栗子:
#include<stdio.h> #include<math.h> int main(){ double i = -3.12; int a=-3; printf("%f\n",fabs(i)); printf("%d",abs(a)); return 0; }
兩種方法:
1.自己定義仿布爾型
2.C99為兼容C++,可以使用頭文件,通過(guò)bool來(lái)使用布爾類(lèi)型
1
#define TRUE 1 #define FALSE 0
#include<stdio.h> int main(){ _Bool a=1; _Bool b=2; _Bool c=0; _Bool d=-1; printf("a==%d \n",a); printf("b==%d \n",b); printf("c==%d \n",c); printf("d==%d \n",d); printf("sizeof(_Bool)==%d \n",sizeof(_Bool)); return 0; }
2.
#include<stdio.h> #include<stdbool.h> int main(){ bool a = true; bool b = false; printf("a==%d b==%d\n",a,b); printf("sizeof(_Bool) == %d \n",sizeof(_Bool)); return 0; }
簡(jiǎn)單概括:
括號(hào) > 單目 > 算術(shù) > 移位 > 關(guān)系 > 賦值
遇到就記住就?了
用右側(cè)的值,根據(jù)指定的操作更新左側(cè)的變量
a+=b //a=a+b a-=b //a=a-b a*=b //a=a*b a/=b //a=a/b a%=b //a=a%b
好處:1. 代碼緊湊 2.比較類(lèi)似機(jī)器語(yǔ)言,這樣書(shū)寫(xiě)代碼執(zhí)行效率高
逗號(hào)運(yùn)算符
逗號(hào)運(yùn)算符把兩個(gè)表達(dá)式連接成一個(gè)表達(dá)式,并保證最左邊的表達(dá)式最先求值
逗號(hào)運(yùn)算符擴(kuò)展了for循環(huán)的靈活性,以便在循環(huán)頭中包含更多的表達(dá)式
逗號(hào)運(yùn)算符并不局限于for循環(huán)中使用,只是在循環(huán)中最常用
任何表達(dá)式的后面加上了分號(hào)就是表達(dá)式語(yǔ)句
逗號(hào)也可以做分隔符
應(yīng)用:
#include<stdio.h> int main(){ int a,b; for(a=2,b=3;b<10;a+=1) b+=a; printf("%d",b); }
如何選擇循環(huán)
首先,確定需要得是入口條件循環(huán)還是出口條件循環(huán)
一般,當(dāng)涉及初始化和更新變量時(shí),用for循環(huán)比較好,而在其他情況下用while循環(huán)更好。
還有,那個(gè)特殊的比如至少要循環(huán)迭代一次的選擇 do while
嵌套循環(huán)
指的是一個(gè)循環(huán)內(nèi)包含另一個(gè)循環(huán)。
嵌套循環(huán)常用于按行和按列顯示數(shù)據(jù),一個(gè)處理所有的列,一個(gè)處理所有的行。
內(nèi)層和外層循環(huán),簡(jiǎn)單說(shuō),外層循環(huán)動(dòng)一下,內(nèi)層循環(huán)遍歷所有,外層再動(dòng)一次,內(nèi)層依舊遍歷所有,外層結(jié)束,內(nèi)層也就和結(jié)束。
通過(guò)簡(jiǎn)單的99感冒靈(),哦,不對(duì),99乘法表來(lái)練練理解理解
99乘法表分析
大概實(shí)現(xiàn)這樣
分析:
想想打印一個(gè)直角三角形出來(lái)
我需要嵌套for,第一個(gè)for用來(lái)顯示行,一共有9行,第二個(gè)內(nèi)層for打印列,我們觀察99乘法表,第一行一列,對(duì)二行二列,以此類(lèi)推……第九行九列,不難發(fā)現(xiàn)所以去哦只需要把它的判斷和行聯(lián)系起來(lái),怎樣的聯(lián)系,只要小于等于行就?,
然后我在打印每一列的時(shí)候加一個(gè)水平制表符(*4個(gè)空格的·長(zhǎng)),最后內(nèi)層循環(huán)結(jié)束后在內(nèi)層循環(huán)外for循環(huán)內(nèi)加上一個(gè)換行符,顯示出9行。最后把打印的替換成運(yùn)算就完事。實(shí)踐起來(lái)吧
#include<stdio.h> int main(){ for (int i = 1; i <= 9; i++){ for(int j=1;j<=i;j++){ printf("1\t"); } printf("\n"); } return 0; }
替換
#include<stdio.h> int main(){ for (int i = 1; i <= 9; i++){ for(int j=1;j<=i;j++){ printf("%d*%d=%d\t",i,j,i*j); } printf("\n"); } return 0; }
基本OK,enn就用這個(gè)簡(jiǎn)單栗子深刻領(lǐng)會(huì),你會(huì)收益很大
小結(jié)
循環(huán)是一個(gè)強(qiáng)大的編程工具
,C中提供了,while , for , do while 三種循環(huán)
,學(xué)習(xí)完你將掌握C的全部循環(huán)體系,按入口出口可以分為兩類(lèi),入口:while , for 出口: do while
,在創(chuàng)建循環(huán)時(shí)
,我們要注意循環(huán)的測(cè)試條件得能使得循環(huán)結(jié)束
,循環(huán)測(cè)試中的值在使用前已經(jīng)經(jīng)過(guò)了初始化
,確保循環(huán)體每次都有迭代更新的值
。清晰得認(rèn)識(shí)三種循環(huán)得使用場(chǎng)景
。此外,還有一些運(yùn)算符,布爾值,優(yōu)先級(jí),庫(kù)函數(shù)得零碎知識(shí)學(xué)習(xí),它們也一樣重要
到此,相信大家對(duì)“C語(yǔ)言控制語(yǔ)句中循環(huán)的用法”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。