C語言程序設(shè)計課件第05章_第1頁
C語言程序設(shè)計課件第05章_第2頁
C語言程序設(shè)計課件第05章_第3頁
C語言程序設(shè)計課件第05章_第4頁
C語言程序設(shè)計課件第05章_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章循環(huán)結(jié)構(gòu)的C程序設(shè)計本章學(xué)習(xí)目標(biāo)了解循環(huán)概念和循環(huán)執(zhí)行過程了解用goto語句構(gòu)成循環(huán)結(jié)構(gòu)的方法掌握while和do-while語句的使用方法熟練掌握for語句的使用方法掌握break和continue語句的使用方法掌握循環(huán)嵌套的使用方法掌握循環(huán)結(jié)構(gòu)程序設(shè)計的方法[Return]概述

現(xiàn)實生活中有許多需要重復(fù)進行的操作,它們的處理方法相同,只是每次的數(shù)據(jù)可能發(fā)生變化。例如100個數(shù)的累加和累乘,就要做100次相加和相乘的操作,每次運算的形式一樣,只是相加、相乘的數(shù)不同而已。程序中對這類需要重復(fù)執(zhí)行的操作一般使用循環(huán)結(jié)構(gòu)來處理。循環(huán)控制結(jié)構(gòu)常用于解決數(shù)學(xué)迭代、對象遍歷等問題,幾乎所有實用程序都包含循環(huán)結(jié)構(gòu)。循環(huán)結(jié)構(gòu)也是結(jié)構(gòu)化程序設(shè)計中的三種基本結(jié)構(gòu)之一。C語言提供了多種解決循環(huán)操作的語句,有g(shù)oto語句、while語句、do-while語句和for語句,另外,還提供了break語句和continue語句,用于循環(huán)的靈活控制。5.1循環(huán)語句5.2break語句與continue語句5.3循環(huán)的嵌套5.4幾種循環(huán)語句的比較5.5循環(huán)結(jié)構(gòu)的C程序設(shè)計舉例1.一般格式:goto語句標(biāo)號;如:gotoloop;注:“語句標(biāo)號”是一個標(biāo)識符,可作為無條件轉(zhuǎn)向語句goto的目標(biāo)。語句標(biāo)號的命名規(guī)則與變量名的命名相同,其第一個字符必須為字母或下劃線,如:loop、a1、_abc等。在程序中語句標(biāo)號可以和變量同名。2.功能當(dāng)程序執(zhí)行到goto語句時,就無條件轉(zhuǎn)到語句標(biāo)號所在的位置繼續(xù)執(zhí)行程序。3.特點使程序無條件轉(zhuǎn)向,與if語句一起構(gòu)成循環(huán)(否則構(gòu)成的是死循環(huán),要通過強制中斷才能結(jié)束程序的運行),僅當(dāng)if語句的條件不成立時結(jié)束循環(huán)。5.1.1goto語句4.說明(1)goto語句和其所轉(zhuǎn)向的語句標(biāo)號必須在同一個函數(shù)體中;(2)goto語句常用于在多層循環(huán)的內(nèi)層跳到外層。若從循環(huán)體中跳到循環(huán)外,C語言一般用break語句和continue語句(在§5.5中介紹)跳出本層循環(huán)和結(jié)束本次循環(huán)。(3)goto語句不符合結(jié)構(gòu)化程序設(shè)計準(zhǔn)則,因為無條件轉(zhuǎn)向使程序結(jié)構(gòu)無規(guī)律、可讀性差。一般應(yīng)避免使用goto語句,但如果能大大提高程序的執(zhí)行效率,也可以使用。/*exam5_1*/main(void){inti=1;/*變量i用于統(tǒng)計求積的次數(shù)*/longints=1;/*用于存儲積的變量s先清1*/

loop:if(i<=10){s=s*i;i=i+1;

gotoloop;

}elseprintf(“S=%ld”,s);}loop為語句標(biāo)號。【例5-1】

用goto語句編程,求S=10!的值?!咎崾尽恳胝妥兞縤表示求10的階乘中的“乘數(shù)”,另用一長整型變量s(因考慮s的最終結(jié)果會超過普通整型數(shù)據(jù)的取值范圍,故s變量采用長整型。)表示求10的階乘中的“積”,在條件i<=10時,實現(xiàn)相乘運算,否則,結(jié)束此乘法運算,輸出所求的積(即變量s的值),結(jié)束程序的執(zhí)行。該語句部分稱為循環(huán)體,當(dāng)需要執(zhí)行多條語句時,應(yīng)使用復(fù)合語句。S=3628800

運行結(jié)果為:【例5-2】

用if語句和goto語句構(gòu)成循環(huán),求。/*exam5_2*/main(void){ intsum=0;/*用于存儲和的變量sum先清零*/ inti=1;/*變量i用于統(tǒng)計求和的次數(shù)*/loop:if(i<=100)

{sum=sum+i;/*累加*/

i++;

gotoloop;

}printf("sum=%d",sum);}sum=5050

運行結(jié)果為:該復(fù)合語句部分為循環(huán)體。循環(huán)體內(nèi)一定要有改變循環(huán)變量的語句。[Return]5.1.2while語句

While循環(huán)是一種“當(dāng)型”循環(huán),循環(huán)條件在循環(huán)結(jié)構(gòu)的開頭部分。1.一般格式while(表達(dá)式)

循環(huán)體語句如:while(i<=10){s=s+i;i=i+1;

}

這里,變量i稱為“循環(huán)變量”簡稱為“循變”,循環(huán)條件由循變i設(shè)定。當(dāng)循環(huán)體語句僅由一條語句構(gòu)成時,可以不使用復(fù)合語句形式。2.功能當(dāng)表達(dá)式的值為真時,執(zhí)行while語句中內(nèi)嵌的循環(huán)體語句,否則,執(zhí)行while語句中的下一條語句。程序執(zhí)行過程如圖5-3所示。為循環(huán)體表達(dá)式的結(jié)果?循環(huán)體語句真(1)假(0)while的下一條語句圖5-2while語句的流程圖3.特點:先判斷表達(dá)式的值,后執(zhí)行循環(huán)體語句。

【例5-3】用while語句編程,求S=10!(即:S=1*2*3*4*5*6*7*8*9*10)的值。/*exam5_3*/main(void){ inti=1;/*定義并初始化循環(huán)控制變量*/

longints=1;/*定義并初始化累乘器*/

while(i<=10)/*循環(huán)繼續(xù)條件:i<=10*/ {s=s*i;i++;}/*累乘,循變i增1值*/ printf(“S=%ld”,s);/*輸出累乘結(jié)果*/}為循環(huán)體S=3628800運行結(jié)果為:循環(huán)體內(nèi)一定要有改變循環(huán)變量的語句?!纠?-4】用while語句編程,求的值。/*exam5_4*/main(void){inti=1;/*定義循環(huán)變量i,并初始化為1*/intsum=0;/*將累加器sum初始化為0*/

while(i<=100){ sum=sum+i;/*實現(xiàn)累加*/

i++; /*循環(huán)變量增1*/}printf(“sum=%d”,sum);

}sum=5050運行結(jié)果為:循環(huán)體內(nèi)一定要有改變循環(huán)變量的語句。[Return]5.1.3do-while語句do-while循環(huán)是一種“直到型”循環(huán),循環(huán)條件在循環(huán)結(jié)構(gòu)的結(jié)束部分。1.一般格式do

循環(huán)體語句

while(表達(dá)式);

“while(表達(dá)式);”中的分號不能少。如:do{s=s+i;i=i+1;}while(i<=10);2.功能先執(zhí)行一次指定的循環(huán)體語句,然后判別表達(dá)式,當(dāng)表達(dá)式的值為真時,返回重新執(zhí)行循環(huán)體語句,如此反復(fù),直到表達(dá)式的值為假止,循環(huán)結(jié)束。程序執(zhí)行過程如圖5-4所示。為循環(huán)體3.特點:

先執(zhí)行一次循環(huán)體語句,后判斷循環(huán)條件是否成立,當(dāng)循環(huán)條件表達(dá)式為真時,再執(zhí)行循環(huán)體語句,直到循環(huán)條件表達(dá)式為假時,循環(huán)結(jié)束。表達(dá)式的結(jié)果?循環(huán)體語句假(0)真(1)do-while的下一條語句的下一條語句圖5-3do-while語句的流程圖【例5-5】用do-while語句編程,求S=10!(即:S=1*2*3*4*5*6*7*8*9*10)的值。/*exam5_5*/main(void)

{ inti=1;

longints=1;

do

{s=s*i;i++;

} while(i<=10);

printf(“S=%ld”,s);}為循環(huán)體循環(huán)體內(nèi)一定要有改變循環(huán)變量的語句。循環(huán)繼續(xù)條件S=3628800運行結(jié)果為:while循環(huán)與do-while循環(huán)的比較同一個問題,既可以用while循環(huán)處理,也可以用do-while循環(huán)處理。在一般情況下,用while和do-while語句解決同一問題時,若二者的循環(huán)體部分是一樣的,它們的結(jié)果也一樣。但是當(dāng)while后面的“表達(dá)式”一開始就為“假”時,兩種循環(huán)的結(jié)果不同。這是因為此時while循環(huán)的循環(huán)體不被執(zhí)行,而do-while循環(huán)的循環(huán)體被執(zhí)行一次。要區(qū)分循環(huán)體語句的執(zhí)行次數(shù)。

“比較”示例【例5-6】求i+(i+1)+(i+2)+....+(i+10),其中,i由鍵盤輸入。(用while和do-while兩種語句分別編寫程序)。

while循環(huán)程序do-while循環(huán)程序main(void)main(void){intsum=0,j=0,i;{intsum=0,j=0,i;scanf("%d",&i);

scanf("%d",&i);

while(j<=10)Do

{sum=sum+i+j;

{sum=sum+i+j;

j++;

j++;}}

while(j<=10);printf("%d",sum);printf("%d",sum);}}說明:兩種方法中用到的循環(huán)體是一樣的,且循環(huán)體的執(zhí)行次數(shù)均為10次。不同的是所用的循環(huán)語句不同。特別強調(diào):do-while循環(huán)中的while語句后的分號不能少。[Return]如: for(i=1;i<=100;i++)sum=sum+i;等價于以下while語句:i=1;while(i<=100){sum=sum+i;i++;}5.1.4for語句

在循環(huán)語句中,for語句最為靈活,不僅可用于循環(huán)次數(shù)已經(jīng)確定的情況,也可用于循環(huán)次數(shù)雖不確定、但給出了循環(huán)繼續(xù)條件的情況。

1.一般格式for(表達(dá)式1;表達(dá)式2;表達(dá)式3)

循環(huán)體語句

表達(dá)式1為初始化循環(huán)變量的賦值表達(dá)式;表達(dá)式2為判斷循環(huán)繼續(xù)的條件是否成立的邏輯表達(dá)式;表達(dá)式3為改變循環(huán)變量(增值或減值)的表達(dá)式。執(zhí)行過程示圖10表達(dá)式2的結(jié)果?求解表達(dá)式3求解表達(dá)式1循環(huán)體語句for語句的下一條語句圖5-4for語句的流程圖3.功能先執(zhí)行表達(dá)式1,然后判別表達(dá)式2,當(dāng)表達(dá)式2的值為真時,執(zhí)行循環(huán)體語句及表達(dá)式3;否則,執(zhí)行for語句中的下一條語句。程序執(zhí)行過程如圖5-7所示:

4.特點:是最靈活的循環(huán)語句。先確定循環(huán)變量的初值(表達(dá)式1),判斷條件的值(表達(dá)式2),后執(zhí)行循環(huán)體語句,再更新循環(huán)變量的值?!纠?-7】用for語句編程,求S=10!(即:S=1*2*3*4*5*6*7*8*9*10)的值。/*exam5_7*/main(void)

{inti;/*定義循環(huán)變量類型*/longints=1;/*定義累乘器變量類型,并將累乘器s初始化為1*/

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

s=s*i;printf(“S=%ld”,s);}為循環(huán)體表達(dá)式3改變循環(huán)變量i的值。循環(huán)繼續(xù)條件說明:(1)for語句中的“表達(dá)式1”可省略。

“表達(dá)式1”的作用是設(shè)定循環(huán)初始條件,“表達(dá)式1”省略后應(yīng)在for語句前面設(shè)置循環(huán)初始條件。如:

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

s=s*i;(2)for語句中“表達(dá)式2”一般不能省略。如果省略“表達(dá)式2”,則不判別循環(huán)條件,認(rèn)為循環(huán)條件始終為“真”,循環(huán)將無終止地進行下去。如:for(i=1;;i++)sum=sum+i;等價i=1;while(1){sum=sum+i;i++;}省略表達(dá)式1后,應(yīng)在for語句前給循環(huán)變量賦初值。(3)表達(dá)式3可省略,但程序必須在循環(huán)體語句中設(shè)置循環(huán)變量增值,來修改循環(huán)條件,以確保循環(huán)能正常結(jié)束。如:for(sum=0,i=1;i<=100;){sum=sum+i;i++;}省略表達(dá)式3后,在循環(huán)體內(nèi)改變循環(huán)變量i的值。(4)可省略“表達(dá)式1”和“表達(dá)式3”,只有“表達(dá)式2”。如:i=1;for(;i<=100;){sum=sum+i;i++;}i=1;while(i<=100){sum=sum+i;

i++;}等價(5)“表達(dá)式1”、“表達(dá)式2”、“表達(dá)式3”均省略,是一種簡單的死循環(huán)形式。如:for(;;)循環(huán)體語句while(1)

循環(huán)體語句等價【例5-8】

觀察此程序,寫出程序的運行結(jié)果。/*exam5_8*/main(void)

{inti,s,j=10;

for(s=0,i=1;i<=10;i++,j--)

s=i+j;

printf(“S=%d”,s);}程序的運行結(jié)果為:S=11第1步第2步第4步第3步第5步想一想:若把i<=10改為i<=100結(jié)果會是什么?若把j=10改為j=100呢?[Return]5.2break語句和continue語句

為了使循環(huán)控制更加靈活,C語言提供了break語句和continue語句。5.2.1break語句1.一般格式break;2.功能

強行結(jié)束循環(huán),轉(zhuǎn)向執(zhí)行循環(huán)語句的下一條語句。常用于跳出所在的while、do-while、for循環(huán)語句,提前結(jié)束循環(huán);也可用于跳出所在的多分支switch語句。程序舉例【例5-9】

求面積不大于100,半徑分別為1、2、3……的圓的面積。/*exam5_9*/main(void){ intr; floatpi=3.14;

floatarea;

printf("radiusarea\n");

for(r=1;r<=10;r++) {area=pi*r*r;

if(area>100)break;

printf("%d%f\n",r,area);

}}radiusarea 3.140000 12.560000 28.260000 50.240000 78.500000運行結(jié)果為:利用break語句結(jié)束循環(huán)。5.2.2continue語句1.一般格式continue;2.功能提前結(jié)束本次循環(huán)體的執(zhí)行,接著進行下一次循環(huán)條件的判別。對于for循環(huán),跳過循環(huán)體其余語句,轉(zhuǎn)向循環(huán)變量增量表達(dá)式的計算;對于while和do-while循環(huán),跳過循環(huán)體其余語句,但轉(zhuǎn)向循環(huán)繼續(xù)條件的判定。程序舉例【例5-10】

把100~200之間能被3整除的數(shù)輸出。/*exam5_10*/main(void){ intn;

for(n=100;n<=200;n++){ if(n%3!=0)continue;

printf("%d,",n);

}}若不能被3整除,則結(jié)束本次循環(huán),直接進入循環(huán)繼續(xù)條件(n<=200嗎?)的判斷。運行結(jié)果為:102,105,108,111,114,117,120,…(略)break語句的常用形式while(表達(dá)式1){……if(表達(dá)式2)break;

……}continue語句的常用形式while(表達(dá)式1){……if(表達(dá)式2)continue;

……}5.2.3break語句和continue語句的區(qū)別和聯(lián)系注意:

(1)break語句能用于循環(huán)語句和switch語句中,continue語句只能用于循環(huán)語句中。(2)使用break語句跳出循環(huán);continue語句則結(jié)束本次循環(huán)體的執(zhí)行,進入下一次循環(huán)。(3)循環(huán)嵌套時,break和continue只影響包含它們的最內(nèi)層循環(huán),與外層循環(huán)無關(guān)。

若表達(dá)式2成立,則結(jié)束整個循環(huán)。若表達(dá)式2成立,則轉(zhuǎn)去下一次循環(huán)繼續(xù)條件(表達(dá)式1)判斷[Return]5.3循環(huán)的嵌套1.什么是循環(huán)的嵌套循環(huán)的嵌套:指一個循環(huán)(稱為“外循環(huán)”)體內(nèi)又包含另一個完整的循環(huán)(稱為“內(nèi)循環(huán)”)結(jié)構(gòu)。while、do—while、for循環(huán)可互相嵌套(循環(huán)嵌套只能包含,不能交叉),構(gòu)成多重循環(huán)。以下為循環(huán)嵌套的六種形式。(1)由while?while構(gòu)成的循環(huán)嵌套,其中第一個while循環(huán)為外循環(huán),第二個while循環(huán)為內(nèi)循環(huán)。如:while(條件1){ ……

while(條件2){

…… }

……}外循環(huán)內(nèi)循環(huán)(2)由do-while?do-while構(gòu)成的循環(huán)嵌套,其中第一個do-while循環(huán)為外循環(huán),第二個do-while循環(huán)為內(nèi)循環(huán)。如:do{……do{……

}while(條件1);

……}while(條件2);外循環(huán)內(nèi)循環(huán)(3)由for?for構(gòu)成的循環(huán)嵌套,其中第一個for循環(huán)為外循環(huán),第二個for循環(huán)為內(nèi)循環(huán)。如:for(……){ …… for(……){……}

……}外循環(huán)內(nèi)循環(huán)(4)由while?do-while構(gòu)成的循環(huán)嵌套,其中第一個while循環(huán)為外循環(huán),第二個do-while循環(huán)為內(nèi)循環(huán)。如:While(條件1){……do{……}while(條件2);

……}(5)由for—while構(gòu)成的循環(huán)嵌套,其中第一個for循環(huán)為外循環(huán),第二個while循環(huán)為內(nèi)循環(huán)。如:for(……){……While(條件){……}

……}外循環(huán)內(nèi)循環(huán)外循環(huán)內(nèi)循環(huán)(6)由do-while?for構(gòu)成的循環(huán)嵌套,其中第一個do-while循環(huán)為外循環(huán),第二個for循環(huán)為內(nèi)循環(huán)。如:do{

……

for(……)

{……}

……}while(條件);外循環(huán)內(nèi)循環(huán)

多重循環(huán)的使用與單一循環(huán)完全相同,但應(yīng)特別注意內(nèi)、外層循環(huán)條件的變化。2.特點

外循環(huán)每執(zhí)行一次,內(nèi)循環(huán)就從頭至尾執(zhí)行完整個循環(huán)。

注意:區(qū)分內(nèi)、外循環(huán)中循環(huán)體的執(zhí)行次數(shù)!應(yīng)用舉例【提示】該三角形共有7層,為了說明方便,現(xiàn)順次稱為第0,1,2,3,4,5,6層,按照三角形構(gòu)成特點,可分為頂點、中間、底邊三大部分,其中:【例5-11】在屏幕上繪制如圖5-11所示的直角三角形,并使其頂點恰好在屏幕當(dāng)前行居中位置。******************圖5-11直角三角形

三角形頂點部分(共1層),為一個星號“*”,且位于屏幕的居中位置(即:第40列),是三角形起始行;三角形中間部分(共5層),其第i層(i=1,2,3,4,5)的起點為一個星號“*”,且位于三角形起始行的第i行、40-i列,終點也為一個星號“*”,且位于屏幕同行、40列;三角形底邊部分(共1層),為連續(xù)七個星號“*”,且其起點的星號位于屏幕第7行、第34列。采用一個雙重循環(huán)嵌套來實現(xiàn)該直角三角形圖形的中間部分星號輸出,外循環(huán)控制圖形輸出的行數(shù),內(nèi)循環(huán)控制每行圖形符號“*”輸出的個數(shù),其中:定義i為外循環(huán)的循變,取值范圍為1~5;定義j為內(nèi)循環(huán)的循變,取值范圍為1~(40-i)(注:不能等于40-i。)采用一個單重循環(huán)來實現(xiàn)該直角三角形除起始點外剩余的底邊部分星號輸出,循變?yōu)閕,取值范圍為1~6。/*exam5_11*/main(void){inti,j;

clrscr();/*清屏*/printf(“%41s”,“*\n”);/*頂點星號居中顯示*/for(i=1;i<=5;i++)/*輸出中間層起點、終點星號*/{for(j=1;j<40-i;j++)printf(“

”);/*輸出中間層起點星號前的空格*/printf(“*”);/*輸出中間層起點星號*/for(j=1;j<=i-1;j++)printf(“

”);/*輸出中間層起點星號與終點星號間的空格*/ printf(“*\n”);/*輸出中間層終點星號*/}printf(“%34s”,“*”);/*輸出底邊起始星號*/for(i=1;i<=6;i++)printf(“*”);/*輸出底邊剩余星號*/printf(“\n”);/*換行*/}內(nèi)循環(huán)外循環(huán)為什么不是“40”?[Return]5.4幾種循環(huán)的比較1.goto、while、do-while、

for語句的區(qū)別

語句名循變初值的設(shè)置循變增值的設(shè)置應(yīng)用廣度Goto

不常用Whilewhile之前循環(huán)體內(nèi)常用do-whiledo-while之前循環(huán)體內(nèi)常用forfor的表達(dá)式1for的表達(dá)式3最常用2.幾種循環(huán)的比較四種循環(huán)(while、do-while、for、goto)都可以用來處理同一個問題,一般情況下它們可以相互代替,但應(yīng)盡量少用goto。while、for循環(huán)先判斷循環(huán)條件表達(dá)式,后執(zhí)行循環(huán)體;而do-while循環(huán)則是先執(zhí)行循環(huán)體,后判斷循環(huán)條件表達(dá)式。do-while語句比較適用于處理:不論條件是否成立,先執(zhí)行1次循環(huán)體語句組的情況。除此之外,do-while語句能實現(xiàn)的,for語句也能實現(xiàn),而且更簡潔。5.5循環(huán)結(jié)構(gòu)的C程序設(shè)計舉例【例5-13】

從2個紅球、3個白球、4個黑球中任意取出5個球,且其中必須有白球,編寫程序輸出所有可能方案?!咎崾尽恳腚p重循環(huán),其中:外循環(huán)控制紅球的取球情況,內(nèi)循環(huán)控制白球的取球情況,在內(nèi)循環(huán)的循環(huán)體內(nèi)確定黑球的取球情況;定義整型變量i為外循環(huán)的循環(huán)變量,表示紅球的取球數(shù),其初值為0,終值為2;定義整型變量j為內(nèi)循環(huán)的循環(huán)變量,表示白球的取球數(shù),其初值為1,終值為3;再定義整型變量k表示黑球的取球數(shù),其取值范圍為0至4;執(zhí)行內(nèi)循環(huán)時,必須滿足:i+j+k==5。程序如下/*exam5_13*/main(void){inti,j,k;

printf(“red:white:black:\n”);

for(i=0;i<=2;i++)

for(j=1;j<=3;j++)

{ k=5-i-j;

if(k>=0&&k<=4) printf(“%4d%10d%10d\n”,i,j,k);

}}確定黑球的個數(shù)輸出可能的方案red:white:black:014023032113122(略)運行結(jié)果:【例5-15】打印如下圖所示的九九乘法表* 1 2 3 4 5 6 7 8 91 1 2 3 4 5 6 7 8 922 4 6 8 10 12 14 16 1833 6 9 12 15 18 21 24 2744 8 12 16 20 24 28 32 3655 10 15 20 25 30 35 40 4566 12 18 24 30 36 42 48 5477 14 21 28 35 42 49 56 6388 16 24 32 40 48 56 64 7299 18 27 36 45 54 63 72 81提示【思路導(dǎo)航】編寫程序時應(yīng)包括以下三部分:(1)s1:打印表頭(即1至9九個數(shù)字);可以看成打印一個變量i的值,其初值為1,每次加1,直到9為止。此時使用for結(jié)構(gòu)最為合適。設(shè)每個數(shù)字區(qū)占4個字符空間,則很容易寫出s1:for(i=1;i<=9;i++)printf(“%4d”,i);(2)s2:打印分隔線;考慮分隔線的總寬度與表頭同寬,則可以用同樣的結(jié)構(gòu)寫出s2:for(i=1;i<=37;i++)printf(“%c”,‘_’);

(3)s3:打印表體;表體共九行,所以首先考慮一個打印九行的算法s3:for(i=1;i<=9;i++){

打印第i行

}由于每行都有十個數(shù)字,故打印第i行可以寫出為s3.1:printf(“%d”,i);for(j=1;j<=9;j++){

打印第j個數(shù)

}“打印第j個數(shù)”即在第i行的第j個輸出項上打印一個數(shù),大小為i*j,占4個字寬,因此可寫為:

printf(“%4d”,i*j);另考慮到每行在最后一個數(shù)字輸出后須換行,故在每個單重循環(huán)和雙重循環(huán)的內(nèi)循環(huán)結(jié)束后,寫出如下的一條語句實現(xiàn)換行功能:

printf(“\n”);

打印第

i行的第1個數(shù)打印第

i行的后9個數(shù)程序如下/*exam5_14*/main(void){

溫馨提示

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

評論

0/150

提交評論