版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
算法與數(shù)據(jù)結(jié)構(gòu)任課教師:戴韡C語(yǔ)言根底本章講述C語(yǔ)言的根本語(yǔ)法變量定義變量運(yùn)算循環(huán)語(yǔ)句判斷語(yǔ)句輸入輸出語(yǔ)句循環(huán)語(yǔ)句三種常見(jiàn)的循環(huán)語(yǔ)句whiledo-whilefor
用while語(yǔ)句實(shí)現(xiàn)循環(huán)while語(yǔ)句用來(lái)實(shí)現(xiàn)“當(dāng)型〞循環(huán)結(jié)構(gòu)。一般形式:while(表達(dá)式)語(yǔ)句當(dāng)表達(dá)式為非0值時(shí),執(zhí)行while語(yǔ)句中的內(nèi)嵌語(yǔ)句。其特點(diǎn)是:先判斷表達(dá)式,后執(zhí)行語(yǔ)句。例1.求1到100的和
#include<stdio.h>
voidmain()
{
inti,sum=0;
i=1;
while(i<=100)
{
sum=sum+i;
i++;
}
printf(″%d\n″,sum);
}說(shuō)明:(1)循環(huán)體如果包含一個(gè)以上的語(yǔ)句,應(yīng)該用花括弧括起來(lái),以復(fù)合語(yǔ)句形式出現(xiàn).(2)在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語(yǔ)句。
運(yùn)行結(jié)果:5050
用while語(yǔ)句實(shí)現(xiàn)循環(huán)注意:循環(huán)體如果包含一個(gè)以上的語(yǔ)句,應(yīng)該用花括弧括起來(lái),以復(fù)合語(yǔ)句形式出現(xiàn)。在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語(yǔ)句。如果無(wú)此語(yǔ)句,那么i的值始終不改變,循環(huán)永不結(jié)束。do-while語(yǔ)句實(shí)現(xiàn)循環(huán)do-while語(yǔ)句的特點(diǎn):先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立。一般形式:
do
循環(huán)體語(yǔ)句
while
(表達(dá)式);執(zhí)行過(guò)程:先執(zhí)行一次指定的循環(huán)體語(yǔ)句,然后判別表達(dá)式,當(dāng)表達(dá)式的值為非零(“真〞)時(shí),返回重新執(zhí)行循環(huán)體語(yǔ)句,如此反復(fù),直到表達(dá)式的值等于0為止,此時(shí)循環(huán)結(jié)束。例2.求1到100的和
#include<stdio.h>
voidmain()
{
inti,sum=0;
i=1;
do
{
sum=sum+i;
i++;
}
while(i<=100);
printf("%d\n″,sum);
}運(yùn)行結(jié)果:5050
用do-while語(yǔ)句實(shí)現(xiàn)循環(huán)while語(yǔ)句和用do-while語(yǔ)句的比較:在一般情況下,用while語(yǔ)句和用do-while語(yǔ)句處理同一問(wèn)題時(shí),假設(shè)二者的循環(huán)體局部是一樣的,它們的結(jié)果也一樣。但是如果while后面的表達(dá)式一開(kāi)始就為假(0值)時(shí),兩種循環(huán)的結(jié)果是不同的。例3.while和do-while循環(huán)的比較
(1)#include<stdio.h>(2)#include<stdio.h>
voidmain()voidmain()
{ {
intsum=0,i;intsum=0,i;
scanf(“%d″,&i);scanf(〞%d″,&i);
while(i<=10) do
{ {
sum=sum+i;sum=sum+i;
i++;i++;
}}
printf(“sum=%d\n″,sum);while(i<=10);
} printf(″sum=%d\n″,sum);
}運(yùn)行結(jié)果:1↙sum=55再運(yùn)行一次:
11↙sum=0運(yùn)行結(jié)果:1↙sum=55再運(yùn)行一次:
11↙sum=11說(shuō)明:(1)當(dāng)while后面的表達(dá)式的第一次的值為“真〞時(shí),兩種循環(huán)得到的結(jié)果相同。否那么,二者結(jié)果不相同。
用for語(yǔ)句實(shí)現(xiàn)循環(huán)C語(yǔ)言中的for語(yǔ)句使用最為靈活,不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況,它完全可以代替while語(yǔ)句。一般形式:
for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語(yǔ)句
用for語(yǔ)句實(shí)現(xiàn)循環(huán)for語(yǔ)句的執(zhí)行過(guò)程:(1)先求解表達(dá)式1。(2)求解表達(dá)式2,假設(shè)其值為真(值為非0),那么執(zhí)行for語(yǔ)句中指定的內(nèi)嵌語(yǔ)句,然后執(zhí)行下面第(3)步。假設(shè)為假(值為0),那么結(jié)束循環(huán),轉(zhuǎn)到第(5)步。(3)求解表達(dá)式3。(4)轉(zhuǎn)回上面第(2)步驟繼續(xù)執(zhí)行。(5)循環(huán)結(jié)束,執(zhí)行for語(yǔ)句下面的一個(gè)語(yǔ)句
用for語(yǔ)句實(shí)現(xiàn)循環(huán)表達(dá)式2?執(zhí)行語(yǔ)句成立不成立執(zhí)行for循環(huán)之后的語(yǔ)句執(zhí)行表達(dá)式3執(zhí)行表達(dá)式1循環(huán)初始條件循環(huán)控制條件循環(huán)體for語(yǔ)句等價(jià)于以下語(yǔ)句:表達(dá)式1;while〔表達(dá)式2〕{語(yǔ)句;表達(dá)式3;}
用for語(yǔ)句實(shí)現(xiàn)循環(huán)for語(yǔ)句最簡(jiǎn)單的應(yīng)用形式也就是最易理解的如下形式:
for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)
例如:for(i=1;i<=100;i++)sum=sum+i;
它相當(dāng)于以下語(yǔ)句:
i=1;while(i<=100){sum=sum+i;i++;}
顯然,用for語(yǔ)句簡(jiǎn)單、方便。
用for語(yǔ)句實(shí)現(xiàn)循環(huán)說(shuō)明:(1)for語(yǔ)句的一般形式中的“表達(dá)式1〞可以省略,此時(shí)應(yīng)在for語(yǔ)句之前給循環(huán)變量賦初值。注意省略表達(dá)式1時(shí),其后的分號(hào)不能省略。如for(;i<=100;i++)sum=sum+i;執(zhí)行時(shí),跳過(guò)“求解表達(dá)式1〞這一步,其他不變。用for語(yǔ)句實(shí)現(xiàn)循環(huán)說(shuō)明:(2)如果表達(dá)式2省略,即不判斷循環(huán)條件,循環(huán)無(wú)終止地進(jìn)行下去。也就是認(rèn)為表達(dá)式2始終為真。例如:for(i=1;;i++)sum=sum+i;
表達(dá)式1是一個(gè)賦值表達(dá)式,表達(dá)式2空缺。它相當(dāng)于:
i=1;while(1){sum=sum+1;i++;}用for語(yǔ)句實(shí)現(xiàn)循環(huán)說(shuō)明:(3)表達(dá)式3也可以省略,但此時(shí)程序設(shè)計(jì)者應(yīng)另外設(shè)法保證循環(huán)能正常結(jié)束。如:for(i=1;i<=100;){sum=sum+i;i++;}在上面的for語(yǔ)句中只有表達(dá)式1和表達(dá)式2,而沒(méi)有表達(dá)式3。i++的操作不放在for語(yǔ)句的表達(dá)式3的位置處,而作為循環(huán)體的一局部,效果是一樣的,都能使循環(huán)正常結(jié)束。
用for語(yǔ)句實(shí)現(xiàn)循環(huán)說(shuō)明:(4)可以省略表達(dá)式1和表達(dá)式3,只有表達(dá)式2,即只給循環(huán)條件。如:
for(;i<=100;)while(i<=100){sum=sum+i;相當(dāng)于
{sum=sum+i;i++;}i++;}
在這種情況下,完全等同于while語(yǔ)句。可見(jiàn)for語(yǔ)句比while語(yǔ)句功能強(qiáng),除了可以給出循環(huán)條件外,還可以賦初值,使循環(huán)變量自動(dòng)增值等。用for語(yǔ)句實(shí)現(xiàn)循環(huán)說(shuō)明:(5)3個(gè)表達(dá)式都可省略,如:
for(;;)語(yǔ)句相當(dāng)于
while(1)語(yǔ)句即不設(shè)初值,不判斷條件(認(rèn)為表達(dá)式2為真值),循環(huán)變量不增值。無(wú)終止地執(zhí)行循環(huán)體。用for語(yǔ)句實(shí)現(xiàn)循環(huán)說(shuō)明:(6)表達(dá)式1可以是設(shè)置循環(huán)變量初值的賦值表達(dá)式,也可以是與循環(huán)變量無(wú)關(guān)的其他表達(dá)式。如:
for(sum=0;i<=100;i++)sum=sum+i;
表達(dá)式3也可以是與循環(huán)控制無(wú)關(guān)的任意表達(dá)式。
用for語(yǔ)句實(shí)現(xiàn)循環(huán)說(shuō)明:表達(dá)式1和表達(dá)式3可以是一個(gè)簡(jiǎn)單的表達(dá)式,也可以是逗號(hào)表達(dá)式,即包含一個(gè)以上的簡(jiǎn)單表達(dá)式,中間用逗號(hào)間隔。如:
for(sum=0,i=1;i<=100;i++)sum=sum+i;或
for(i=0,j=100;i<=j;i++,j--)k=i+j;表達(dá)式1和表達(dá)式3都是逗號(hào)表達(dá)式,各包含兩個(gè)賦值表達(dá)式,即同時(shí)設(shè)兩個(gè)初值,使兩個(gè)變量增值.用for語(yǔ)句實(shí)現(xiàn)循環(huán)說(shuō)明:
在逗號(hào)表達(dá)式內(nèi)按自左至右順序求解,整個(gè)逗號(hào)表達(dá)式的值為其中最右邊的表達(dá)式的值。如:
for(i=1;i<=100;i++,i++)sum=sum+i;相當(dāng)于
for(i=1;i<=100;i=i+2)sum=sum+i;
用for語(yǔ)句實(shí)現(xiàn)循環(huán)說(shuō)明:(7)表達(dá)式一般是關(guān)系表達(dá)式(如i<=100)或邏輯表達(dá)式
(如a<b&&x<y),但也可以是數(shù)值表達(dá)式或字符表達(dá)式,只要其值為非零,就執(zhí)行循環(huán)體。用for語(yǔ)句實(shí)現(xiàn)循環(huán)說(shuō)明:①for(i=0;(c=getchar())!=′\n′;i+=c);在表達(dá)式2中先從終端接收一個(gè)字符賦給c,然后判斷此賦值表達(dá)式的值是否不等于′\n′(換行符),如果不等于′\n′,就執(zhí)行循環(huán)體。注意:此for語(yǔ)句的循環(huán)體為空語(yǔ)句,把本來(lái)要在循環(huán)體內(nèi)處理的內(nèi)容放在表達(dá)式3中,作用是一樣的??梢?jiàn)for語(yǔ)句功能強(qiáng),可以在表達(dá)式中完本錢來(lái)應(yīng)在循環(huán)體內(nèi)完成的操作。用for語(yǔ)句實(shí)現(xiàn)循環(huán)說(shuō)明:②for(;(c=getchar())!=′\n′;)printf(″%c″,c);for語(yǔ)句中只有表達(dá)式2,而無(wú)表達(dá)式1和表達(dá)式3。其作用是每讀入一個(gè)字符后立即輸出該字符,直到輸入一個(gè)“換行〞為止。請(qǐng)注意,從終端鍵盤向計(jì)算機(jī)輸入時(shí),是在按Enter鍵以后才將一批數(shù)據(jù)一起送到內(nèi)存緩沖區(qū)中去的。運(yùn)行情況:Computer↙(輸入)Computer(輸出)而不是Ccoommppuutteerr用for語(yǔ)句實(shí)現(xiàn)循環(huán)注意:C語(yǔ)言中的for語(yǔ)句比其他語(yǔ)言(如BASIC,PASCAL)中的FOR語(yǔ)句功能強(qiáng)得多。可以把循環(huán)體和一些與循環(huán)控制無(wú)關(guān)的操作也作為表達(dá)式1或表達(dá)式3出現(xiàn),這樣程序可以短小簡(jiǎn)潔。但過(guò)分地利用這一特點(diǎn)會(huì)使for語(yǔ)句顯得雜亂,可讀性降低,最好不要把與循環(huán)控制無(wú)關(guān)的內(nèi)容放到for語(yǔ)句中。循環(huán)的嵌套一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu)稱為循環(huán)的嵌套。內(nèi)嵌的循環(huán)中還可以嵌套循環(huán),這就是多層循環(huán)。三種循環(huán)(while循環(huán)、do-while循環(huán)和for循環(huán))可以互相嵌套。循環(huán)的嵌套下面幾種都是合法的形式:(1)
while()(2)do(3)for(;;){…{…{while()dofor(;;){…}{…}{…}}while();}}while();
循環(huán)的嵌套(4)
while()(5)for(;;)(6)do{…{…{…do{…}while()for(;;){}while(){}…{…}…}}}while()
break語(yǔ)句和continue語(yǔ)句
break語(yǔ)句
break語(yǔ)句可以用來(lái)從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語(yǔ)句一般形式:
break;注意:break語(yǔ)句不能用于循環(huán)語(yǔ)句和switch語(yǔ)句之外的任何其他語(yǔ)句中。
break語(yǔ)句和continue語(yǔ)句
例:floatpi=3.14159;for(r=1;r<=10;r++){area=pi*r*r;if(area>100)break;printf(″r=%f,area=%f\n″,r,area);}
程序的作用是計(jì)算r=1到r=10時(shí)的圓面積,直到面積area大于100為止。從上面的for循環(huán)可以看到:當(dāng)area>100時(shí),執(zhí)行break語(yǔ)句,提前結(jié)束循環(huán),即不再繼續(xù)執(zhí)行其余的幾次循環(huán)。break語(yǔ)句和continue語(yǔ)句
continue語(yǔ)句
作用為結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,接著進(jìn)行下一次是否執(zhí)行循環(huán)的判定.一般形式:
continue;break語(yǔ)句和continue語(yǔ)句
continue語(yǔ)句和break語(yǔ)句的區(qū)別
continue語(yǔ)句只結(jié)束本次循環(huán),而不是終止整個(gè)循環(huán)的執(zhí)行。
while(表達(dá)式1)for
{…
if(表達(dá)式2)continue;
…}0break語(yǔ)句和continue語(yǔ)句
continue語(yǔ)句和break語(yǔ)句的區(qū)別break語(yǔ)句那么是結(jié)束整個(gè)循環(huán)過(guò)程,不再判斷執(zhí)行循環(huán)的條件是否成立。
while(表達(dá)式1)for
{…if(表達(dá)式2)break;…}例4.把100~200之間的不能被3整除的數(shù)輸出。
#include<stdio.h>
voidmain()
{
intn;
for(n=100;n<=200;n++)
{
if(n%3==0)continue;
printf("%d″,n);
}
}說(shuō)明:當(dāng)n能被3整除時(shí),執(zhí)行continue語(yǔ)句,結(jié)束本次循環(huán)(即跳過(guò)printf函數(shù)語(yǔ)句),只有n不能被3整除時(shí)才執(zhí)行printf函數(shù)。程序舉例
例5.用π/4≈1-1/3+1/5-1/7+…公式求π的近似值,直到某一項(xiàng)的絕對(duì)值小于為止。例5.求pi的近似值
#include<stdio.h>
#include<math.h>
voidmain()
{
ints;floatn,t,pi;
t=1;pi=0;n=1.0;s=1;
while(fabs(t)>1e-6)
{
pi=pi+t;n=n+2;s=-s;t=s/n;
}
pi=pi*4;
printf(″pi=%10.6f\n″,pi);
}運(yùn)行結(jié)果:
pi=3.141594
程序舉例
例6.求Fibonacci數(shù)列前40個(gè)數(shù)。這個(gè)數(shù)列有如下特點(diǎn):第1,2兩個(gè)數(shù)為1,1。從第3個(gè)數(shù)開(kāi)始,該數(shù)是其前面兩個(gè)數(shù)之和。即:F(1)=1(n=1)F(2)=1(n=2)F(n)=F(n-1)+F(n-2)(n≥3)算法如下圖:例6.求Fibonacci數(shù)列前40個(gè)數(shù)。
#include<stdio.h>
voidmain()
{
longintf1,f2;
inti;
f1=1;f2=1;
for(i=1;i<=20;i++)
{
printf(″%12ld%12ld″,f1,f2);
if(i%2==0)printf(″\n″);
f1=f1+f2;
f2=f2+f1;
}
}運(yùn)行結(jié)果:
11235813213455891442333776109871597258441816765109461771128657463687502512139319641831781151422983204013462692178309352457857022887922746514930352241578173908816963245986102334155
程序舉例
例7.譯密碼。為使電文保密,往往按一定規(guī)律將其轉(zhuǎn)換成密碼,收?qǐng)?bào)人再按約定的規(guī)律將其譯回原文。
例如:可以按以下規(guī)律將電文變成密碼:將字母A變成字母E,a變成e,即變成其后的第4個(gè)字母,W變成A,X變成B,Y變成C,Z變成D。素?cái)?shù)。例7.輸入一行字符,要求輸出其相應(yīng)的密碼
include<stdio.h>
voidmain()
{
charc;
while((c=getchar())!=
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新型搪瓷材料應(yīng)用研究-洞察分析
- 《牢筑保密長(zhǎng)城》課件
- 從科研到應(yīng)用農(nóng)業(yè)科技園區(qū)的技術(shù)轉(zhuǎn)移
- 辦公技術(shù)的演進(jìn)及企業(yè)如何借助對(duì)沖基金保持競(jìng)爭(zhēng)力
- 親子閱讀一種有效的互動(dòng)方式
- O2O模式下寵物市場(chǎng)的發(fā)展前景和挑戰(zhàn)
- 年產(chǎn)12000噸塑料包裝制品項(xiàng)目可行性研究報(bào)告
- 冷凝器風(fēng)機(jī)行業(yè)行業(yè)發(fā)展趨勢(shì)及投資戰(zhàn)略研究分析報(bào)告
- 2024-2027年中國(guó)網(wǎng)絡(luò)安全行業(yè)市場(chǎng)深度分析及投資前景展望報(bào)告
- 2025門面鋪面轉(zhuǎn)租合同協(xié)議書
- 【金融模擬交易實(shí)踐報(bào)告4600字】
- 山東省煙臺(tái)市2024年中考物理試題(含答案)
- 陜西省2024年中考語(yǔ)文真題試卷【附答案】
- 廈門市翔安區(qū)2022-2023學(xué)年七年級(jí)上學(xué)期期末地理試題【帶答案】
- 川崎病診治專家共識(shí)
- 12G614-1 砌體填充墻結(jié)構(gòu)構(gòu)造
- 2024-2029年中國(guó)瑤浴藥包行業(yè)市場(chǎng)現(xiàn)狀分析及競(jìng)爭(zhēng)格局與投資發(fā)展研究報(bào)告
- 人教版英語(yǔ)五年級(jí)上冊(cè)【新課標(biāo)】Unit 4What can you do 單元整體教學(xué)設(shè)計(jì)
- 三會(huì)一課檢查方案
- 大學(xué)助農(nóng)直播創(chuàng)業(yè)計(jì)劃書
- JTS-196-1-2009海港集裝箱碼頭建設(shè)標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論