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