C語言超細致講解循環(huán)語句
C語言循環(huán)家族
家族成員有while語句,for語句和do....while語句。這些成員都能實現(xiàn)循環(huán),但又各有特點。今天就由我?guī)ьI(lǐng)大家一起認識他們吧!
while循環(huán)
while語句的基本格式:
while(表達式)
{
循環(huán)語句;
}
while語句執(zhí)行的流程:
while語句的理解:
1當(dāng)表達式為假時(0為假),不執(zhí)行while語句中的內(nèi)容。
2當(dāng)表達式為真的時候(非0),便循環(huán)執(zhí)行while循環(huán)語句的內(nèi)容,直到表達式為假的時候便跳出循環(huán)。
3當(dāng)while循環(huán)語句中出現(xiàn)break語句時,break語句的作用是結(jié)束所有循環(huán)。
4當(dāng)while循環(huán)語句中出現(xiàn)continue語句時,continue語句的作用是結(jié)束本次循環(huán)。
代碼理解while:
我們要想在屏幕中打印1~10便可以借助循環(huán)
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> //打印1~10 int main() { int i = 1; while (i <= 10) { printf("%d ", i); i++; } return 0; }
while循環(huán)中出現(xiàn)break:
#include<stdio.h> int main() { int i = 1; while (i <= 10) { if (i == 5) { break; } printf("%d ", i); i++; } return 0; }
從這個代碼中我們可以看出,當(dāng)程序進入到while循環(huán)中的時候,當(dāng)i==5時便會進入到if語句中,這時后便會執(zhí)行break,從上面我們可以知道break作用是停止所有循環(huán)。那么屏幕中此時打印到1~4便會停止。
while循環(huán)中出現(xiàn)continue:
#include<stdio.h> int main() { int i = 1; while (i <= 10) { if (i == 5) { continue; } printf("%d ", i); i++; } return 0; }
當(dāng)我們分析這段代碼可以發(fā)現(xiàn),就是把break換成了continue,屏幕同樣打印了1~4,但不同的是第二個程序結(jié)束了,而第三個程序沒結(jié)束,進入了死循環(huán),為什么這樣會呢?我們知道continue的作用是結(jié)束本次循環(huán)(即continue后面的語句不在執(zhí)行),這時候i便會一直等于5進入到if中不斷的跳過后面的語句而進入的死循環(huán)中。
for循環(huán)
在C語言中我們既然有了while循環(huán)為什么還要來一個for循環(huán)呢?大家可以帶這個疑問繼續(xù)往下看。
for語句的基本格式:
for(表達式1; 表達式2; 表達式3)
{
循環(huán)語句;
}
表達式1: 為初始化部分,用于初始化循環(huán)變量的。
表達式2 :為條件判斷部分,用于判斷循環(huán)時候終止。
表達式3 :為調(diào)整部分,用于循環(huán)條件的調(diào)整。
for語句執(zhí)行的流程:
當(dāng)程序來到for語句中的時,首先是來到表達式1初始化循環(huán)變量,在來到表達式式2進行初始循環(huán)變量判斷是否滿足循環(huán)條件,若不滿足則跳出循環(huán),滿足則執(zhí)行循環(huán)中的語句,執(zhí)行完后來到表達式3調(diào)整循環(huán)條件,在指向表達式2進行判斷,直到不滿足循環(huán)條件而跳出循環(huán)。
用for打印1~10:
#include<stdio.h> int main() { int i = 1; for (i = 1;i <= 10;i++) { printf("%d ", i); } return 0; }
用下面代碼理解for循環(huán)中的break和continue
#include<stdio.h> int main() { int i = 1; for (i = 1;i <= 10;i++) { if (i == 5) { break; } printf("%d ", i); } return 0; }
#include<stdio.h> int main() { int i = 1; for (i = 1;i <= 10;i++) { if (i == 5) { continue; } printf("%d ", i); } return 0; }
大家細細體會代碼1和代碼2,可以看出break和continue在循環(huán)中的作用都是一樣的,但是在不同的循環(huán)語句可能會出現(xiàn)不同的循環(huán)效果。
for語句的一些建議:
1 不可在for 循環(huán)體內(nèi)修改循環(huán)變量,防止 for 循環(huán)失去控制
2 建議for語句的循環(huán)控制變量的取值采用“前閉后開區(qū)間”寫法
int i = 0;
//前閉后開的寫法 f
or(i=0; i<10; i++) {}
//兩邊都是閉區(qū)間
for(i=0; i<=9; i++) {}
這里是拓展部分大家可以細細體會。
for語句的變種:
#include <stdio.h> int main() { //代碼1 for(;;) { printf("hehe\n"); } //for循環(huán)中的初始化部分,判斷部分,調(diào)整部分是可以省略的,但是不建議初學(xué)時省略,容易導(dǎo)致問 題。 //代碼2 int i = 0; int j = 0; //這里打印多少個hehe? for(i=0; i<10; i++) { for(j=0; j<10; j++) { printf("hehe\n"); } } //代碼3 int i = 0; int j = 0; //如果省略掉初始化部分,這里打印多少個hehe? for(; i<10; i++) { for(; j<10; j++) { printf("hehe\n"); } } //代碼4-使用多余一個變量控制循環(huán) int x, y; for (x = 0, y = 0; x<2 && y<5; ++x, y++) { printf("hehe\n"); } return 0; }
代碼1:死循環(huán)打印hehe
代碼2:打印100個hehe
代碼3:打印10個hehe
代碼4:打印2個hehe
看到這里大家知道為什么要出現(xiàn)for語句了嗎?
我相信大家一定發(fā)現(xiàn)了while循環(huán)中依然存在循環(huán)的三個必須條件,但是由于風(fēng)格的問題使得三個部分很可能偏離較 遠,這樣 查找修改就不夠集中和方便。所以,for循環(huán)的風(fēng)格更勝一籌;for循環(huán)使用的頻率也最高。
dowhile循環(huán)
在這里我就開門見山的和大家說do.....while循環(huán)的特點:循環(huán)至少執(zhí)行一次,使用的場景有限,所以不是經(jīng)常使用。
do語句的語法:
do
{
循環(huán)語句;
}while(表達式);
do語句的執(zhí)行流程:
從執(zhí)行圖中,程序到這里最少執(zhí)行一次循環(huán)中的語句,這里需要注意的是先執(zhí)行語句在進行判斷循環(huán)條件
在do語句中的break和continue:
#include<stdio.h> int main() { int i = 1; do { if (i == 5) { break; } printf("%d ", i); i++; } while (i <= 10); return 0; }
#include<stdio.h> int main() { int i = 1; do { i++; if (i == 5) { continue; } printf("%d ", i); } while (i <= 10); return 0; }
大家只要記住break是中止循環(huán),而continue是跳過本次循環(huán)后面的語句。
到此這篇關(guān)于C語言超細致講解循環(huán)語句的文章就介紹到這了,更多相關(guān)C語言循環(huán)語句內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
這篇文章主要介紹了C語言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法,涉及C語言針對數(shù)組的遍歷與判斷技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07C語言實現(xiàn)3個數(shù)從小到大排序/輸出的方法示例
這篇文章主要給大家介紹了關(guān)于如何利用C語言實現(xiàn)3個數(shù)從小到大排序/輸出的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用C語言具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05OpenCV cv.Mat與.txt文件數(shù)據(jù)的讀寫操作
這篇文章主要介紹了OpenCV cv.Mat 與 .txt 文件數(shù)據(jù)的讀寫操作,現(xiàn)在分享給大家,也給大家做個參考2018-05-05新舊MFC版本實現(xiàn)CEdit透明的2種方法的實例代碼
新舊MFC版本實現(xiàn)CEdit透明的2種方法的實例代碼,需要的朋友可以參考一下2013-03-03C語言函數(shù)傳遞數(shù)組和傳遞地址的區(qū)別你知道嗎
這篇文章主要介紹了C語言中數(shù)組作為函數(shù)的參數(shù)以及返回值的使用簡單入門,這里以一維數(shù)組作為基本條件進行例子講解,需要的朋友可以參考下2021-09-09