C語言程序設(shè)計(jì)-循環(huán)嵌套_第1頁(yè)
C語言程序設(shè)計(jì)-循環(huán)嵌套_第2頁(yè)
C語言程序設(shè)計(jì)-循環(huán)嵌套_第3頁(yè)
C語言程序設(shè)計(jì)-循環(huán)嵌套_第4頁(yè)
C語言程序設(shè)計(jì)-循環(huán)嵌套_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

《C語言程序設(shè)計(jì)》

制作數(shù)字電子鐘---循環(huán)嵌套一、任務(wù)分析

1、目標(biāo):制作實(shí)際生活中常見的顯示“時(shí)、分、秒”的“數(shù)字電子鐘”。如:

10:11:56任務(wù):制作一個(gè)數(shù)字電子鐘

2、程序演示

3、所需知識(shí):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)程序設(shè)計(jì)。二、知識(shí)回憶三種循環(huán)語句1、while循環(huán)

2、dowhile循環(huán)

3、for循環(huán)

任務(wù):制作一個(gè)數(shù)字電子鐘

循環(huán)結(jié)構(gòu)有“當(dāng)型”和“直到型”兩種。

1、while循環(huán)和for循環(huán)結(jié)構(gòu)都是“當(dāng)型”循環(huán)〔先判斷,后循環(huán)〕,也就是說先判斷條件滿足與否,決定是否繼續(xù)循環(huán),如果一開始條件就不成立,那么循環(huán)一次也不被執(zhí)行。2、dowhile是“直到型”循環(huán)〔先循環(huán),后判斷〕。不管循環(huán)條件滿足與否,dowhile循環(huán)中的循環(huán)體至少被執(zhí)行一次。二、知識(shí)回憶任務(wù):制作一個(gè)數(shù)字電子鐘

二、知識(shí)回憶在屏幕上顯示數(shù)字0-59的變化for語句的實(shí)現(xiàn)如下:

……

for(s=0;s<=59;s++)

printf("\%2d",s);

……程序演示任務(wù)一:制作一個(gè)數(shù)字電子鐘

3、for循環(huán)結(jié)構(gòu)是C語言中功能最強(qiáng)大、使用最多的循環(huán)語句。使用靈活,形式多樣。第4章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)二、知識(shí)回憶:存在兩個(gè)問題:

1、數(shù)字“0-59”以滾動(dòng)卷屏方式顯示。

2、顯示速度太快,要能以實(shí)際一秒時(shí)間顯示一個(gè)數(shù)。

三、導(dǎo)入新課任務(wù):制作一個(gè)數(shù)字電子鐘

第一個(gè)問題的解決方法,可以使用gotoxy(x,y)函數(shù)定位數(shù)字顯示位置,其中x為屏幕列號(hào)、y為屏幕行號(hào)。也可以在每顯示一次數(shù)字后調(diào)用清屏函數(shù)clrscr()〔或system(“cls”);〕。clrscr()、gotoxy()兩個(gè)函數(shù)都包含在conio.h中,所以要在程序開頭使用文件包含命令將它們包含進(jìn)來:#include“conio.h"三、導(dǎo)入新課任務(wù):制作一個(gè)數(shù)字電子鐘

程序如下:#include"Conio.h"intmain(void){ints;for(s=0;s<=59;s++)

{gotoxy(35,12);

printf("\n%2d",s);}getch();return0;}三、導(dǎo)入新課任務(wù):制作一個(gè)數(shù)字電子鐘

第二個(gè)問題,是由于計(jì)算機(jī)的運(yùn)行速度很快,每秒的顯示時(shí)間要比實(shí)際生活中的一秒時(shí)間要短得多。因此,需要在程序中每顯示一秒后都設(shè)置一個(gè)時(shí)間延遲,時(shí)間延遲用方法空循環(huán)結(jié)構(gòu)實(shí)現(xiàn),它的位置在循環(huán)內(nèi)屏幕每顯示一個(gè)數(shù)值后。for(s=0;s<=59;s++){printf("\%2d",s);for(i=1;i<=200000000;i++);}這就是一個(gè)循環(huán)嵌套〔二層〕結(jié)構(gòu)。三、導(dǎo)入新課延時(shí)循環(huán)條件需調(diào)試終值以符合實(shí)際任務(wù):制作一個(gè)數(shù)字電子鐘

程序如下:#include“conio.h"intmain(void){ints;longi;for(s=0;s<=59;s++){gotoxy(35,12);printf("%2d",s);

for(i=1;i<=200000000;i++);}getch();return0;}三、導(dǎo)入新課任務(wù):制作一個(gè)數(shù)字電子鐘

定位顯示延時(shí),空循環(huán)2億次第4章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)三、導(dǎo)入新課程序演示思考:顯示0-59后程序還會(huì)重復(fù)運(yùn)行嗎實(shí)訓(xùn)環(huán)境:Win-TC或TC注意:1〕調(diào)試程序時(shí)要注意觀察程序出錯(cuò)情況;2〕200000000是一個(gè)參考值,數(shù)據(jù)改為100000000后再次運(yùn)行程序,觀察運(yùn)行結(jié)果;根據(jù)計(jì)算機(jī)運(yùn)行速度調(diào)整循環(huán)變量i的終值,盡量與實(shí)際運(yùn)轉(zhuǎn)時(shí)間一致。上機(jī)實(shí)訓(xùn)1:上機(jī)編輯源程序,模擬秒的變化,在屏幕固定位置顯示數(shù)字0-59的變化過程。調(diào)試運(yùn)行程序。任務(wù):制作一個(gè)數(shù)字電子鐘

本節(jié)課知識(shí)點(diǎn):循環(huán)嵌套-多種循環(huán)是本課程重點(diǎn),也是難點(diǎn)。三、導(dǎo)入新課任務(wù):制作一個(gè)數(shù)字電子鐘

一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu)稱為循環(huán)嵌套,而包含多層循環(huán)的循環(huán)結(jié)構(gòu)稱為多重循環(huán)。while、dowhile和for三種循環(huán)都可以進(jìn)行嵌套。注意,循環(huán)嵌套只能是包含關(guān)系,不能發(fā)生交叉。四、循環(huán)嵌套概念任務(wù):制作一個(gè)數(shù)字電子鐘

五、算法分析

1、變量設(shè)置設(shè)小時(shí)變量為h、分鐘變量為m、秒變量為s,因?yàn)檫@些變量的數(shù)據(jù)值均為小于60的整數(shù),所以定義它們?yōu)檎?。用于延時(shí)控制的變量數(shù)據(jù)值較大,超出整型整形范圍,所以變量i定義為長(zhǎng)整型。

任務(wù):制作一個(gè)數(shù)字電子鐘

五、算法分析

2、程序結(jié)構(gòu)“數(shù)字電子鐘”是一個(gè)典型的循環(huán)嵌套問題,先考慮只有分、秒的時(shí)鐘。最里層的循環(huán)用于延時(shí),中間層循環(huán)控制秒從0~59的變化,外層循環(huán)控制分鐘從0~59的變化。嵌套結(jié)構(gòu)如下:

for(m=0;m<=59;m++)

for(s=0;s<=59;s++)

{printf("\%2d:%2d",m,s);

for(i=1;i<=200000000;i++);

}任務(wù):制作一個(gè)數(shù)字電子鐘

五、算法分析再考慮小時(shí)從0-23的變化情形,最外層再套上一個(gè)循環(huán),控制小時(shí)從0~23。那么四層嵌套結(jié)構(gòu)如下:for(h=0;h<=23;h++)for(m=0;m<=59;m++)for(s=0;s<=59;s++){printf("\n%2d:%2d:%2d",h,m,s);for(i=1;i<=200000000;i++);}任務(wù):制作一個(gè)數(shù)字電子鐘

main(){inth,m,s;longi;

for(h=0;h<=23;h++)

for(m=0;m<=59;m++)

for(s=0;s<=59;s++){gotoxy(35,12);printf("\n%2d:%2d:%2d",h,m,s);for(i=1;i<=200000000;i++);

}}六、源程序任務(wù):制作一個(gè)數(shù)字電子鐘

上機(jī)實(shí)訓(xùn)2:1〕調(diào)試程序時(shí)要注意觀察程序運(yùn)行情況,再次調(diào)整空循環(huán)變量i的終值,盡量與實(shí)際運(yùn)轉(zhuǎn)時(shí)間一致。計(jì)算機(jī)運(yùn)行速度越快,那么這個(gè)數(shù)值越大。2〕請(qǐng)將變量i類型修改為整形后運(yùn)行程序,觀察運(yùn)行結(jié)果。任務(wù):制作一個(gè)數(shù)字電子鐘

前面的程序每次運(yùn)行都從0點(diǎn)0分0秒開始,不能從當(dāng)前實(shí)際時(shí)間開始運(yùn)行。解決問題的方法可以在程序第一次循環(huán)開始時(shí)輸入一次當(dāng)前實(shí)際時(shí)間。為了只在開始運(yùn)行時(shí)設(shè)置一次初始時(shí)間,可以引入一個(gè)邏輯變量first,其初始值為0,輸入初始時(shí)間后,將其值置為非0。在后面程序運(yùn)行中,通過if語句控制不再需要輸入初始時(shí)間。七、源程序提高與擴(kuò)展之一任務(wù):制作一個(gè)數(shù)字電子鐘

……

for(s=0;s<=59;s++)

{if(first==0)

{printf("\n輸入當(dāng)前時(shí)間:");

scanf("%d:%d:%d",&h,&m,&s);first=2;}else{gotoxy(35,12);

printf("%2d:%2d:%2d",h,m,s);for(i=1;i<=200000000;i++);}}七、源程序提高與擴(kuò)展之一任務(wù):制作一個(gè)數(shù)字電子鐘

完整程序如下:#include<conio.h>main(){inth,m,s,first=0;longi;for(h=0;h<=23;h++)for(m=0;m<=59;m++)for(s=0;s<=59;s++){if(first==0){printf("\nEnterCurrentTime,Please:");scanf("%d:%d:%d",&h,&m,&s);first=2;}else{gotoxy(35,12);printf("%2d:%2d:%2d",h,m,s);for(i=1;i<=200000000;i++);}}}任務(wù):制作一個(gè)數(shù)字電子鐘

現(xiàn)在給同學(xué)們提供一個(gè)存在幾個(gè)小問題的本任務(wù)源代碼〔time.c〕,請(qǐng)調(diào)試并找出錯(cuò)誤后,運(yùn)行本程序。說明:本程序需運(yùn)行24小時(shí)才能結(jié)束,如果要停止程序運(yùn)行,可以按Ctrl-C或連續(xù)按兩次Ctrl-Break強(qiáng)制中斷程序運(yùn)行。八、上機(jī)實(shí)訓(xùn)3任務(wù):制作一個(gè)數(shù)字電子鐘

本程序只能運(yùn)行24小時(shí),請(qǐng)同學(xué)們將程序進(jìn)一步改進(jìn),使它能顯示年、月、日、星期、時(shí)、分、秒等數(shù)據(jù)的電子鐘。九、源程序提高與擴(kuò)展之二

思考和作業(yè)任務(wù):制作一個(gè)數(shù)字電子鐘

“九九乘法表”是一個(gè)典型的循環(huán)嵌套問題,外循環(huán)變量i控制行的變化,共9行,所以外循環(huán)需循環(huán)9次。由于每行有9次乘法運(yùn)算,所以外循環(huán)每執(zhí)行一次,內(nèi)循環(huán)每次都是用i乘以1~9,即內(nèi)循環(huán)每行也都需要執(zhí)行9次。練習(xí):輸出“九九乘法表”任務(wù)分析

1、任務(wù)目標(biāo):

編程輸出“九九乘法表”。2、程序演示練習(xí):輸出“九九乘法表”程序如下:main(){inti,j;for(i=1;i<=9;i++){for(j=1;j<=9;j++)printf("%1d*%1d=%2d",j,i,i*j);printf("\n");}}練習(xí):輸出“九九乘法表”內(nèi)層循環(huán)執(zhí)行的次數(shù)等于該循環(huán)嵌套結(jié)構(gòu)中每一層循環(huán)次數(shù)的乘積。本例外循環(huán)循環(huán)9次,內(nèi)循環(huán)也為9次,那么內(nèi)循環(huán)執(zhí)行總次數(shù)為9×9=81次。思考:本程序輸出結(jié)果為矩形,其中近一半的計(jì)算和顯示是重復(fù)。請(qǐng)同學(xué)們修改程序,實(shí)現(xiàn)以三角形形式輸出結(jié)果,提高算法效率。輸出形式如下:

1*1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=161*5=52*5=103*5=154*5=205*5=251*6=62*6=123*6=184*6=245*6=306*6=361*7=72*7=143*7=214*7=285*7=356*7=427*7=491*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81練習(xí):輸出“九九乘法表”

編寫程序,以三角形形式輸出“九九乘法表”,并上機(jī)調(diào)試通過。

上機(jī)實(shí)訓(xùn)4練習(xí):輸出“九九乘法表”小結(jié)

1、循環(huán)嵌套〔多種循環(huán)〕,它是本課程重點(diǎn),也是難點(diǎn)。2、多重循環(huán)中,外循環(huán)變化慢,內(nèi)循環(huán)變化快,外循環(huán)一次,內(nèi)循環(huán)就要循環(huán)n次。如秒變化60次,那么分鐘變化〔增加〕1次,然后秒重新從0到59變化;分鐘變化60次,那么小時(shí)變化〔增加〕1次。本程序中,延時(shí)控制變量i變化次數(shù)最多。小結(jié)

3、循環(huán)嵌套在實(shí)際應(yīng)用中非常廣泛,必須掌握。

4、屏幕清屏或讓數(shù)據(jù)在固定位置顯示,可以使用clrscr()、gotoxy()兩個(gè)函數(shù),它們都包含在conio.h中,需要使用文件包含命令將它們包含進(jìn)來:

#in

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論