C語言中的while循環(huán)語句示例詳解
日常生活中除了選擇之外,還有很多循環(huán)做的事情,比如說三點一線的生活,日復一日的工作,每天都在重復著一樣的事情,這就是循環(huán),那么C語言中的循環(huán)語句是什么樣的呢,開始今天的分享。
while循環(huán)
基本語法格式
while(表達式) { 語句; }
還是使用一個代碼來解釋while循環(huán)的執(zhí)行過程:
switch(表達式) { case 常量1:語句1 case 常量2:語句2 default:語句n break; }
通過代碼可以看到,表達式i<=10在i==1的情況下判斷為真,所以循環(huán)體中的語句執(zhí)行,最后打印出1-10,那么我們可以知道,當表達式為真時,while循環(huán)才會執(zhí)行,當表達式為假,循環(huán)則不會執(zhí)行。那么如果表達式是一個非0的數,循環(huán)會不會一直執(zhí)行呢?
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { while (1) { printf("a"); } return 0; }
通過運行結果可以看到,當表達式為1時,while循環(huán)會一直執(zhí)行循環(huán)體,也就變成了一個死循環(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; }
通過前面的代碼我們知道這個代碼是用于打印1-10,那么如果在i==5的時候加入break,會發(fā)生什么呢?
可以看到當加入了break之后,當執(zhí)行到i==5時,后面的循環(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ū)別呢,通過運行結果可以看到,當輸出到4時,代碼進入了一個死循環(huán),而不是像break一樣終止,這是為什么呢?我來解釋一下,continue的意思為繼續(xù),當代碼執(zhí)行到continue時,會跳過本次循環(huán)而繼續(xù)下一次,從代碼中看到,當i==5時,循環(huán)跳過,那么i++不會執(zhí)行,i的值就不會改變,那么i==5回到表達式判斷5<10,進入循環(huán),那么這個時候i==5就又會觸發(fā)continue,然后i++又不能執(zhí)行,就造成i的值一直為5,一直跳過,就成了一個死循環(huán)。
那么while循環(huán)的基本信息我們知道了,我們來實現(xiàn)一下下面兩個問題。
第一:用戶輸入一個數字,求該數字所擁有的位數之和。
那么從題目中可以知道,一個數可能會有很多位數,所以只計算一次是不行的,就需要循環(huán)計算,并且,求位數之和就需要將數字每個位數分開進行相加,知道了這些,那我們來具體實現(xiàn)一下。
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int numb;//定義一個int類型的整數 int sum = 0;//定義一個int類型的變量用于接受位數之和 printf("Please input\n");//讓用戶輸入 scanf("%d", &numb);//接受用戶輸入的整數 while (numb!=0) { sum += numb % 10;//將整數的位數分離并加在sum中 numb /= 10;//將已經計算過的位數去除 } printf("該數的位數之和為%d\n", sum);//輸出sum的值 return 0; }
寫這種代碼之前呢我們需要舉例進去算一下,那么我就以123為例子,當輸入的numb為123時,要計算1+2+3,要將每一位數分離,那么先將個位數分離,那么123/10的余數便是個位數3,這時我們就得到了個位數3,將3加進sum里面,那么3已經加完了,就要將3去掉,那么123/10的商為12便將3去掉,重復執(zhí)行這個結果,當最后只剩1時,1/10為0,所以循環(huán)結束,那么如果位數不止為3位呢,即使這個數為n位,將最高位/10也一定為0,那么當計算到最高位時,相加已經完成,所以最高位/10為0便是循環(huán)條件,如果分離出來的數值/10不為0,說明至少有兩位以上的數值沒有分開,所以循環(huán)條件為numb==0。
第二個,這個代碼非常的好玩并且有意思,要輸出下面的圖片
那么這個代碼要怎么寫呢,我們可以看到,最開始輸出*號,然后每一次輸出用一個字符代替*號,最后輸出一個I Love You。那么我們可以將*好和字符串各自定義為一個字符類型的數組,每一次輸出時將數組1的最左值用數組2的最左值替換,同樣最右邊也是一樣。那么數組中的值通過下標調用,下標從0開始,每替換一次下標要加1,知道了這些,我們就可以實現(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;//右下標 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; }
那么每次替換數值時,左標都會加1,右標都會減1,總會有一次兩者相等,那便是最后一個字符替換,所以循環(huán)條件為left<right。
以上就是今天的所有內容,那么屏幕前的你們對while循環(huán)是否也有一定的理解了呢。
到此這篇關于C語言中的while循環(huán)語句的文章就介紹到這了,更多相關C語言while循環(huán)語句內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C++ push方法與push_back方法的使用與區(qū)別
這篇文章主要介紹了C++ push方法與push_back方法的使用與區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-12-12