




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 陜西師范大學(xué)《傳熱學(xué)與換熱器》2023-2024學(xué)年第二學(xué)期期末試卷
- 江西管理職業(yè)學(xué)院《景觀植物基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南財(cái)經(jīng)工業(yè)職業(yè)技術(shù)學(xué)院《醫(yī)學(xué)基礎(chǔ)化學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江特殊教育職業(yè)學(xué)院《文藝演出策劃與組織》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東生態(tài)工程職業(yè)學(xué)院《表面活性劑作用原理》2023-2024學(xué)年第二學(xué)期期末試卷
- 不要下河游泳安全教育
- 生態(tài)系統(tǒng)的穩(wěn)態(tài)教學(xué)設(shè)計(jì)
- 武漢商貿(mào)職業(yè)學(xué)院《3DSMAX效果圖與動(dòng)畫(huà)制作》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西電力職業(yè)技術(shù)學(xué)院《建筑工程定額預(yù)算》2023-2024學(xué)年第二學(xué)期期末試卷
- 南京工業(yè)大學(xué)《測(cè)量平差基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 信托固定收益合同模板
- 2024年高考真題-生物(天津卷) 含解析
- T-LNEMA 013-2024 實(shí)驗(yàn)室危險(xiǎn)化學(xué)品貯存管理技術(shù)規(guī)范
- 麻辣燙合伙人合同協(xié)議書(shū)(2篇)
- 青年人要有艱苦奮斗的精神(2023年遼寧沈陽(yáng)中考語(yǔ)文試卷議論文閱讀題及答案)
- 食品安全前提方案PRP程序
- 構(gòu)建水利安全生產(chǎn)風(fēng)險(xiǎn)管控六項(xiàng)機(jī)制工作指導(dǎo)手冊(cè)
- 2024年廣東省廣州市中考數(shù)學(xué)試卷含答案
- 化糞池應(yīng)急預(yù)案方案
- 外研版英語(yǔ)四年級(jí)下冊(cè)閱讀理解練習(xí)(含答案)
- 紡織非遺:讓世界讀懂中國(guó)之美智慧樹(shù)知到期末考試答案章節(jié)答案2024年天津工業(yè)大學(xué)
評(píng)論
0/150
提交評(píng)論