C語言總復(fù)習(xí)課件_第1頁
C語言總復(fù)習(xí)課件_第2頁
C語言總復(fù)習(xí)課件_第3頁
C語言總復(fù)習(xí)課件_第4頁
C語言總復(fù)習(xí)課件_第5頁
已閱讀5頁,還剩92頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2.2數(shù)據(jù)類型概述常量變量符號常量實型常量整型常量數(shù)據(jù)類型字符常量字符串常量結(jié)構(gòu)體變量實型變量整型變量字符變量指針變量按數(shù)據(jù)的數(shù)值是否可變分為:2.3常量

2、數(shù)值常量:整型常量:12、-3實型常量:13.45、-2.34字符常量字符串常量如:#definePRICE30定義:程序運行時其值不能改變的量(即常數(shù))分類:1、符號常量:用一個符號代表常量定義格式:#define符號名常量值例2-1:符號常量舉例#definePRICE30main(){intn,t;n=10;t=n*PRICE;printf("t=%d",t);}運行結(jié)果:total=3002.4變量變量:在程序運行過程中,其值可以改變的量;有關(guān)變量的規(guī)定:

變量通過變量名來標(biāo)識,變量名和內(nèi)存中存儲單元相對應(yīng)。編寫程序時通過變量名來存、取存儲單元。變量名memorya881000H1001H1002H25512inta=12;

變量必須先定義,后使用。2.4變量變量名的命名規(guī)則變量名必須是一個C語言合法的標(biāo)識符!標(biāo)識符名稱定義:用來標(biāo)識變量名、符號常量名等的字符序列;組成:由字母、數(shù)字、下劃線組成,且第一個字符必須是字母或下劃線;區(qū)分大小寫;不能使用關(guān)鍵字;最長32個字符;命名原則:1)見名知意;

2)不宜混淆,如:l與I,o與0;

3)符號常量習(xí)慣全用大寫字母;2.4變量變量名的命名規(guī)則例2-2:判斷下列標(biāo)識符號合法性:sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$1233days#33char$123a>bM.D.John下面列出的是合法的標(biāo)識符,也是合法的變量名:sum1,average,_total,month下面是不合法的標(biāo)識符和變量名:y123,#33,3’d64,263.com2.4變量變量名的命名規(guī)則

下一頁call_ntest39_string1abccall..n39test-string1c2.0

例2-3:判斷下列標(biāo)識符號合法性:C語言的基本字符集

數(shù)字:0123456789

字母:abc……zABC……Z

運算符:+-*/%=<><=>=!===<<>>&|&&||^~()[]{}->.!?:,;“‘特殊符號:_(下劃線)回車(\r)換行(\n)制表符(\t)ASCII字符集基本字符集返回C語言的關(guān)鍵字返回32個關(guān)鍵字:

autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile關(guān)鍵字——由系統(tǒng)定義的具有特殊含義的符號,不能作其它定義2.4變量變量定義的格式定義變量的一般格式:

數(shù)據(jù)類型變量名1[,變量名2,…,變量名n];決定分配字節(jié)數(shù)和數(shù)的表示范圍合法標(biāo)識符如:

inta,b,c;floatdata;2.4變量變量的賦初值定義變量之后可以給變量賦初值,可將一個同類型的常量賦值給變量;inta=2,b,c=4;floatdata=3.67;inta,b,c;floatdata;a=2;c=4;data=3.67;如:inta=2,b,c=4;floatdata=3.67;charch=‘A’;intx=1,y=1,z=1;2.4變量變量的使用規(guī)則如:

intstudent;stadent=19;//Undefinedsymbol‘statent’infunctionmain

變量定義位置:一般放在函數(shù)開頭main(){inta,b=2;a=1;floatdata;data=(a+b)*1.2;printf(“data=%f\n”,data);}變量的使用:先定義,后使用main(){inta,b=2;floatdata;a=1;data=(a+b)*1.2;printf(“data=%f\n”,data);}變量定義可執(zhí)行語句3.1整型數(shù)據(jù)3.1.2整型常量與整型變量1.整型常量整型常量即整常數(shù)

如:123、453.1整型數(shù)據(jù)3.1.2整型常量與整型變量2.整型變量的種類有三種整型變量:

(1)基本整型,以int表示;

(2)短整型,以shortint表示,或以short表示;

(3)長整型,以longint表示,或以long表示;3.1整型數(shù)據(jù)3.1.2整型常量與整型變量2.整型變量的種類在實際應(yīng)用中,變量的值常常是正的(如學(xué)號、庫存量、年齡、存款額等);為了充分利用變量的表數(shù)范圍,此時可以將變量定義為“無符號”類型;對以上三種都可以加上修飾符unsigned,以指定是“無符號數(shù)”;如果加上修飾符signed,則指定是“有符號數(shù)”;如果既不指定為signed,也不指定為unsigned,則隱含為有符號(signed);實際上signed是完全可以不寫的;3.1整型數(shù)據(jù)3.1.2整型常量與整型變量2.整型變量的種類歸納起來,可以用以下6種整型變量;即:

有符號基本整型[signed]int

無符號基本整型unsignedint

有符號短整型[signed]short[int]

無符號短整型unsignedshort[int]

有符號長整型[signed]long[int]

無符號長整型unsignedlong[int]3.1整型數(shù)據(jù)3.1.2整型常量與整型變量2.整型變量的種類

數(shù)據(jù)類型

所占位數(shù)

取值范圍int32-231...............(231-1)unsignedint320...................(232-1)short16-215................(215-1)unsignedshort160...................(216-1)long32-231................(231-1)unsignedlong320..................(232-1)

十進(jìn)制小數(shù)如12.,.12,2.34

指數(shù)形式如1.2e3

123e3(123×103)

,1e3(1×103)

,10E2(10×102)

規(guī)范化形式:小數(shù)部分?jǐn)?shù)字小于1,小數(shù)點后第一個數(shù)字必須是非0數(shù)字(必有小數(shù)點)(e或E前必須有數(shù),且后必為整數(shù))3.2.1實型常量的表示形式3.2實型數(shù)據(jù)數(shù)符(+-)小數(shù)部分指數(shù)部分3.2實型數(shù)據(jù)3.2.2實型變量1.實型變量的分類float、doubleANSIC并沒有具體規(guī)定每種類型數(shù)據(jù)的長度、精度、數(shù)值范圍,由編譯系統(tǒng)自行決定;一般編譯系統(tǒng)規(guī)定如下表:數(shù)據(jù)類型

數(shù)據(jù)的長度精度有效位單精度(float)4字節(jié)6~7位有效數(shù)字雙精度(double)8字節(jié)15~16位有效數(shù)字3.2.2實型變量3.把實數(shù)按雙精度數(shù)處理系統(tǒng)默認(rèn)將實型常量當(dāng)作雙精度處理,加上f或F后就作單精度處理;一個實型常量可對其它實型變量賦值,但要根據(jù)變量的類型截取常量中相應(yīng)的有效位數(shù)如:如:Floata;doublea;a=123456.7a=123456.789接受7位有效數(shù)字9位有效數(shù)字全部接受3.2實型數(shù)據(jù)3.3.1字符常量和字符變量1.字符常量定義:用單引號括起來單個普通字符或轉(zhuǎn)義字符.

如‘a(chǎn)’‘A’‘?’‘\n’字符常量的值:該字符的ASCII碼值如‘A’——65,‘a(chǎn)’——97‘0’——48,‘\n’——123.3字符型數(shù)據(jù)3.3.1字符常量和字符變量2.轉(zhuǎn)義字符轉(zhuǎn)義字符含義轉(zhuǎn)義字符含義\n換行,下行開頭\t水平制表,跳到下一輸出區(qū)\f換頁,下頁開頭\b退格,消除前一個字符\r回車,本行開頭\\反斜線\‘單引號\“雙引號\ddd3位8進(jìn)制數(shù)代表的字符\xhh2位16進(jìn)制數(shù)代表的字符方式:反斜線后面跟一個字符或一個代碼值;意義:表示將反斜杠后面的字符或代碼轉(zhuǎn)換成另外的意義,這這些字符一般不能顯示具體的字符形狀出來,只表示特殊的含義;3.3字符型數(shù)據(jù)3.3.1字符常量和字符變量2.轉(zhuǎn)義字符注意:轉(zhuǎn)義字必須以反斜杠作為開頭標(biāo)志,而且在其后只能有一個字符(或代表字符的八進(jìn)制或十六進(jìn)制數(shù))如:‘\nn’是不合法的

‘\101’‘\x41’‘\A’‘\012’‘\n’

字符常量只包含一個字符,例如‘a(chǎn)’,‘n’(合法);‘a(chǎn)x’,‘food’(不合法);字符常量區(qū)分大小寫;‘’(單引號)是定界符,表示內(nèi)部是一個字符常量,引號本身不屬于字符常量;3.3字符型數(shù)據(jù)3.3.1字符常量和字符變量3.字符變量

字符型變量是通過關(guān)鍵字char來說明的,格式如下:

如:charc1,c2;

每個字符型變量可用來存放一個字符常量;

如:c1=‘A’;c2=‘B’;

可合并為:charc1=‘A’,c2=‘B’;

3.3字符型數(shù)據(jù)3.3.1字符常量和字符變量4.字符數(shù)據(jù)與整型數(shù)據(jù)在一定條件下可以通用1個字符型數(shù)據(jù)在內(nèi)存用1個字節(jié)來存儲,存儲的是字符對應(yīng)的ASCII碼值,將ASCII碼值用二進(jìn)制形式存儲;

如:

A65

B66

01000001

01000010

字符變量和整型變量是通用的,可以互相賦值;

如:charc=‘a(chǎn)’;charc=97;3.3字符型數(shù)據(jù)3.3.1字符常量和字符變量4.字符數(shù)據(jù)與整型數(shù)據(jù)在一定條件下可以通用字符變量可以使用兩種形式輸出,既可以字符(%c)的形式輸出,也可以整型(%d)的形式輸出;例2.3字符數(shù)據(jù)的賦值和輸出

#include<stdio.h>voidmain(){charc1=97,c2=98;/*charc1=‘a(chǎn)’,c2=‘b’*/printf(“%c,%c\n”,c1,c2);printf(“%d,%d\n”,c1,c2);}運行結(jié)果

a,b97,983.3字符型數(shù)據(jù)C語言中的運算符(15類)算術(shù)運算符:+-*/%++--關(guān)系運算符:<<===>>=!=邏輯運算符:!

&&||位運算符:<<>>~|^&賦值運算符:=及其擴(kuò)展條件運算符:?:逗號運算符:,指針運算符:*&求字節(jié)數(shù):sizeof強(qiáng)制類型轉(zhuǎn)換:(類型)分量運算符:.->下標(biāo)運算符:[]其它:()學(xué)習(xí)運算符應(yīng)注意:與運算量關(guān)系要求運算量個數(shù)要求運算量類型運算符優(yōu)先級別結(jié)合方向結(jié)果的類型1算術(shù)運算符和算術(shù)表達(dá)式基本算術(shù)運算符:+-*/%結(jié)合方向:從左向右優(yōu)先級:++------>*/%----->+-

(2)(3)(4)

說明:“-”作為單目運算符時,右結(jié)合性兩整數(shù)相除,結(jié)果為整數(shù)%要求兩側(cè)均為整型數(shù)據(jù)+-*/中任意數(shù)類型為實型,結(jié)果均為實型例5/2=-5/2.0=例5%2=-5%2=1%10=

5%1=5.5%2例5/2=2

-5/2.0=-2.5例5%2=1

-5%2=-11%10=

1

5%1=

05.5%2()inta,b,c;floatd;a*b/c-1.5(a*b)/c*1.5a-b*c

a-(b*c)a-b+c(a-b)+c自增、自減運算符++--作用:使變量值加1或減1優(yōu)先級與-相同,(2)級,從右向左結(jié)合種類:前置++i,--i(先執(zhí)行i+1或i-1,再使用i值相當(dāng)于i=i+1)后置i++,i--(先使用i值,再執(zhí)行i+1或i-1)例j=3;k=++j;j=3;k=j++;j=3;printf(“%d”,++j);j=3;printf(“%d”,j++);a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;//k=4,j=4//k=3,j=4//4//3//c=20,a=4//c=15,a=4說明:++--不能用于常量和表達(dá)式,如5++,(a+b)++++--結(jié)合方向:由右向左優(yōu)先級:-++-------->*/%----->+-(2)(3)(4)2賦值運算符和賦值表達(dá)式簡單賦值運算符符號:=

格式:變量標(biāo)識符=表達(dá)式作用:將一個數(shù)據(jù)(常量或表達(dá)式)賦給一個變量a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3復(fù)合賦值運算符種類:+=-=*=/=%=《=》=&=^=|=

含義:var1op=exp2var1=var1opexp2說明:

結(jié)合方向:由右向左優(yōu)先級:(14)左側(cè)必須是變量,不能是常量或表達(dá)式例inti;i=2.56;//結(jié)果i=2;例:a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)//表達(dá)式值11,c=6,a=11//表達(dá)式值10,a=10,b=4,c=6//表達(dá)式值5,a=5,b=10,c=2

賦值轉(zhuǎn)換規(guī)則:使賦值號右邊表達(dá)式值自動轉(zhuǎn)換成其左邊變量的類型賦值表達(dá)式的值與變量值相等,且可嵌套例:3=x-2*y;

()a+b=3;

()關(guān)系運算符種類:<<===>=>!=

結(jié)合方向:自左向右優(yōu)先級別:(6)----(7)

運算結(jié)果為:1

或0例inta=3,b=2,c=1,d,f;a>bc==a>bb+c<ad=a>bf=a>b>c表達(dá)式值1表達(dá)式值1表達(dá)式值0d=1f=0<<=>>===!=優(yōu)先級(高)(6)優(yōu)先級(低)(7)3關(guān)系運算符和關(guān)系表達(dá)式關(guān)系運算注意事項:例若a=0;b=0.5;x=0.3;則a<=x<=b的值為0例inti=1,j=7,a;a=i+(j%4!=0);則a=2例‘a(chǎn)’>0結(jié)果為‘A’>100結(jié)果為10例注意區(qū)分“=”與“==”inta=0,b=1;if(a=b)printf(“aequaltob”);elseprintf(“anotequaltob”);aequaltob(a==b)anotequaltob

注意數(shù)學(xué)上的關(guān)系運算符和C語言中的關(guān)系運算符的區(qū)別!!ab!a!ba&&ba||b真假真假假假真真邏輯運算符種類:!&&||邏輯運算真值表C語言中,運算量:

0表示“假”,非0表示“真”,

運算結(jié)果:

0表示“假”,1表示“真”,真假假假假假真真假假真真真假真真4邏輯運算符和邏輯表達(dá)式!&&

||

高低例a<=x&&x<=b

a>b&&x>ya==b||x==y!a||a>b優(yōu)先級:(2)(11)(12)結(jié)合方向:!:從右向左&&:從左向右||:從左向右/*(a<=x)&&(x<=b)*//*(a>b)&&(x>y)*//*(a==b)||(x==y)*//*(!a)||(a>b)*/例a=4;b=5;!aa&&ba||b!a||b4&&0||25>3&&2||8<4-!0‘c’&&‘d’值為1值為0值為1值為1值為1值為1(5>3)&&2||(8<(4-(!0)))值為1邏輯運算的短路特性:邏輯表達(dá)式求解時,按從左向右的順序計算運算符兩側(cè)的操作數(shù),一旦得到表達(dá)式的結(jié)果,就停止計算,后面的運算符和表達(dá)式都被“短路”!例a&&b&&c/*只在a為真時,才判別b的值;只在a、b都為真時,才判別c的值*/例a||b||c/*只在a為假時,才判別b的值;只在a、b都為假時,才判別c的值*/例a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)/*結(jié)果m=0,n=1*/一般形式:expr1?expr2:expr3執(zhí)行過程功能:相當(dāng)于條件語句,但不能取代一般if語句例if(a>b)printf(“%d”,a);elseprintf(“%d”,b);printf(“%d”,a>b?a:b);結(jié)合方向:自右向左

如a>b?a:c>d?c:da>b?a:(c>d?c:d)expr1、expr2、expr3類型可不同,表達(dá)式值取較高的類型例x?‘a(chǎn)’:‘b’//x=0,表達(dá)式值為‘b’;x?0,表達(dá)式值為‘a(chǎn)’x>y?1:1.5//x>y,值為1.0;x<y,值為1.55條件運算符和條件表達(dá)式形式:表達(dá)式1,表達(dá)式2,……表達(dá)式n結(jié)合性:從左向右

優(yōu)先級:(15)逗號表達(dá)式的值:等于表達(dá)式n的值用途:求多個表達(dá)式的連續(xù)計算,常用于循環(huán)for語句中例a=3*5,a*4a=3*5,a*4,a+5例x=(a=3,6*3)x=a=3,6*a例a=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);//a=15,表達(dá)式值60//a=15,表達(dá)式值20//賦值表達(dá)式,表達(dá)式值18,x=18//逗號表達(dá)式,表達(dá)式值18,x=3//1,2,3//3,2,36逗號運算符和逗號表達(dá)式5.3C語句的分類

1.控制語句

2.函數(shù)調(diào)用語句

3.表達(dá)式語句

4.空語句

5.復(fù)合語句下一頁5.3C語句的分類條件語句多分支選擇語句9種控制語句循環(huán)語句循環(huán)語句循環(huán)語句結(jié)束本次循環(huán)語句中止執(zhí)行switch或循環(huán)語句1.if()…else…2.switch3.for()…4.while()…5.do…while()6.continue7.Break8.Return9.goto轉(zhuǎn)向語句從函數(shù)返回語句返回5.3C語句的分類由一次函數(shù)調(diào)用加一個分號構(gòu)成的語句函數(shù)調(diào)用語句例如:

printf(“ThisisaCprogram!”);

scanf(“%d”,&a);

又如:若自定義函數(shù)intmax(inta,intb){……}

則有函數(shù)調(diào)用語句

x=max(2,5);返回5.3C語句的分類由一個表達(dá)式后接一個分號構(gòu)成表達(dá)式語句常見的如:賦值表達(dá)式a=3

賦值語句a=3;注意:分號是語句中不可缺少的一部分任何表達(dá)式加上分號后都可以成為語句

如:i=i+1i=i+1;

n++n++;

x+yx+y;(合法但無意義)

z=max(2,5)z=max(2,5);“函數(shù)調(diào)用語句”也屬于表達(dá)式語句

C程序中大多數(shù)語句是表達(dá)式語句,有人把C稱為“表達(dá)式語言”返回5.3C語句的分類只有一個分號的語句,它什么也不做空語句如:

;常用于被轉(zhuǎn)向點、或循環(huán)語句的循環(huán)體如:

if(x>=0);

elsey=x;

while(x==1);返回5.3C語句的分類用{}把一些語句括起來成為復(fù)合語句復(fù)合語句如:if(x>0){i++;

sum=sum+x;

}else{j++;

sub=sub+x;

}注意:★復(fù)合語句中最后一個語句末尾的分號不能漏掉;

★C語言可以一行寫幾個語句,也允許一個語句拆開寫在幾行上;返回5.4輸入和輸出語句一、字符的輸入和輸出格式:getchar()功能:從鍵盤讀一字符字符輸入函數(shù)格式:putchar(c)參數(shù):c為字符變量功能:把字符c輸出到顯示器上字符輸出函數(shù)5.4輸入和輸出語句一、字符的輸入和輸出

可以賦給一個字符變量或整型變量例:#include<stdio.h>main(){charc;c=getchar();putchar(c);}aa5.4輸入和輸出語句二、格式化輸入和輸出格式:printf(“格式控制串”,輸出表)功能:按指定格式向顯示器輸出數(shù)據(jù)格式輸出函數(shù)輸出表:要輸出的數(shù)據(jù)(可以沒有,多個時以“,”分隔)格式控制串:包含兩種信息格式說明:%[修飾符]格式字符,用于指定輸出格式

普通字符或轉(zhuǎn)義序列:原樣輸出5.4輸入和輸出語句二、格式化輸入和輸出例如:printf(“%d%d”,a,b);

格式控制輸出列表printf(“a=

%d

b=

%d”,a,b)

格式說明普通字符輸出列表

可以是表達(dá)式5.4輸入和輸出語句十六進(jìn)制無符號整數(shù)不帶符號十進(jìn)制整數(shù)十進(jìn)制整數(shù)指數(shù)形式浮點小數(shù)單一字符字符串八進(jìn)制無符號整數(shù)小數(shù)形式浮點小數(shù)e和f中較短一種百分號本身d,ix,Xoucse,Efg%%inta=567;printf(“%d”,a);inta=255;printf(“%x”,a);inta=65;printf(“%o”,a);inta=567;printf(“%u”,a);chara=65;printf(“%c”,a);printf(“%s”,“ABC”);floata=567.789;printf(“%e”,a);floata=567.789;printf(“%f”,a);floata=567.789;printf(“%g”,a);printf(“%%”);567ff101567AABC5.677890e+02567.789000567.789%(1)格式字符表:5.4輸入和輸出語句(2)修飾符表:.n對實數(shù),指定小數(shù)點后位數(shù)(四舍五入)修飾符功能m輸出數(shù)據(jù)域?qū)?數(shù)據(jù)長度<m,左補(bǔ)空格;否則按實際輸出輸出數(shù)據(jù)在域內(nèi)左對齊(缺省右對齊)-指定在有符號數(shù)的正數(shù)前顯示正號(+)+輸出數(shù)值時指定左面不使用的空位置自動填00在八進(jìn)制和十六進(jìn)制數(shù)前顯示前導(dǎo)0,0x#在d,o,x,u前,指定輸出精度為long型在e,f,g前,指定輸出精度為double型l對字符串,指定實際輸出位數(shù)5.4輸入和輸出語句例inta=1234;floatf=123.456;printf(“%08d\n”,a);printf(“%010.2f\n”,f);printf(“%0+8d\n”,a);0、+例inta=123;printf(“%o,%#o,%X,%#X\n”,a,a,a,a);

例#例longa=65536;printf(“%d,%8ld\n”,a,a);

例l//00001234//0000123.45//000+1234//173,0173,7B,0X7B//0,65536例5.4輸入和輸出語句%m.nf

指定輸出的數(shù)據(jù)占m列,其中n位小數(shù);右對齊;%-m.nf

同上;

左對齊;

例:

main()

{floatf=123.456;

printf(“%10f%10.2f%-10.2f%.2f\n”,f,f,f,f);}

結(jié)果:123.455994123.46123.46123.465.4輸入和輸出語句二、格式化輸入和輸出格式輸入函數(shù)格式:scanf(“格式控制串”,地址表)功能:按指定格式從鍵盤讀入數(shù)據(jù),存入地址表指定的存儲單元中,并按回車鍵結(jié)束地址表:變量的地址,常用取地址運算符&格式字符:d,i,o,x,u,c,s,f,e例scanf(“%d”,&a);

輸入:10

則a=10例scanf(“%x”,&a);

輸入:11

則a=17程序的三種基本結(jié)構(gòu)結(jié)構(gòu)化程序設(shè)計基本思想:任何程序都可以用三種基本結(jié)構(gòu)表示結(jié)構(gòu)化程序:由三種基本結(jié)構(gòu)反復(fù)嵌套構(gòu)成的程序叫結(jié)構(gòu)化程序;優(yōu)點:結(jié)構(gòu)清晰,易讀,提高程序設(shè)計質(zhì)量和效率三種基本結(jié)構(gòu)一、順序結(jié)構(gòu)AB程序的三種基本結(jié)構(gòu)二、選擇結(jié)構(gòu)二分支選擇結(jié)構(gòu)PAB真假kA1A2AiAnk=k2k=k1k=knk=ki......多分支選擇結(jié)構(gòu)注:A,B,A1….An可以是一個簡單語句,也可以是一個基本結(jié)構(gòu)程序的三種基本結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)PA假真AP假真三、循環(huán)結(jié)構(gòu)第6講順序程序結(jié)構(gòu)順序結(jié)構(gòu)是最基本的一種程序結(jié)構(gòu)!

特點:程序中的語句完全按照語句出現(xiàn)的先后順序依次執(zhí)行前面的例子都是順序結(jié)構(gòu),順序結(jié)構(gòu)的程序主要由4部分構(gòu)成:

1、變量說明部分;

2、數(shù)據(jù)輸入部分;

3、運算部分;

4、運算結(jié)果輸出部分7.1if語句

一、單分支選擇if語句if語句有三種形式:單分支選擇if語句、雙分支面具選擇if語句、多分支選擇if語句。

語句形式:

if(表達(dá)式)語句;

語句執(zhí)行流程:

表達(dá)式語句真(非0)假(0)例7-1:從鍵盤輸入兩個整數(shù)a和b,如果a大于b則交換兩數(shù),最后輸出兩個數(shù)。

7.1if語句#include<stdio.h>輸入a,ba>b交換a、b輸出真假voidmain(){inta,b,t;scanf("%d,%d",&a,&b);

if(a>b){t=a;a=b;b=t;}

printf("a=%d,b=%d\n",a,b);

}7.1if語句注意:(1)if語句自動結(jié)合一個語句,當(dāng)滿足條件需要執(zhí)行多個語句時,應(yīng)用一對大括號{}將需要執(zhí)行的多個語句括起,形成一個復(fù)合語句。(2)if語句中表達(dá)式形式很靈活,可以是常量、變量、任何類型表達(dá)式、函數(shù)等。只要表達(dá)式的值為非零值,條件就為真,反之條件為假。7.1if語句2、雙分支選擇if語句語句形式:if(表達(dá)式)語句1;else語句2;語句執(zhí)行流程:表達(dá)式語句1真(非0)假(0)語句27.1if語句例7-2:輸入兩個整數(shù),輸出其中較大的數(shù)。

#include<stdio.h>#include<math.h>voidmain(){

intx,y,max;scanf("%d,%d",&x,&y);

if(x>y)max=x;elsemax=y;

printf("max=%d\n",max);}輸入x,yx>ymax=x輸出最大值結(jié)束真假max=y7.1if語句注意:if和else語句之間只能有一個語句,當(dāng)if~else之間的語句不只一句時,應(yīng)用一對{}將語句括起。if(a>b){a++;b++;}else{a=0;b=10;}

7.1if語句3、多分支選擇if語句語句形式:if(表達(dá)式1)語句1;elseif(表達(dá)式2)語句2;

……elseif(表達(dá)式n)語句n;

else語句n+1;7.1if語句語句執(zhí)行流程:表達(dá)式1語句1真(非0)假(0)語句2表達(dá)式2真(非0)表達(dá)式n語句n語句n+1假(0)假(0)真(非0)7.1if語句提示:(1)當(dāng)if語句中出現(xiàn)多個“if”與“else”的時候,要特別注意它們之間的匹配關(guān)系,否則就可能導(dǎo)致程序邏輯錯誤?!癳lse”與“if”的匹配原則是“就近一致原則”,即“else”總是與它前面最近的“if”相匹配。if(……)if(……)if(……)else…...else…...else…...7.1if語句if()

if()語句1

else

if()語句2

else語句3

內(nèi)嵌ifif()

{if()語句1}

else

{if()語句2

else語句3

}內(nèi)嵌if內(nèi)嵌if7.1if語句例:if(a==b)if(b==c)printf(“a==b==c”);elseprintf(“a!=b”);修改:if(a==b){if(b==c)printf(“a==b==c”);}elseprintf(“a!=b”);實現(xiàn)if~else正確配對方法:加{}如果if與else的數(shù)目不一樣,可以加花括號{}來確定配對關(guān)系。7.2switch語句1、語句形式:switch(表達(dá)式)

{ case常量1:語句1;

case常量2:語句2;

case常量3:語句3;

.......case常量n:語句n;

default:語句n+1;

}根據(jù)表達(dá)式的不同值,選擇不同的程序分支,又稱開關(guān)語句。數(shù)值型或字符型常量表達(dá)式的值必須互不相同,否則執(zhí)行時將出現(xiàn)矛盾,即同一個開關(guān)值,將對應(yīng)多種執(zhí)行方案。千萬不能接;7.2switch語句2、語句執(zhí)行流程:指語句的最后一條是否為break簡單語句或復(fù)合語句breakbreak有無break有無有計算表達(dá)式常量1常量2常量n=語句1…===語句2語句n其它=語句n+1無值case語句出現(xiàn)的次序并不影響執(zhí)行結(jié)果。8.1while循環(huán)控制語句一般格式

while(表達(dá)式)

語句

一般為關(guān)系表達(dá)式或邏輯表達(dá)式,也可以是C語言其他類型的合法表達(dá)式

用來控制循環(huán)體是否執(zhí)行稱為內(nèi)嵌語句,可以是基本語句、控制語句,也可以是復(fù)合語句是循環(huán)重復(fù)執(zhí)行的部分功能:計算表達(dá)式的值,為非0(邏輯真)時,重復(fù)執(zhí)行內(nèi)嵌語句,每執(zhí)行一次,就判斷一次表達(dá)式的值,直到表達(dá)式的值為0時結(jié)束循環(huán),轉(zhuǎn)去執(zhí)行while后面的語句。NY流程圖表達(dá)式非0?語句循環(huán)控制條件循環(huán)體例如:【例5.1】編寫程序,求100個自然數(shù)的和即:

s=1+2+3+…+100思路:尋找加數(shù)與求和的規(guī)律

加數(shù)i——從1變到100,每循環(huán)一次,使i增1,直到i的值超過100。i的初值設(shè)為1。求和——設(shè)變量sum存放和,循環(huán)求sum=sum+i,直至i超過100。

算法和程序:main(){inti,sum;i=1;sum=0;while(i<=100)

{sum=sum+i;i++;

}printf("sum=%d\n",sum);}程序輸出結(jié)果:sum=5050i:循環(huán)控制變量sum:累加器8.2do-while語句語句一般格式

do語句

while(表達(dá)式);

功能:先執(zhí)行內(nèi)嵌語句(循環(huán)體),之后計算表達(dá)式的值,不為0(邏輯真)時,再執(zhí)行循環(huán)體并判斷條件,直到表達(dá)式的值為0結(jié)束循環(huán),轉(zhuǎn)去執(zhí)行while下面的語句。do-while循環(huán)的算法NY循環(huán)體表達(dá)式非0?流程圖main(){inti=1,sum=0;do{sum=sum+i;i++;}while(i<=100);printf("%d\n",sum);}用do-while語句求100個自然數(shù)的和說明:while和do-while都能實現(xiàn)循環(huán)控制,while結(jié)構(gòu)程序通常都可以轉(zhuǎn)換成do-while結(jié)構(gòu)區(qū)別:do-while語句先執(zhí)行循環(huán)體再判斷條件,循環(huán)體至少執(zhí)行一次;while語句先判斷條件再執(zhí)行循環(huán)體,循環(huán)體有可能一次也不執(zhí)行do—while循環(huán)體中一定要有能使表達(dá)式值趨于0的操作(如i++),否則會出現(xiàn)死循環(huán)。

8.3for語句語句一般格式

for(表達(dá)式1;表達(dá)式2;表達(dá)式3)

語句功能:計算表達(dá)式1的值,再判斷表達(dá)式2,如果其值為非0(邏輯真),則執(zhí)行內(nèi)嵌語句(循環(huán)體),并計算表達(dá)式3;之后再去判斷表達(dá)式2,一直到其值為0時結(jié)束循環(huán),執(zhí)行后續(xù)語句。for語句的算法NY流程圖計算表達(dá)式1

語句計算表達(dá)式3表達(dá)式2為真?例如:main(){inti,sum;sum=0;

for(i=1;i<=100;i++)sum=sum+i;printf("sum=%d\n",sum);}9.2.1函數(shù)的定義函數(shù)定義的一般形式函數(shù)類型函數(shù)名(類型名形式參數(shù)1,…

){聲明部分

執(zhí)行語句}例如:求兩個數(shù)的最大值。

int

max(intx,inty){intz;z=x>y?x:y;return(z);}類型省略時默認(rèn)為int類型沒有形式參數(shù)為無參函數(shù)

函數(shù)名(實參表列)在C語言中,把函數(shù)調(diào)用也作為一個表達(dá)式。因此凡是表達(dá)式可以出現(xiàn)的地方都可以出現(xiàn)函數(shù)調(diào)用。例如:①welcome();

②if(iabs(a)>max)max=iabs(a);

③m=max(c,max(a,b));9.2.2函數(shù)的調(diào)用函數(shù)調(diào)用的一般形式:voidswap(intx,inty){intz;z=x;x=y;y=z; printf("\nx=%d,y=%d",x,y);}main(){inta=10,b=20;swap(a,b);printf("\na=%d,b=%d\n",a,b);}9.2.3函數(shù)參數(shù)與函數(shù)的返回值1.函數(shù)的形式參數(shù)與實際參數(shù)程序輸出結(jié)果:x=20,y=10a=10,b=20形式參數(shù)(形參)實際參數(shù)(實參)【例9.4】編一程序,將主函數(shù)中的兩個變量的值傳遞給swap函數(shù)中的兩個形參,交換兩個形參的值。單向值傳遞有關(guān)形參和實參的說明:

①實參可以是常量、變量或表達(dá)式,但要求它們有確定的值。②實參與形參類型要一致,字符型與整型可兼容。③實參與形參的個數(shù)必須相等。在函數(shù)調(diào)用時,實參的值賦給與之相對應(yīng)的形參?!皢蜗蛑祩鬟f”。2.函數(shù)的類型與函數(shù)的返回值說明:①函數(shù)的類型決定了函數(shù)返回值的類型。若省略函數(shù)的類型,系統(tǒng)默認(rèn)其為int型。②無返回值的函數(shù)應(yīng)將其類型定義為void(空)類型。⑴函數(shù)的類型【例9.6】輸出兩個數(shù)中的大數(shù)。max(intx,inty){intz;z=x>y?x:y;return(z);/*返回z的值*/}main(){inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("maxis%d\n",c);}函數(shù)的返回值是通過return語句帶回到主調(diào)函數(shù)的功能:終止函數(shù)的運行,返回主調(diào)函數(shù),若有返回值,將返回值帶回主調(diào)函數(shù)。說明:①若函數(shù)沒有返回值,return語句可以省略。②return語句中的表達(dá)式類型一般應(yīng)和函數(shù)的類型一致,如果不一致,系統(tǒng)自動將表達(dá)式類型轉(zhuǎn)換為函數(shù)類型。⑵函數(shù)的返回值return語句格式:return(表達(dá)式);

或return表達(dá)式

;或return;9.4局部變量和全局變量及其作用域9.4.1變量的作用域9.4.2局部變量及其作用域變量的作用域:變量在程序中可以被使用的范圍。根據(jù)變量的作用域可以將變量分為局部變量和全局變量。局部變量(內(nèi)部變量):在函數(shù)內(nèi)定義的變量以及形參。作用域:函數(shù)內(nèi)。問題:一個變量在程序的哪個函數(shù)中都能使用嗎?9.4.3全局變量及其作用域全局變量(外部變量):在函數(shù)外部定義的變量。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論