c語(yǔ)言程序設(shè)計(jì)課件_第1頁(yè)
c語(yǔ)言程序設(shè)計(jì)課件_第2頁(yè)
c語(yǔ)言程序設(shè)計(jì)課件_第3頁(yè)
c語(yǔ)言程序設(shè)計(jì)課件_第4頁(yè)
c語(yǔ)言程序設(shè)計(jì)課件_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

注汰法:英訣:女:沐逐沐美沐沐泱沐米淡淡沐訣族&*浜逐渙逐法漲沐逐淡:渙沐沐差二:4

第一章

第二章C語(yǔ)言概述

第三章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式

第四章最簡(jiǎn)單的C程序設(shè)計(jì)

第五章邏輯運(yùn)算和判斷選取控制

章循環(huán)控制

第六

第七數(shù)組

第八函數(shù)

第九編譯預(yù)處理

第十指針

第十章結(jié)構(gòu)體與共用體

第十三章文件的基本操作

位運(yùn)算

§4.4switch語(yǔ)句一開(kāi)關(guān)語(yǔ)句

問(wèn)題:當(dāng)某一表達(dá)式有n個(gè)取值,每一取值執(zhí)行一

語(yǔ)句,則如果用內(nèi)嵌if十分繁鎖,而用switch簡(jiǎn)單.

一般形式:switch(表達(dá)式)

{case常量表達(dá)式1:語(yǔ)句1

case常量表達(dá)式2:語(yǔ)句2

*

*

case常量表達(dá)式n:語(yǔ)句n

default:語(yǔ)句n+1

1心悟言起算得日

例:根據(jù)成績(jī)等級(jí)打印百分?jǐn)?shù)段.

switch(grade)

{case'A':printf(n85-100\nn);

case'B':printf("70?84\n");

case'C':printf("60?69\n");

case'D':printf(n<60\nn);

default:printf(nerror\nn);

功能:

*根據(jù)表達(dá)式的取值,判斷其與哪一個(gè)

常量表達(dá)式相等。如=表達(dá)式i,則自語(yǔ)

句i開(kāi)始執(zhí)行,直到語(yǔ)句n+1止。

*若與所有常量表達(dá)式值不相等,則從

default后的語(yǔ)句開(kāi)始執(zhí)行。

C語(yǔ)者凝停過(guò)it

例如:/*exp55,c*/

#include<stdio.h>

main()

{chargrade;

scanf(n%cf\&grade);

switch(grade)

{casefA!:printf(n85-100\nn);

caselBf:printf(M70-84\nn);

casefCf:printf(n60-69\nu);

caselDl:printf(H<60\nn);

default:printf(nError\n'');

C語(yǔ)言耗停直苜

運(yùn)行結(jié)果:

AJ

85-100

70-84

60-69

<60

Error

程序運(yùn)行結(jié)果不在預(yù)料之中!

產(chǎn)生錯(cuò)誤的原因:沒(méi)有完全起到分支作用。

C福言程停過(guò)升

解決辦法:增加break語(yǔ)句,使之跳出switch結(jié)構(gòu)。

一般形式為:itch(表達(dá)式)

{case常表1:語(yǔ)句1;

break;

case常表2:語(yǔ)句2;

break;

case常表n:語(yǔ)句n;

break;

default:語(yǔ)句n+1;

}

修改程序?yàn)?/*exp56,c*/

#include<stdio.h>

main()

{chargrade;

scanf(n%cn,&grade);

switch(grade)

{case,Af:printf(,,85-100\nM);break;

case!Bf:printf(n70-84\nn);break;

casefCf:printf(n60-69\nn);break;

case,D,:printf(ff<60\nn);break;

default:printf(nError\nn);

}

C語(yǔ)言凝停直苜

C語(yǔ)言凝停直苜

例如:switch(grade)

{case'A':

case'B':

case'C':printf(n>60\nn);

break;

case'D':printf(n<60\nn);

break;

C語(yǔ)言耗停汽苜

例1:寫(xiě)一程序,輸入年號(hào),判斷是否為閏年。

1.算法:根據(jù)閏年的判斷條件為下列條件之一:

*當(dāng)年號(hào)能被4整除但不能被100整除時(shí),它為閏年。

*當(dāng)年號(hào)能被400整除時(shí),它為閏年。

2.流程圖

設(shè)用變量year表示年號(hào)Jeap為待置值變量,當(dāng)year

為閏年:leap-1,否則leap-0.

輸入year

yes/No

<^eap-pz

打印非閏年打印是閏年

]

結(jié)束

C語(yǔ)言程停冏計(jì)

3.程序:#include<stdio.h>

main()

{intyear,leap;

scanf("%d",&year);

if(year%4==0)

{if(year%100==0)

{if(year%400==0)

leap=l;

else

leap=0;}

else

leap=1;}

else

leap=0;

C語(yǔ)演言妄母耗停直苜

if(leap)

printf(n%dis",year);

else

printf(n%disnot”,year);

printf(naleapyear\nn);

)

運(yùn)行情況如下:

第一次:1989J

1989isnotaleapyear

第二次:2000J

2000isaleapyear

.丘I

IiTWit

注:上述條件也可用一個(gè)邏輯表達(dá)式表示為

if((year%4=0)&&year%100!=0)]]

(year%400==0))

leap=l;

elseleap=0;

語(yǔ)言展停阻升

§5.1概述

前面已介紹了順序結(jié)構(gòu),選擇結(jié)構(gòu),本章

介紹循環(huán)結(jié)構(gòu)。

實(shí)際問(wèn)題:一組重復(fù)執(zhí)行的語(yǔ)句。

100

如:Zi,sum=l+2+3+...+100;

i=l

可用循環(huán)結(jié)構(gòu)解決。

C謂言程停通計(jì)

C語(yǔ)言一般采用三種形式循環(huán)

1.while語(yǔ)句

2.do...while語(yǔ)句

3.for語(yǔ)句

另:用if語(yǔ)句與goto語(yǔ)句的結(jié)合也可構(gòu)成循環(huán).

C語(yǔ)言耗停直苜

§5.2goto語(yǔ)句及與if語(yǔ)句構(gòu)成修壞

1.goto語(yǔ)句

形式:goto標(biāo)號(hào);

功能:無(wú)條件轉(zhuǎn)向標(biāo)號(hào)處。

標(biāo)號(hào):用標(biāo)識(shí)符命名。

2.與1幽成循環(huán).

100

例:求Z,=l+2+…+1。。

/=1

#include<stdio.h>

main()

{inti,sum=0;

c一看—睜及甘

i=l;

loop:if(i<=100)

{sum=sum+i;

i++;

gotoloop;}

printff'sum=%d",sum);

運(yùn)行結(jié)果如下:

sum=5050

C語(yǔ)言耗停汽苜

上面的程序相當(dāng)于當(dāng)型循環(huán),可改為直到型:

#include<stdio.h>

main()

{intsum=O,i=0;

loop:sum=sum+i;

jH——

if(i<=100)gotoloop;

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

}

建議:盡可能的不用got。語(yǔ)句,以免破壞程

序的結(jié)構(gòu)化。

CISSSSiait

§5.3whi1e語(yǔ)句

專門的當(dāng)空循環(huán)語(yǔ)句一while語(yǔ)句

1.形式:while(表達(dá)式)

語(yǔ)句

2.執(zhí)行過(guò)程:先判斷表達(dá)式的值。若M.則執(zhí)行其后

面的語(yǔ)句,否則while執(zhí)行完畢。

Cisssmsn

3.流程圖:

將上述例子用while語(yǔ)句寫(xiě)出

while(i<=100)

{sum+=i;

i++;

c港舌程停過(guò)甘

注:*若卬山江后面的語(yǔ)句為復(fù)合語(yǔ)句,必須加{}

來(lái)語(yǔ)句中應(yīng)有使表達(dá)式=0的語(yǔ)句。

否則會(huì)出現(xiàn)無(wú)限循環(huán)——“死”循環(huán)。

*語(yǔ)句有可能一次也不執(zhí)行

§5.4do,??while語(yǔ)句

一種專門的“直到型”循環(huán)語(yǔ)句。

1.形式:do語(yǔ)句while(表達(dá)式);

2.執(zhí)行過(guò)程:先執(zhí)行語(yǔ)句,再判表達(dá)式的值,若再

執(zhí)行語(yǔ)句,否則結(jié)束循環(huán)

3.流程:-----

畫(huà)

尸°C語(yǔ)言準(zhǔn)陋tt

程序如下:#include<stdio.h>

main()

{inti,sum=O;

i=l;

do

{sum=sum+i;

i++;

)

while(i<=100);

nn

printf(%d9sum);

)

注:1、do......while結(jié)構(gòu)的作用與while基本

相同。

2、語(yǔ)句至少要執(zhí)行一次。

C語(yǔ)言凝停直苜

§5.5for語(yǔ)句

一種形式更為靈活的循環(huán)語(yǔ)句。

1.形式

for(初始表達(dá)式;條件表達(dá)式;循環(huán)表達(dá)式)

語(yǔ)句

2.執(zhí)行過(guò)程

?、計(jì)算初始表達(dá)式的值。

?、判斷條件表達(dá)式,若條件表達(dá)式的值則執(zhí)行語(yǔ)句。

若條件表達(dá)式的值=0,則跳出循環(huán)體。

?、計(jì)算循環(huán)表達(dá)式。

?、轉(zhuǎn)到第?步。

C謂看程停過(guò)甘

3.流程:計(jì)算表達(dá)式1

語(yǔ)句

計(jì)算表達(dá)式3

結(jié)束for語(yǔ)句

C語(yǔ)言耗停汽苜

用for語(yǔ)句重寫(xiě)上述例子:

for(i=l;i<=100;i++)

sum+=i;

for語(yǔ)句完全可以用whi1e代替,

但for直觀、簡(jiǎn)單、方便。

for用while代替的流程:

表達(dá)式1;、

while(表達(dá)式2)

{語(yǔ)句

表達(dá)式3;

}C語(yǔ)言程停過(guò)計(jì)

4.for語(yǔ)句的幾種特例

*可以省略初始表達(dá)式,但須保留分號(hào);且在for之前必須給

循環(huán)變量賦值;

i-b

例:任意輸入兩個(gè)整數(shù)a,b,求

i=a

#include<stdio.h>

main()

{inti,j9a,b9sum;

printf("pleaseinputtwonumber!\nn);

scanf("a=%d,b=%d\&a,&b);

i=a;j=b;if(a>b){i=b;j=a;}

for(;i<寸i++)

sum=sum+i;

nn

printf(\nsum=%d5sum);

}c語(yǔ)言震拂沒(méi)苜

條件表達(dá)式一般不可省略,否則為無(wú)限循環(huán)

例:for(i=l;;i++)sum=sum+i;

相當(dāng)于條件永真、永不為0,若用while表示

相當(dāng)于:while(1)

{sum=sum+i;

i++;

i吾舌程停投注

?循環(huán)表達(dá)式亦可省略,但在循環(huán)體中必須有語(yǔ)句

來(lái)修改循環(huán)變量,以使條件表達(dá)式在某一時(shí)刻

為0而正常結(jié)束循環(huán)。

/*沒(méi)有循環(huán)表達(dá)式*/

例:for(sum=05i=l;i<=100;)

{sum=sum+i;

i++;

}

cissgsmt

張若同時(shí)省略初始表達(dá)式.和循環(huán)表達(dá)式,則相當(dāng)

于while語(yǔ)句o

例:for(;i<=100;){sum+=i;i++;}

while(i<=100)

{sum+=i;

i++;

)

串三個(gè)表達(dá)式均省略即for(;;)語(yǔ)句則相當(dāng)于while(l)

語(yǔ)句,為無(wú)限循環(huán)。

4■初始表達(dá)式、循環(huán)表達(dá)式可以是逗號(hào)表達(dá)式,以

使循環(huán)變量值在修改時(shí)可以對(duì)其它變量賦值。

如:for(sum=09i=l;i<=100;i++,i++)

相當(dāng)于:sum=0;

for(i=1;i<=100;i=i+2)

c捂言握停直計(jì)

令條件表達(dá)式可以是關(guān)系表達(dá)式,也可以是數(shù)值表

達(dá)式或字符表達(dá)式。只要值M.即執(zhí)行循環(huán)體.

例:for(i=0;(c=getchar())!='\n';i+=c);

條件表達(dá)式

C語(yǔ)言耗停直苜

§5.6循環(huán)的嵌套

與其它語(yǔ)言一樣,當(dāng)循環(huán)體中又包含了另一個(gè)完

整的循環(huán)語(yǔ)句時(shí)——嵌套。

C語(yǔ)言有三種循環(huán)語(yǔ)句,均可以相互嵌套:

例1:while()

while()

C語(yǔ)言耗停直苜

例2:for(;v條件表達(dá)式>;)

while(){}

do

{}while();

均為正確的嵌套

吾舌維停投計(jì)

但:

while()for(;;)

{for(;;)

while()

不能理解為正確的形式。但要注意語(yǔ)句的

包含關(guān)系。

C語(yǔ)言混程汽苜

§5.7幾種循環(huán)的比較

?1.對(duì)于同一問(wèn)題,三種循環(huán)可相互替代。但不

要用goto語(yǔ)句。

?2.for循環(huán)功能強(qiáng)于while和do…while。但若不

是明顯地給出循環(huán)變量初終值(或修改條件),

則應(yīng)用while或do...while。以增強(qiáng)程序的結(jié)

構(gòu)化和可讀性。

C語(yǔ)言耗停直苜

?3.要防止無(wú)限循環(huán)一死循環(huán)。

?4.循環(huán)過(guò)程中,為了結(jié)束本次循環(huán)或跳出整個(gè)

循環(huán)。分別要用至Ucontinue和break語(yǔ)句。

C語(yǔ)言震界過(guò)片

§5.8break語(yǔ)句和contiune語(yǔ)句

5.8.1break語(yǔ)句(作用:從循環(huán)體中退出)

問(wèn)題:計(jì)算圓的面積九比半徑取1,2,3,4...,

當(dāng)面積>100時(shí)結(jié)束。

C語(yǔ)言凝停過(guò)H

程序段:

pi=3.14159;

for(r=l;r<=10;r++)

{area=pi*r*r;

if(area>100)break;

)

printf(n%f\area);

)

注意:break只能用于循環(huán)語(yǔ)句和switch語(yǔ)句。

C語(yǔ)言耗停汽苜

5.8.2continuce語(yǔ)句

作用:結(jié)束循環(huán)。

例:編寫(xiě)程序,打印100?200中不能被3整除的數(shù)。

程序一:不用continue語(yǔ)句:

#include<stdio.h>

main()

{intn;

for(n=100;n<200;n++)

if(n%3!=0)/*n不能被3整除*/

nn

printf(%d9n);

}c語(yǔ)言震擲汽苜

程序二:使用continue語(yǔ)句:

main()

{intn;

for(n=100;n<=200;n++)

{if(n%3==0)/*n能被3整除*/

continue;

nn

printf(%d5n);

ci吾言程停過(guò)片

§5.9程序舉例

例1:求Fibonacci數(shù)例:1,1,2,3,5,8,...前40個(gè)數(shù)。

規(guī)律:F「1,F2=1

Fn=Fn-1+Fn-2(n>2)

程序要點(diǎn):

*fl=fl+f2;

f2=fl+f2;交替的結(jié)果正好為一序列

*每輸出4個(gè)數(shù)時(shí)換行。

■(F心悟言能吊汽苜

程序如下:

fl=lf2=l

/*exp61.c*/5

#include<stdio.h>fori=lto40

main()

輸出fl,f2

{longintfl9f2;

inti;fl=fl+f2

fl=l;f2=l;f2=f2+fl

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

printf(%121d%121d,flQ;

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論