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

下載本文檔

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

文檔簡(jiǎn)介

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

第一章

第二章C語言概述

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

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

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

章循環(huán)控制

第六

第七數(shù)組

第八函數(shù)

第九編譯預(yù)處理

第十指針

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

第十三章文件的基本操作

位運(yùn)算

§4.4switch語句一開關(guān)語句

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

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

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

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

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

*

*

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

default:語句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,則自語

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

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

default后的語句開始執(zhí)行。

C語者凝停過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ùn)行結(jié)果:

AJ

85-100

70-84

60-69

<60

Error

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

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

C福言程停過升

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

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

{case常表1:語句1;

break;

case常表2:語句2;

break;

case常表n:語句n;

break;

default:語句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語言凝停直苜

C語言凝停直苜

例如:switch(grade)

{case'A':

case'B':

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

break;

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

break;

C語言耗停汽苜

例1:寫一程序,輸入年號(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語言程停冏計(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語演言妄母耗停直苜

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;

語言展停阻升

§5.1概述

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

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

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

100

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

i=l

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

C謂言程停通計(jì)

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

1.while語句

2.do...while語句

3.for語句

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

C語言耗停直苜

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

1.goto語句

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

功能:無條件轉(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語言耗停汽苜

上面的程序相當(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。語句,以免破壞程

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

CISSSSiait

§5.3whi1e語句

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

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

語句

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

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

Cisssmsn

3.流程圖:

將上述例子用while語句寫出

while(i<=100)

{sum+=i;

i++;

c港舌程停過甘

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

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

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

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

§5.4do,??while語句

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

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

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

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

3.流程:-----

尸°C語言準(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、語句至少要執(zhí)行一次。

C語言凝停直苜

§5.5for語句

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

1.形式

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

語句

2.執(zhí)行過程

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

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

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

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

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

C謂看程停過甘

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

語句

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

結(jié)束for語句

C語言耗停汽苜

用for語句重寫上述例子:

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

sum+=i;

for語句完全可以用whi1e代替,

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

for用while代替的流程:

表達(dá)式1;、

while(表達(dá)式2)

{語句

表達(dá)式3;

}C語言程停過計(jì)

4.for語句的幾種特例

*可以省略初始表達(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語言震拂沒苜

條件表達(dá)式一般不可省略,否則為無限循環(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)體中必須有語句

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

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

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

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

{sum=sum+i;

i++;

}

cissgsmt

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

于while語句o

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

while(i<=100)

{sum+=i;

i++;

)

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

語句,為無限循環(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語言耗停直苜

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

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

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

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

例1:while()

while()

C語言耗停直苜

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

while(){}

do

{}while();

均為正確的嵌套

吾舌維停投計(jì)

但:

while()for(;;)

{for(;;)

while()

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

包含關(guān)系。

C語言混程汽苜

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

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

要用goto語句。

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

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

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

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

C語言耗停直苜

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

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

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

C語言震界過片

§5.8break語句和contiune語句

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

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

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

C語言凝停過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)語句和switch語句。

C語言耗停汽苜

5.8.2continuce語句

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

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

程序一:不用continue語句:

#include<stdio.h>

main()

{intn;

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

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

nn

printf(%d9n);

}c語言震擲汽苜

程序二:使用continue語句:

main()

{intn;

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

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

continue;

nn

printf(%d5n);

ci吾言程停過片

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