C語言中的while循環(huán)語句示例詳解
日常生活中除了選擇之外,還有很多循環(huán)做的事情,比如說三點(diǎn)一線的生活,日復(fù)一日的工作,每天都在重復(fù)著一樣的事情,這就是循環(huán),那么C語言中的循環(huán)語句是什么樣的呢,開始今天的分享。
while循環(huán)
基本語法格式
while(表達(dá)式)
{
語句;
}還是使用一個(gè)代碼來解釋while循環(huán)的執(zhí)行過程:
switch(表達(dá)式)
{
case 常量1:語句1
case 常量2:語句2
default:語句n
break;
}通過代碼可以看到,表達(dá)式i<=10在i==1的情況下判斷為真,所以循環(huán)體中的語句執(zhí)行,最后打印出1-10,那么我們可以知道,當(dāng)表達(dá)式為真時(shí),while循環(huán)才會(huì)執(zhí)行,當(dāng)表達(dá)式為假,循環(huán)則不會(huì)執(zhí)行。那么如果表達(dá)式是一個(gè)非0的數(shù),循環(huán)會(huì)不會(huì)一直執(zhí)行呢?
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
while (1)
{
printf("a");
}
return 0;
}
通過運(yùn)行結(jié)果可以看到,當(dāng)表達(dá)式為1時(shí),while循環(huán)會(huì)一直執(zhí)行循環(huán)體,也就變成了一個(gè)死循環(huán)。
while循環(huán)中的break;
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int i = 1;
while (i<=10)
{
printf("%d\n", i);
if (i==5)
{
break;
}
i++;
}
return 0;
}通過前面的代碼我們知道這個(gè)代碼是用于打印1-10,那么如果在i==5的時(shí)候加入break,會(huì)發(fā)生什么呢?

可以看到當(dāng)加入了break之后,當(dāng)執(zhí)行到i==5時(shí),后面的循環(huán)并沒有執(zhí)行,那么可以理解為break語句的意思是終止循環(huán)。
while循環(huán)中的continue語句
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int i = 1;
while (i<=10)
{
if (i == 5)
{
continue;
}
printf("%d\n", i);
i++;
}
return 0;
}
上面我們知道了break的作用,那么continue和break有什么區(qū)別呢,通過運(yùn)行結(jié)果可以看到,當(dāng)輸出到4時(shí),代碼進(jìn)入了一個(gè)死循環(huán),而不是像break一樣終止,這是為什么呢?我來解釋一下,continue的意思為繼續(xù),當(dāng)代碼執(zhí)行到continue時(shí),會(huì)跳過本次循環(huán)而繼續(xù)下一次,從代碼中看到,當(dāng)i==5時(shí),循環(huán)跳過,那么i++不會(huì)執(zhí)行,i的值就不會(huì)改變,那么i==5回到表達(dá)式判斷5<10,進(jìn)入循環(huán),那么這個(gè)時(shí)候i==5就又會(huì)觸發(fā)continue,然后i++又不能執(zhí)行,就造成i的值一直為5,一直跳過,就成了一個(gè)死循環(huán)。
那么while循環(huán)的基本信息我們知道了,我們來實(shí)現(xiàn)一下下面兩個(gè)問題。
第一:用戶輸入一個(gè)數(shù)字,求該數(shù)字所擁有的位數(shù)之和。
那么從題目中可以知道,一個(gè)數(shù)可能會(huì)有很多位數(shù),所以只計(jì)算一次是不行的,就需要循環(huán)計(jì)算,并且,求位數(shù)之和就需要將數(shù)字每個(gè)位數(shù)分開進(jìn)行相加,知道了這些,那我們來具體實(shí)現(xiàn)一下。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int numb;//定義一個(gè)int類型的整數(shù)
int sum = 0;//定義一個(gè)int類型的變量用于接受位數(shù)之和
printf("Please input\n");//讓用戶輸入
scanf("%d", &numb);//接受用戶輸入的整數(shù)
while (numb!=0)
{
sum += numb % 10;//將整數(shù)的位數(shù)分離并加在sum中
numb /= 10;//將已經(jīng)計(jì)算過的位數(shù)去除
}
printf("該數(shù)的位數(shù)之和為%d\n", sum);//輸出sum的值
return 0;
}寫這種代碼之前呢我們需要舉例進(jìn)去算一下,那么我就以123為例子,當(dāng)輸入的numb為123時(shí),要計(jì)算1+2+3,要將每一位數(shù)分離,那么先將個(gè)位數(shù)分離,那么123/10的余數(shù)便是個(gè)位數(shù)3,這時(shí)我們就得到了個(gè)位數(shù)3,將3加進(jìn)sum里面,那么3已經(jīng)加完了,就要將3去掉,那么123/10的商為12便將3去掉,重復(fù)執(zhí)行這個(gè)結(jié)果,當(dāng)最后只剩1時(shí),1/10為0,所以循環(huán)結(jié)束,那么如果位數(shù)不止為3位呢,即使這個(gè)數(shù)為n位,將最高位/10也一定為0,那么當(dāng)計(jì)算到最高位時(shí),相加已經(jīng)完成,所以最高位/10為0便是循環(huán)條件,如果分離出來的數(shù)值/10不為0,說明至少有兩位以上的數(shù)值沒有分開,所以循環(huán)條件為numb==0。

第二個(gè),這個(gè)代碼非常的好玩并且有意思,要輸出下面的圖片

那么這個(gè)代碼要怎么寫呢,我們可以看到,最開始輸出*號(hào),然后每一次輸出用一個(gè)字符代替*號(hào),最后輸出一個(gè)I Love You。那么我們可以將*好和字符串各自定義為一個(gè)字符類型的數(shù)組,每一次輸出時(shí)將數(shù)組1的最左值用數(shù)組2的最左值替換,同樣最右邊也是一樣。那么數(shù)組中的值通過下標(biāo)調(diào)用,下標(biāo)從0開始,每替換一次下標(biāo)要加1,知道了這些,我們就可以實(shí)現(xiàn)代碼。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
char arr1[] = "I Love You";
char arr2[] = "************";
int left = 0;
//int right = sizeof(arr1) / sizeof(arr1[0]) - 2;//[a,b,c,\0]
int right = strlen(arr2)-1;//右下標(biāo)
printf("%s\n", arr2);
printf("\n");
while (left<right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
left++;
right--;
printf("%s\n", arr2);
printf("\n");
}
return 0;
}那么每次替換數(shù)值時(shí),左標(biāo)都會(huì)加1,右標(biāo)都會(huì)減1,總會(huì)有一次兩者相等,那便是最后一個(gè)字符替換,所以循環(huán)條件為left<right。
以上就是今天的所有內(nèi)容,那么屏幕前的你們對(duì)while循環(huán)是否也有一定的理解了呢。
到此這篇關(guān)于C語言中的while循環(huán)語句的文章就介紹到這了,更多相關(guān)C語言while循環(huán)語句內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言中#pragma?pack(1)的用法與注意點(diǎn)
#pragma用于指示編譯器完成一些特定的動(dòng)作,下面這篇文章主要給大家介紹了關(guān)于C語言中#pragma?pack(1)的用法與注意點(diǎn)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
詳解NSString 與C++ string字符串的互轉(zhuǎn)
這篇文章主要介紹了詳解NSString 與C++ string字符串的互轉(zhuǎn)的相關(guān)資料,需要的朋友可以參考下2017-07-07
C++ push方法與push_back方法的使用與區(qū)別
這篇文章主要介紹了C++ push方法與push_back方法的使用與區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
C++設(shè)計(jì)一個(gè)簡(jiǎn)單內(nèi)存池的全過程
利用C/C++開發(fā)大型應(yīng)用程序中,內(nèi)存的管理與分配是一個(gè)需要認(rèn)真考慮的部分,下面這篇文章主要給大家介紹了關(guān)于C++設(shè)計(jì)一個(gè)簡(jiǎn)單內(nèi)存池的全過程,需要的朋友可以參考下2021-09-09
基于C語言實(shí)現(xiàn)的貪吃蛇游戲完整實(shí)例代碼
這篇文章主要介紹了基于C語言實(shí)現(xiàn)的貪吃蛇游戲完整實(shí)例代碼,對(duì)于學(xué)習(xí)游戲開發(fā)的朋友有一定的借鑒價(jià)值,需要的朋友可以參考下2014-08-08
C語言數(shù)據(jù)結(jié)構(gòu)與算法之鏈表(一)
鏈表是線性表的鏈?zhǔn)酱鎯?chǔ)方式。鏈表的內(nèi)存是不連續(xù)的,前一個(gè)元素存儲(chǔ)地址的下一個(gè)地址中存儲(chǔ)的不一定是下一個(gè)元素。小編今天就將帶大家深入了解一下鏈表,快來學(xué)習(xí)吧2021-12-12
關(guān)于VS+QT5應(yīng)用程序換圖標(biāo)的解決方案
這篇文章主要介紹了VS+QT5應(yīng)用程序換圖標(biāo)的處理方案,本文給大家提供了兩種解決方案供大家參考,每種方法給大家講解的都非常詳細(xì),需要的朋友可以參考下2021-12-12

