?分支語句博客:http://t.csdn.cn/U2kZF
目錄
?編輯
前言:我們先來了解一下break 、continue在循環(huán)中的作用
1. while循環(huán)
?while循環(huán)中的break
?while循環(huán)中的continue?
2. for循環(huán)
for循環(huán)省略出錯舉例:
?for循環(huán)中的break
?for循環(huán)中的continue
3. do???while循環(huán)
利用do?while循環(huán)打印1~10?
?do? while循環(huán)中的break
?do? while循環(huán)中的continue
4. 練習(xí)
4.1 計算 n的階乘
4.2 計算1!+2!+3!+……+10!
5. 實現(xiàn)二分(折半)查找算法
5.1 思路分析
5.2 二分查找代碼實現(xiàn)
前言:我們先來了解一下break 、continue在循環(huán)中的作用
break:終止循環(huán)(暴力)
continue:跳過本次循環(huán)continue后面的代碼,再循環(huán)(溫柔)
1. while循環(huán)
當(dāng)條件滿足的情況下,if語句后的語句執(zhí)行,否則不執(zhí)行。 但是這個語句只會執(zhí)行一次。 由于我們發(fā)現(xiàn)生活中很多的實際的例子是:同一件事情我們需要完成很多次。 那我們怎么做呢? C語言中給我們引入了: while 語句,可以實現(xiàn)循環(huán)。
?while循環(huán)中的break
當(dāng)n=5時,if語句為真,執(zhí)行break語句,break在while循環(huán)中跳出的是整個循環(huán),如果有多組循環(huán)嵌套,跳出的是內(nèi)層循環(huán)(跳出一組循環(huán))
?while循環(huán)中的continue?
?當(dāng)n=5的時候,執(zhí)行continue語句,跳過continue后面的代碼,開始下次循環(huán)
2. for循環(huán)
表達(dá)式1?為初始化部分,用于初始化循環(huán)變量的。
表達(dá)式2?為條件判斷部分,用于判斷循環(huán)時候終止。
表達(dá)式3?為調(diào)整部分,用于循環(huán)條件的調(diào)整。
for循環(huán)省略出錯舉例:
?這里是兩個for循環(huán)嵌套,開始時i=0,j=0,進(jìn)入內(nèi)部for循環(huán),循環(huán)4次出內(nèi)層循環(huán),這是j=4,再當(dāng)i=1,再次進(jìn)入內(nèi)層for循環(huán)的時候,這是由于j沒有初始化部分,所以j還是為4,直接跳出內(nèi)層for循環(huán)~~~本來打印16個hehe,現(xiàn)在只打印4個
?for循環(huán)中的break
?當(dāng)i=5時,執(zhí)行break代碼,直接跳出for循環(huán)
?for循環(huán)中的continue
?當(dāng)i=5時,執(zhí)行continue代碼——跳出本次循環(huán)continue后面的代碼,直接到調(diào)整部分—>再到for循環(huán)判斷部分
for循環(huán)使用建議
1. 不可在for 循環(huán)體內(nèi)修改循環(huán)變量,防止 for 循環(huán)失去控制。
2. 建議for語句的循環(huán)控制變量的取值采用“前閉后開區(qū)間”寫法。
3. do???while循環(huán)
?循環(huán)至少執(zhí)行一次,使用的場景有限,所以不是經(jīng)常使用。
、
利用do?while循環(huán)打印1~10?
?do? while循環(huán)中的break
break直接跳出循環(huán)
?do? while循環(huán)中的continue
?continue跳過本次循環(huán)后面的代碼,由于這里跳過了調(diào)整部分,i=5一直為真,一直執(zhí)行continue,就打印出1234 死循環(huán)
4. 練習(xí)
4.1 計算 n的階乘
int main()
{
int n = 0;
scanf("%d", &n);
int ret = 1; //注意ret不能定義為0
for (int i = 1; i <=n ; i++)
{
ret *= i;
}
printf("%d", ret);
return 0;
}
4.2 計算1!+2!+3!+……+10!
int main()
{
int ret = 1;
int sum = 0;
for (int i = 0; i <=10 ; i++)
{
ret *= i;
sum += ret;//sum=sum + ret;也可以這樣來看
}
printf("%d", sum);
return 0;
}
5. 實現(xiàn)二分(折半)查找算法
二分查找算法使用的前提是數(shù)組元素有序(升序)、(降序)
5.1 思路分析
1.確定被查找范圍的左右下標(biāo)left、right
2.根據(jù)left和right,確定中間元素下標(biāo)mid
3.根據(jù)mid鎖定的元素,和要查找的元素進(jìn)行比較,確定新的元素范圍left和right
?5.2 二分查找代碼實現(xiàn)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };//升序
//printf("%d\n", sizeof(arr));//計算的數(shù)組的總大小,單位是字節(jié)
//printf("%d\n", sizeof(arr[0]));//4
//printf("%d\n", sizeof(arr) / sizeof(arr[0]));
int k = 7;
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
//1
int left = 0;
int right = sz - 1;
int flag = 0;//flag的作用是標(biāo)志是否找到了
//2
while (left <= right)
{
int mid = (left + right) / 2;
if (arr[mid] == k)
{
printf("找到了,下標(biāo)是:%d\n", mid);
flag = 1;
break;
}
else if (arr[mid] < k)
{
left = mid + 1;
}
else
{
right = mid - 1;
}
}
//1 2
if (flag == 0)
printf("沒找到\n");
return 0;
}
?運(yùn)行結(jié)果
文章來源:http://www.zghlxwxcb.cn/news/detail-444971.html
如果覺得文章不錯,期待你的一鍵三連哦,你個鼓勵是我創(chuàng)作的動力之源,讓我們一起加油,頂峰相見!??!文章來源地址http://www.zghlxwxcb.cn/news/detail-444971.html
到了這里,關(guān)于深入淺出循環(huán)語句—【C語言】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!