Hi!這里是漁火。今天我們來學校C語言中的循環(huán)結(jié)構(gòu)。循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計中的基本結(jié)構(gòu)之一。循環(huán)結(jié)構(gòu)在程序設(shè)計中的應(yīng)用很普遍,幾乎所有具有實用價值的應(yīng)用程序中都包含著循環(huán)結(jié)構(gòu)。循環(huán)結(jié)構(gòu)的特點是,可以完成有規(guī)律的、需要重復計算或處理的任務(wù)。C語言提供了for語句、while語句和do-while三種循環(huán)語句。我們來看一個用到循環(huán)結(jié)構(gòu)的程序設(shè)計。
【1】假設(shè)今年我國的人口總數(shù)為13億,若按每年2%增長,計算從現(xiàn)在開始10年內(nèi)每年人口的數(shù)量。
#include運行結(jié)果如下:#include //2023.2.4漁火 Linux迷 www.linuxmi.com int main() { int n=13,year; double number,rate=0.02; for(year=1;year<=10;year++) { number=n*pow((1+rate),year); printf("%2d年后,人數(shù)為:%.2f億 ",year,number); } //2023.2.4漁火 Linux迷 www.linuxmi.com return 0; }
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com gcc linuxmi.c -lm -o linuxmi linuxmi@linuxmi /home/linuxmi/www.linuxmi.com ./linuxmi 1年后,人數(shù)為:13.26億 2年后,人數(shù)為:13.53億 3年后,人數(shù)為:13.80億 4年后,人數(shù)為:14.07億 5年后,人數(shù)為:14.35億 6年后,人數(shù)為:14.64億 7年后,人數(shù)為:14.93億 8年后,人數(shù)為:15.23億 9年后,人數(shù)為:15.54億 10年后,人數(shù)為:15.85億

分析:程序中的for循環(huán)控制語句中,年份year的初始值為1,終值為10,增量用year++實現(xiàn)。
{ number=n*pow((1+rate),year); printf("%2d年后,人數(shù)為:%.2f億 ",year,number); }是需要重復執(zhí)行的語句,稱為循環(huán)語句。在重復執(zhí)行的過程中,使用了同一個計算公式,但年份year每次遞增1,因此計算出的人口數(shù)量number會不同。
for語句是C語言提供的功能強大、使用廣泛的一種循環(huán)結(jié)構(gòu),不僅可以解決循環(huán)次數(shù)未知的循環(huán)問題,特別適合解決循環(huán)次數(shù)已知的循環(huán)問題。for語句的一般形式為:for(表達式1:表達式2:表達式3) 循環(huán)體語句;
1、可以應(yīng)用于計數(shù)型的循環(huán)。格式是:for(循環(huán)變量賦初值;循環(huán)條件,循環(huán)變量增量) 循環(huán)體語句;
說明:循環(huán)變量賦初值是一個賦值語句,用于給循環(huán)變量賦初值;循環(huán)條件是一個關(guān)系表達式,決定何時終止循環(huán);循環(huán)變量增量決定循環(huán)變量在完成一次循環(huán)后如何變化。三部分之間以”;“隔開。
【2】輸入一個正整數(shù),求n!。
#include1、運行結(jié)果如下://輸入10//2023.2.4漁火 Linux迷 www.linuxmi.com int main() { int i,n; double fac; printf("輸入n的值:"); scanf("%d",&n); fac=1; for(i=1;i<=n;i++) fac=fac*i; printf("%d!=%.0f ",n,fac); //2023.2.4漁火 Linux迷 www.linuxmi.com return 0; }

2、for語句的一般形式中省略表達式1,格式為:for(;表達式2;表達式3) 循環(huán)體語句;。
說明:省略表達式1時,可以將循環(huán)變量賦初值放在for之前。注意,此時不能省略第一個”;“。
3、for語句的一般形式中省略表達式2,格式為:for(;表達式1;;表達式3) 循環(huán)體語句;。
說明”省略表達式2時,表示不對循環(huán)進行控制,這時如果沒有其他處理的話。會形成死循環(huán)。應(yīng)避免這樣使用for結(jié)構(gòu)。
4、for語句的一般形式中省略表達式3,格式為:for(;表達式1;表達式2) 循環(huán)體語句;。
說明:省略表達式3時,可以在循環(huán)體語句中加入修改循環(huán)變量的值的語句。
5、for語句的一般形式中表達式1和表達式3也可以是逗號表達式。
6、for語句的一般形式中表達式2 的值只要非0,就執(zhí)行循環(huán)體。
7、for語句的一般形式中循環(huán)體語句可以省略。
for使用循環(huán)例子。
【編寫程序,輸入10個數(shù),輸出其中的最大值】
#include//2023.2.4漁火 Linux迷 www.linuxmi.com int main() { int i; float x,max; printf("請輸入第1個數(shù):"); scanf("%f",&x); max=x; for(i=1;i<=9;i++) { printf("請輸入第%d個數(shù)",i+1); scanf("%f",&x); if(x>max) max=x; } printf("10個數(shù)的最大值是:%.0f",max); //2023.2.4漁火 Linux迷 www.linuxmi.com return 0; }

分析:這是典型的最值問題,求解的思路是:定義變量max存放最大數(shù),將輸入的第一個數(shù)賦給max作為最大數(shù),在后續(xù)循環(huán)中,每輸入一個數(shù),都與max進行比較,若比max大,則將其賦給max,循環(huán)結(jié)束后,變量max中即為最大數(shù)。
【編寫程序,輸出所有的水仙花】
#include運行結(jié)果如下://2023.2.4漁火 Linux迷 www.linuxmi.com int main() { int num,a,b,c; for(num=100;num<=999;num++) { a=num/100; b=num%100/10; c=num%10; if(num==a*a*a+b*b*b+c*c*c) printf("%5d",num); } //2023.2.4漁火 Linux迷 www.linuxmi.com return 0; }

【由鍵盤輸入3個數(shù)字,將其組合成一個整型數(shù)并輸出】
#include運行結(jié)果如下://2023.2.4漁火 Linux迷 www.linuxmi.com int main() { int n=0,i; char ch; printf("輸入3個數(shù)字:"); for(i=1;i<=3;i++) { scanf("%c",&ch); n=n*10+ch-'0'; } printf("%d ",n); //2023.2.4漁火 Linux迷 www.linuxmi.com return 0; }
審核編輯:湯梓紅
-
C語言
+關(guān)注
關(guān)注
180文章
7628瀏覽量
139953 -
程序
+關(guān)注
關(guān)注
117文章
3817瀏覽量
82243 -
變量
+關(guān)注
關(guān)注
0文章
614瀏覽量
28776 -
for
+關(guān)注
關(guān)注
0文章
44瀏覽量
16022 -
循環(huán)結(jié)構(gòu)
+關(guān)注
關(guān)注
0文章
22瀏覽量
7830
原文標題:從零開始跟我學 C 語言之循環(huán)結(jié)構(gòu)(上)
文章出處:【微信號:Linux迷,微信公眾號:Linux迷】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
評論