c語(yǔ)言 第6章-循環(huán)結(jié)構(gòu)程序設(shè)計(jì)(1)課件_第1頁(yè)
c語(yǔ)言 第6章-循環(huán)結(jié)構(gòu)程序設(shè)計(jì)(1)課件_第2頁(yè)
c語(yǔ)言 第6章-循環(huán)結(jié)構(gòu)程序設(shè)計(jì)(1)課件_第3頁(yè)
c語(yǔ)言 第6章-循環(huán)結(jié)構(gòu)程序設(shè)計(jì)(1)課件_第4頁(yè)
c語(yǔ)言 第6章-循環(huán)結(jié)構(gòu)程序設(shè)計(jì)(1)課件_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第6章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)本章的學(xué)習(xí)重點(diǎn)和難點(diǎn)循環(huán)的概念循環(huán)的基本語(yǔ)句結(jié)構(gòu)和流程循環(huán)在常用算法中的應(yīng)用引言循環(huán)結(jié)構(gòu)是程序的三大算法結(jié)構(gòu)之一,是相對(duì)比較難理解和運(yùn)用的結(jié)構(gòu),很多問題常常要以它作為基礎(chǔ)來的解決,因此,是否能掌握好循環(huán)結(jié)構(gòu)是非常關(guān)鍵的學(xué)習(xí)循環(huán)時(shí)首先,弄清楚循環(huán)的概念,以及具體循環(huán)語(yǔ)句結(jié)構(gòu)的流程(可以利用單步調(diào)試工具)第二步應(yīng)學(xué)會(huì)根據(jù)已有的算法流程圖結(jié)構(gòu),去套用書中循環(huán)語(yǔ)句結(jié)構(gòu)來解決問題第三步,學(xué)會(huì)自己分析問題,將問題中的某些重復(fù)性工作,抽取出來,找出其中的規(guī)律,畫出流程圖,最后用某種適合的循環(huán)語(yǔ)句實(shí)現(xiàn)第四步,通過學(xué)習(xí),積累經(jīng)典算法,學(xué)會(huì)將這些算法融會(huì)貫通,運(yùn)用到實(shí)際問題的解決*引例循環(huán)結(jié)構(gòu)就是這樣一種專門用于實(shí)現(xiàn)有規(guī)律的重復(fù)性操作的算法結(jié)構(gòu),是程序基本的三大算法結(jié)構(gòu)之一。循環(huán)——重復(fù)地執(zhí)行某些操作。計(jì)算機(jī)語(yǔ)言中的循環(huán)就是指在指定的條件下,重復(fù)執(zhí)行一組語(yǔ)句;這組被重復(fù)執(zhí)行的語(yǔ)句就稱為循環(huán)體,而指定的條件就稱作循環(huán)條件

*引例要求輸出顯示6行星號(hào)分析:要求重復(fù)6次輸出一行由16個(gè)星號(hào)所構(gòu)成的字符串,因此,循環(huán)條件就是輸出的行數(shù)<6,重復(fù)執(zhí)行的循環(huán)體就是printf("****************\n");#include<stdio.h>intmain(){inti=0; //定義計(jì)數(shù)器變量i來記錄目前已輸出的行數(shù)while

(i<6)

//當(dāng)輸出行數(shù)未達(dá)到6行,反復(fù)執(zhí)行下面語(yǔ)句

{

printf("****************\n");i++; //每輸出一行信息,計(jì)數(shù)器i累加1

} //返回到while行return0;}*引例要求輸出n行星號(hào)分析:要求輸出的16個(gè)星號(hào)的行數(shù)由用戶決定

#include<stdio.h>intmain(){inti=0,n; //定義變量n記錄用戶輸入的指定行數(shù)

scanf("%d",&n);

//接收用戶輸入的行數(shù)while

(i<n)

//當(dāng)輸出行數(shù)未達(dá)到n行,反復(fù)執(zhí)行下面語(yǔ)句

{

printf("****************\n");i++; //每輸出一行信息,計(jì)數(shù)器i累加1

} //返回到while行return0;}循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)用while語(yǔ)句實(shí)現(xiàn)循環(huán)用do-while語(yǔ)句實(shí)現(xiàn)循環(huán)用for語(yǔ)句實(shí)現(xiàn)循環(huán)循環(huán)的嵌套跳轉(zhuǎn)語(yǔ)句:break和continue語(yǔ)句當(dāng)型循環(huán)格式1while型while(循環(huán)條件)

循環(huán)體True循環(huán)條件循環(huán)體False要求輸出顯示n行星號(hào)#include<stdio.h>intmain(){inti=0,n;

scanf("%d",&n);

while

(i<n)

{

printf("****************\n");i++;

} //返回到while行return0;}當(dāng)型循環(huán)“循環(huán)體”可以由若干條語(yǔ)句構(gòu)成;“循環(huán)條件”通常是一個(gè)關(guān)系或邏輯表達(dá)式,其值為True或False。兩種格式的while循環(huán)都表示:僅當(dāng)循環(huán)條件成立,即為真“True”時(shí),重復(fù)執(zhí)行循環(huán)體,否則循環(huán)條件不成立,即為假“False”時(shí),結(jié)束循環(huán)格式1是每一次進(jìn)入循環(huán),先判斷循環(huán)條件是否為“True”,后決定是否進(jìn)入執(zhí)行循環(huán)體;格式2是先執(zhí)行一次循環(huán)體,后進(jìn)行判別循環(huán)條件是否為真“True”,以決定是否再次進(jìn)入執(zhí)行循環(huán)體。格式1的循環(huán)有可能一次也沒進(jìn)入循環(huán)體執(zhí)行,格式2是不管循環(huán)條件是否為真,至少執(zhí)行一次循環(huán)體*例題6-2求1+2+3+…+n求多項(xiàng)數(shù)據(jù)之和,整個(gè)累加過程一直在重復(fù)執(zhí)行sum=sum+i,其中累加項(xiàng)i的變化規(guī)律為:

i=i+1,i的初值為1,終值為n,即當(dāng)i的值<=n進(jìn)行累加操作sum+i→sum開始結(jié)束FalseTrue0→sum1→ii≤n輸出求和結(jié)果sumi+1→i輸入n*例題6-2求1+2+3…+n程序代碼設(shè)計(jì):循環(huán)條件:當(dāng)i的值<=n進(jìn)行累加;循環(huán)體:sum=sum+i,i=i+1#include<stdio.h>intmain(){ inti=1,sum=0,n;

scanf("%d",&n);

while(i<=n)

{

sum=sum+i;

i++;

}

printf("%d",sum); return0;}sum+i→sum開始結(jié)束FalseTrue0→sum1→ii≤n輸出求和結(jié)果sumi+1→i輸入n例6-2用while循環(huán)求1+2+3…+n

#include<stdio.h>intmain(){

inti=1,sum=

0,n;

scanf("%d",&n);

while(i<=n)

{

sum=sum+i;i++;

}

printf("%d",sum);return0;}循環(huán)初值循環(huán)終值循環(huán)變量增值循環(huán)條件循環(huán)體inti=2,sum=

1,n;scanf("%d",&n);while(i<=n){sum=sum+i;i++;}改寫inti=0,sum=

0,n;scanf("%d",&n);while(i<n){i++;sum=sum+i;}改寫例6-5用do-while循環(huán)求1+2+3…+n

#include<stdio.h>intmain(){inti=1,sum=

0,n;

scanf("%d",&n);

do

{

sum=sum+i;i++;

}while(i<=n);

printf("%d",sum);return0;}#include<stdio.h>intmain(){inti=1,sum=

0,n;

scanf("%d",&n);

while(i<=n)

{

sum=sum+i;i++;

}

printf("%d",sum);return0;}當(dāng)型循環(huán)在循環(huán)體中,至少要有一條語(yǔ)句使得循環(huán)條件趨向于假“False”,即使循環(huán)語(yǔ)句在有限的時(shí)間內(nèi)執(zhí)行完畢,否則將會(huì)出現(xiàn)“死循環(huán)”程序運(yùn)行時(shí)出現(xiàn)“死循環(huán)”,按break中止(中斷)程序運(yùn)行,然后進(jìn)行調(diào)試將循環(huán)條件中影響循環(huán)次數(shù)的變量,稱為循環(huán)控制變量[演示]*例6-20采用歐幾里德算法求解兩個(gè)自然數(shù)的最大公約數(shù)的程序

算法分析:“歐幾里德算法”①輸入兩個(gè)自然數(shù)m、n②求m除以n的余數(shù)r③m←n④n←r⑤若r≠0,則轉(zhuǎn)②,否則轉(zhuǎn)⑥⑥輸出m和n的最大公約數(shù)mFalse輸入兩個(gè)自然數(shù)m,nr=m%nm=nn=rr

0輸出最大公約數(shù)m開始結(jié)束True*例6-20設(shè)計(jì)采用歐幾里德算法求解兩個(gè)自然數(shù)的最大公約數(shù)的程序程序代碼設(shè)計(jì):輸入的數(shù)據(jù)M和N要求是自然數(shù),所以在程序中應(yīng)加入對(duì)數(shù)據(jù)的合法性進(jìn)行檢驗(yàn)的部分考慮到程序的應(yīng)用范圍,數(shù)據(jù)類型可選用整型根據(jù)算法流程圖可知這是一個(gè)循環(huán)結(jié)構(gòu):循環(huán)條件是r<>0,

r是循環(huán)控制變量,循環(huán)體是

r=m%n;m=n;n=r;False輸入兩個(gè)自然數(shù)m,nr=m%nm=nn=rr

0輸出最大公約數(shù)m開始結(jié)束True*例6-20#include<stdio.h>intmain(){

intn,m,r;scanf(“%d,%d”,&m,&n);

do

//求最大公約數(shù)

{r=m%n;m=n;n=r;

}while(r!=0)printf(“GCD=%d\n",m);

return0;}while(r!=0)

Nor=m%n;m=n;n=r;*例6-20最大公約數(shù)和最小公倍數(shù)

若已知整數(shù)x和y的最大公約數(shù)是k,則它們的

最小公倍數(shù)是x*y/k

求兩個(gè)整數(shù)最大公約數(shù)的兩種方法。

(1)輾轉(zhuǎn)相除法(歐幾里德算法)

(2)相減法

1.最大公約數(shù)和最小公倍數(shù)(2)相減法。遞推公式如下:兩個(gè)數(shù)中從大數(shù)中減去小數(shù),所得的差若與小數(shù)相等,則該數(shù)為最大公約數(shù)。若不等,對(duì)所得的差和小數(shù),繼續(xù)從大數(shù)中減去小數(shù),……,直到兩個(gè)數(shù)相等為止。當(dāng)型循環(huán)例6-19驗(yàn)證谷角猜想。對(duì)于任意一個(gè)自然數(shù)n,若n為偶數(shù),則將其除以2;若n為奇數(shù),則將其乘以3,然后再加1。如此經(jīng)過有限次運(yùn)算后,總可以得到自然數(shù)1。

分析:由于不能確定要多少步才能結(jié)束運(yùn)算,因此本題中采用當(dāng)型while循環(huán)語(yǔ)句實(shí)現(xiàn)。使用變量n存放該正整數(shù),每次重新計(jì)算出的新值仍然存放在n中。當(dāng)n未達(dá)到1時(shí)繼續(xù)執(zhí)行運(yùn)算,當(dāng)n等于1時(shí)結(jié)束循環(huán)。

例6-19代碼: intn; printf(“請(qǐng)輸入一個(gè)正整數(shù):”); scanf(“%d”,&n); printf(“%d”,n); if(n>0) while(n!=1) { if(n%2==1)n=n*3+1;elsen=n/2; printf(“->%d”,n);} elseprintf(“輸入數(shù)據(jù)錯(cuò)誤\n”);*例題設(shè)計(jì)一個(gè)小程序,能夠?qū)崿F(xiàn)接收若干的專家的考評(píng)打分,輸入-1表示打分結(jié)束,最后計(jì)算出平均考評(píng)分

分析:要求出專家的平均考評(píng)分Average,所以先得求出專家的考評(píng)總分Total,然后再除以考評(píng)分個(gè)數(shù)Num。而考評(píng)總分的計(jì)算,就是要將每個(gè)專家的考評(píng)打分Mark依次累加專家的打分并非一次性給出,而是在程序運(yùn)行時(shí),由用戶依次輸入,因此要進(jìn)行考評(píng)總分的計(jì)算,必須先接收一個(gè)用戶輸入的專家打分,只要該專家打分不為-1(表示結(jié)束輸入),就進(jìn)行累加這個(gè)考評(píng)打分,然后再繼續(xù)接收下一個(gè)用戶輸入的專家打分……重復(fù)若干次,直到用戶輸入的數(shù)據(jù)為-1為止

*例題設(shè)計(jì)一個(gè)小程序,能夠?qū)崿F(xiàn)接收若干的專家的考評(píng)打分,輸入-1表示打分結(jié)束,最后計(jì)算出平均考評(píng)分

界面設(shè)計(jì):由于要接收的數(shù)據(jù)無(wú)法預(yù)知其個(gè)數(shù),所以采用輸入函數(shù)scanf,結(jié)合循環(huán)實(shí)現(xiàn)輸入一個(gè)專家打分Mark總分累加Total=Total+Mark輸出平均考評(píng)分Average開始結(jié)束FalseTrue總考評(píng)分清零Total=0Mark<>-1輸入下一個(gè)專家打分MarkAverage=Total/Num考評(píng)分個(gè)數(shù)清零Num=0考評(píng)分個(gè)數(shù)累加Num=Num+1*例題設(shè)計(jì)一個(gè)小程序,能夠?qū)崿F(xiàn)接收若干的專家的考評(píng)打分,輸入-1表示打分結(jié)束,最后計(jì)算出平均考評(píng)分

程序代碼設(shè)計(jì):根據(jù)算法流程圖可知這是一個(gè)循環(huán)結(jié)構(gòu):循環(huán)條件是專家打分Mark-1,Mark是循環(huán)控制變量,循環(huán)體是Total=Total+Mark;Num=Num+1;輸入下一個(gè)專家打分Mark,于是,可以套用上述循環(huán)語(yǔ)句格式1輸入一個(gè)專家打分Mark總分累加Total=Total+Mark輸出平均考評(píng)分Average開始結(jié)束FalseTrue總考評(píng)分清零Total=0Mark

-1輸入下一個(gè)專家打分MarkAverage=Total/Num考評(píng)分個(gè)數(shù)清零Num=0考評(píng)分個(gè)數(shù)累加Num=Num+1*例題main(){intnum;floataverage,mark,total;total=0.0;num=0;printf("請(qǐng)輸入一個(gè)專家考評(píng)分:");scanf("%d",&mark);

while(mark!=-1)

{total=total+mark;num=num+1;

printf("請(qǐng)輸入一個(gè)專家考評(píng)分:");scanf("%d",&mark);}average=total/num;printf("%d位專家的平均考評(píng)分為:%.2f",num,average);}scanf("%d",&mark);if(mark!=-1){do

{ total=total+mark;num=num+1;

printf("請(qǐng)輸入一個(gè)專家考評(píng)分:");scanf("%d",&mark);

}while(mark!=-1);average=total/num;;printf("%d位專家的平均考評(píng)分為:%.2f",num,average);}else

printf("請(qǐng)輸入正確的專家考評(píng)分");練習(xí):從鍵盤輸入各學(xué)生成績(jī),并對(duì)成績(jī)不及格(60分以下)的學(xué)生人數(shù)進(jìn)行計(jì)數(shù),直到輸入的成績(jī)?yōu)樨?fù)為止,最后輸出成績(jī)不及格的學(xué)生人數(shù)。計(jì)數(shù)count=0輸出count輸入成績(jī)grade輸入成績(jī)gradecount=count+1當(dāng)grade>=0.0grade<60.0YesNo#include<stdio.h>intmain(){intcount=0;floatgrade;

scanf("%f",&grade);

while(grade>=0.0){

if(grade<60.0)count+=1;

scanf("%f",&grade);

}printf("count=%d\n",count);return0;}for循環(huán)結(jié)構(gòu)語(yǔ)句格式

for(初始動(dòng)作;條件;每輪的動(dòng)作)

{

循環(huán)體 }初始動(dòng)作——通常通過賦值表達(dá)式完成某些變量(循環(huán)控制變量)的初始值設(shè)定條件——循環(huán)條件,當(dāng)條件為真,執(zhí)行循環(huán)體,條件為假,結(jié)束for循環(huán)每輪動(dòng)作——通常用于改變循環(huán)控制變量的值循環(huán)體——可以由多條語(yǔ)句構(gòu)成,僅當(dāng)循環(huán)體只有一條語(yǔ)句構(gòu)成時(shí),大括號(hào)可以省略。格式

for(初始動(dòng)作;條件;每輪的動(dòng)作)

{

循環(huán)體 }初始動(dòng)作、條件、每輪的動(dòng)作都是表達(dá)式For循環(huán)語(yǔ)句執(zhí)行流程:(1)執(zhí)行初始動(dòng)作

(2)如果條件值為非0,就重復(fù)執(zhí)行(3)循環(huán)體和(4)每輪的動(dòng)作,直到條件值為0時(shí)止。for循環(huán)結(jié)構(gòu)語(yǔ)句for循環(huán)結(jié)構(gòu)語(yǔ)句的執(zhí)行流程圖初始動(dòng)作循環(huán)體每輪的動(dòng)作滿足條件?falsetrueintc=0,i;for(i=2;i<=18;i+=3) c++;

for循環(huán)結(jié)構(gòu)語(yǔ)句for(初始動(dòng)作;條件;每輪的動(dòng)作)

{ 循環(huán)體 }第幾次循環(huán)ci0215283114145176200123456<=18i=i+3上述for的循環(huán)次數(shù)

=(18-2)/3+1=6循環(huán)次數(shù)的計(jì)算公式

(終值-初值)/步長(zhǎng)+1for循環(huán)結(jié)構(gòu)語(yǔ)句循環(huán)次數(shù)的計(jì)算公式(終值-初值)/步長(zhǎng)+1當(dāng)循環(huán)變量在循環(huán)體內(nèi)改變(被重新賦值),則會(huì)影響和改變循環(huán)次數(shù),此時(shí)循環(huán)次數(shù)計(jì)算公式無(wú)效intc=0,i;

for(i=2;i<=18;i+=3)

{c=c++;

i=i+2;

}第幾次循環(huán)ci021429314419012347121722<=18i=i+3for循環(huán)結(jié)構(gòu)語(yǔ)句初始動(dòng)作是在真正進(jìn)入for循環(huán)執(zhí)行循環(huán)體之前就計(jì)算確定。條件和每輪的動(dòng)作表達(dá)式中所包含的變量在循環(huán)體內(nèi)被改變,會(huì)影響循環(huán)次數(shù),即每次執(zhí)行完循環(huán)體,都重新計(jì)算。intc=18,i;

for(i=2;i<=c;i+=3) c++;第幾次循環(huán)ci02152831141451762018192021222324for循環(huán)等價(jià)于:初始動(dòng)作;while(條件) { 循環(huán)體; 每輪的動(dòng)作; }725238262692729閱讀程序,寫出下列循環(huán)的運(yùn)行次數(shù),并給出執(zhí)行結(jié)果。(注意輸出格式)main(){ inta=2,b=10,c=1,i; for(i=c;i<=2*b;i+=a) { a=a+2; i=i+1; c=2*c; if(a>=10)break; b=b–3; } printf(“i=%d,a=%d,b=%d,c=%d\n”,i,a,b,c);}第幾次循環(huán)aicb0211011422762674413*例題for循環(huán)實(shí)現(xiàn):要求輸出顯示6行星號(hào)分析:循環(huán)體:Print"****************",循環(huán)變量i表示輸出行,從1變化到6,即循環(huán)變量i的初值為1,終值為6,步長(zhǎng)為1,循環(huán)次數(shù)為6#include<stdio.h>intmain(){inti; for(i=0;i<6;i++)

printf("****************\n");return0;}對(duì)比f(wàn)or循環(huán)和while循環(huán),很明顯for循環(huán)更適合、更方便的實(shí)現(xiàn)能預(yù)知循環(huán)次數(shù)(重復(fù)操作次數(shù))的問題

例題求1+2+3…+n分析:求多項(xiàng)數(shù)據(jù)之和,首先得設(shè)置一個(gè)累加器sum,存放累加結(jié)果。根據(jù)一般人們求和的步驟,多個(gè)數(shù)據(jù)累加的過程如下:sum0=0sum1=sum0+1sum2=sum1+2sum3=sum2+3………………sumn=sumn-1+n歸納:求多項(xiàng)數(shù)據(jù)之和,整個(gè)累加過程一直在重復(fù)執(zhí)行sum=sum+i,一共重復(fù)n次,其中累加項(xiàng)i的變化規(guī)律為:i=i+1,i的初值為1,終值為n,即當(dāng)i的值超過n結(jié)束累加操作例題求1+2+3…+n程序代碼設(shè)計(jì):循環(huán)體是sum=sum+i,而累加項(xiàng)i的變化恰好與累加次數(shù)一致,所以可以利用累加項(xiàng)i來控制循環(huán)次數(shù),即將i兼用做循環(huán)變量,初值為1,終值為n,循環(huán)改變量1#include<stdio.h>intmain(){intsum,i,n;scanf("%d",&n);for(i=1,sum=0;i<=n;i++)

sum=sum+i;//累加printf("1+...+%d=%d",n,sum);return0;}求1~n之間所有的偶數(shù)之和intsum=0,i=1,n;scanf("%d",&n);for(;i<=n;) {

sum=sum+i;//累加

i++; }

#include<stdio.h>intmain(){intsum,i,n;scanf("%d",&n);

for(i=1,sum=0;i<=n;i++)

sum=sum+i;//累加printf("1+...+%d=%d",n,sum);return0;}例題求1~n之間所有的偶數(shù)之和思路1:循環(huán)變量i,初值為1,終值為n,循環(huán)控制變量的改變量為1;循環(huán)體:當(dāng)i是偶數(shù),則累加sum=sum+iif(i%2==0)

sum=sum+i;//偶數(shù)累加#include<stdio.h>intmain(){intsum,i,n;scanf("%d",&n);

for(i=1,sum=0;i<=n;i++)

sum=sum+i;//累加printf("1+...+%d=%d",n,sum);return0;}例題8-5求1~n之間所有的偶數(shù)之和思路2:設(shè)置累加項(xiàng)i初值為2,i的變化規(guī)律為i=i+2,即循環(huán)控制變量的改變量為2;循環(huán)體:累加sum=sum+ifor(i=2,sum=0;i<=n;i+=2)若求1*2*3…*n,即n!例題從用戶輸入的連續(xù)的一串字符信息中,分類統(tǒng)計(jì)大寫、小寫字母、數(shù)字字符和非數(shù)字字母的數(shù)量分析[逐步求精]:對(duì)輸入的每一個(gè)字符都要進(jìn)行分類判斷,并進(jìn)行統(tǒng)計(jì),一共要重復(fù)進(jìn)行字符串長(zhǎng)度次。因此,循環(huán)體就是針對(duì)于一個(gè)字符的分類判斷統(tǒng)計(jì),而循環(huán)次數(shù)就是字符串長(zhǎng)設(shè)置循環(huán)控制變量i,控制分類判斷統(tǒng)計(jì)字符,表示從字符串的第一個(gè)字符,依次判斷統(tǒng)計(jì)到最后一個(gè)字符。for(;(i=getchar())!='\n';)//輸入一串字符,回車結(jié)束//對(duì)每個(gè)字符進(jìn)行分類判斷和統(tǒng)計(jì)?例題從用戶輸入的連續(xù)的一串字符信息中,分類統(tǒng)計(jì)大寫、小寫字母、數(shù)字字符和非數(shù)字字母的數(shù)量程序代碼設(shè)計(jì):若i表示輸入的一個(gè)字符,如何判斷?統(tǒng)計(jì)?分類統(tǒng)計(jì)則可以通過分別設(shè)置三個(gè)計(jì)數(shù)器,進(jìn)行累加if多分支結(jié)構(gòu)語(yǔ)句實(shí)現(xiàn)分類判斷if(i>='A'&&i<='Z'||i>='a'&&i<='z') ch=ch+1; //字母計(jì)數(shù)器ch+1elseif(i>='0'&&i<='9') digital=digital+1; //數(shù)字計(jì)數(shù)器digital+1else other=other+1; //其他字符計(jì)數(shù)器other+1例題從用戶輸入的連續(xù)的一串字符信息中,分類統(tǒng)計(jì)大寫、小寫字母、數(shù)字字符和非數(shù)字字母的數(shù)量程序代碼設(shè)計(jì):chari;intch=0,other=0,digital=0;for(;(i=getchar())!='\n';)

if(i>='A'&&i<='Z'||i>='a'&&i<='z') ch=ch+1; //字母計(jì)數(shù)器ch+1

elseif(i>='0'&&i<='9') digital=digital+1; //數(shù)字計(jì)數(shù)器digital+1

else other=other+1; //其他字符計(jì)數(shù)器other+1printf("char=%d,digital=%d,others=%d\n",ch,digital,other);

選擇循環(huán)語(yǔ)句的Tipsfor中每一個(gè)表達(dá)式都是可以省略的 for(;條件;)==while(條件)如果有固定次數(shù)(或知道變化的范圍),用for循環(huán)如果必須執(zhí)行一次,用do-while循環(huán)其他情況用while循環(huán)死循環(huán)永遠(yuǎn)不會(huì)退出的循環(huán)為死循環(huán)for(;;) {}while(1) {}do

{ }while(1);一般情況下,要極力避免死循環(huán)絕大多數(shù)程序不需要死循環(huán)。如果出現(xiàn),往往都是bug。時(shí)間過長(zhǎng)的循環(huán)會(huì)造成“假死”效果,也要考慮解決。嵌套循環(huán)循環(huán)的嵌套:一個(gè)循環(huán)體內(nèi)包含了另一個(gè)完整的循環(huán)結(jié)構(gòu)。嵌套循環(huán)的跳轉(zhuǎn)禁止:從外層跳入內(nèi)層跳入同層的另一循環(huán)向上跳轉(zhuǎn)循環(huán)嵌套 for(i=1;i<=9;i++) { for(j=1;j<=9;j++) printf("%d*%d=%d\t",i,j,i*j);

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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)論