版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、01C語(yǔ)言基本結(jié)構(gòu)一、C語(yǔ)言的特點(diǎn):1、C語(yǔ)言源程序的基本組成單位是函數(shù);一個(gè)C程序可由若干個(gè)函數(shù)組成,其中必須有且僅有一個(gè)以main命名的主函數(shù)。2、C程序的執(zhí)行總是由main()函數(shù)的第一個(gè)可執(zhí)行語(yǔ)句開(kāi)始,到main()函數(shù)的最后一個(gè)可執(zhí)行的語(yǔ)句結(jié)束;而其他函數(shù)都是在main()函數(shù)開(kāi)始執(zhí)行以后,通過(guò)其他函數(shù)的調(diào)用才得以運(yùn)行。3、用戶(hù)在C程序中需要調(diào)用某個(gè)庫(kù)函數(shù)時(shí),必須用#include編譯預(yù)處理命令將描述該庫(kù)函數(shù)的頭文件包含進(jìn)去。二、C程序的書(shū)寫(xiě)格式:1、語(yǔ)句可分開(kāi)放在任意多行內(nèi);如:printf(To C,);printf( or not to C:);與printf(To C , o
2、r not to C:);是等價(jià)的2、一行中可以有若干個(gè)語(yǔ)句;如:a=123;b=345;3、每個(gè)語(yǔ)句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào);三、C語(yǔ)言程序的運(yùn)行:1、編譯(Compile):將C源程序文件翻譯成能被計(jì)算機(jī)識(shí)別的二進(jìn)制形式的目標(biāo)文件。2、建造(Bulid): 將目標(biāo)文件、系統(tǒng)庫(kù)函數(shù)等文件結(jié)合起來(lái),生成可執(zhí)行的EXE文件。 C語(yǔ)言程序示例:顯示Hello #include main() printf(Hellon); 說(shuō)明:#include 是必不可少的,它包含了C語(yǔ)言標(biāo)準(zhǔn)輸入輸出庫(kù)的相關(guān)信息; printf 函數(shù)來(lái)自標(biāo)準(zhǔn)輸入輸出庫(kù),可以產(chǎn)生格式化輸出; n 告訴printf函數(shù)執(zhí)行完信
3、息顯示后要進(jìn)行換行操作; 來(lái)標(biāo)出main()函數(shù)的起始和結(jié)束。02數(shù)據(jù)類(lèi)型一、標(biāo)識(shí)符、常量和變量1、標(biāo)識(shí)符:標(biāo)識(shí)符是起標(biāo)識(shí)作用的一類(lèi)符號(hào);一般用來(lái)標(biāo)識(shí)用戶(hù)或系統(tǒng)定義的變量名、符號(hào)常量名、函數(shù)名、類(lèi)型名等。(1)標(biāo)識(shí)符由字母、數(shù)字、下劃線(_)組成,第一個(gè)字符必須是字母或下劃線。(2)C語(yǔ)言區(qū)分大小寫(xiě)字母;如 sum和SUM 就是兩個(gè)不同的標(biāo)識(shí)符。(3)用戶(hù)自己定義的標(biāo)識(shí)符不得與關(guān)鍵字同名;2、常量:指在程序中已知的在程序中直接寫(xiě)出的數(shù)值。在程序運(yùn)行過(guò)程中,常量的值不允許被改變。直接常量:用數(shù)值表示的量,如23,A,awq等;符號(hào)常量:用標(biāo)識(shí)符表示的常量;符號(hào)常量在使用前必須加以定義;定義的格式
4、: #define 標(biāo)識(shí)符 常量其中:#define是一條預(yù)處理命令,其功能是把該標(biāo)識(shí)符定義為其后的常量值。 如:計(jì)算半徑r為10時(shí)圓面積#define pi 3.1415926#includemain() double area,r; r=10.0; area=pi*r*r; printf(Area=%lf,area); 3、變量:在程序運(yùn)行過(guò)程中,其值可以被改變的量(1)變量的三要素:變量名、數(shù)據(jù)類(lèi)型和變量的值。(2)C語(yǔ)言規(guī)定:程序中用到的變量,必須先定義后使用;(3)變量定義的格式: 如:int a ,b; /* int 表明所定義變量?jī)?chǔ)存的數(shù)值為整數(shù) */(4)通常,對(duì)變量的定義放在
5、函數(shù)體的開(kāi)頭,也可以放在函數(shù)的外部或復(fù)合語(yǔ)句的開(kāi)頭。(5)C語(yǔ)言允許在定義變量的同時(shí)對(duì)變量進(jìn)行初始化; 如: int a=3; /* 定義a為整形變量,初值為3 */ 二、簡(jiǎn)單數(shù)據(jù)類(lèi)型在C語(yǔ)言程序中,不同數(shù)據(jù)類(lèi)型的數(shù)據(jù),在內(nèi)存中所需的存儲(chǔ)空間的大小是不同的,其能夠支持的運(yùn)算、相應(yīng)的運(yùn)算規(guī)則也是不同的。1、基本類(lèi)型: (1)整型: 整型常量:即整型常數(shù); 十進(jìn)制表示法:如 123、-345; 八進(jìn)制表示法:以0開(kāi)頭的數(shù),如 0126; 十六進(jìn)制表示法:前綴為0 x或0X,其數(shù)碼取值為09,AF或af; 整型變量包括:基本型(int)、短整型(short int 或 short)、長(zhǎng)整型(long
6、 int 或 long)、和無(wú)符號(hào)型(unsigned int、unsigned short、unsigned long)。 整型變量的定義:整型變量用來(lái)存放整數(shù)的,在使用之前使用標(biāo)識(shí)符加以定義; 如 int a,b; /* 定義a、b為整型變量 */ unsigned short c,d; /* 定義c、d為無(wú)符號(hào)短整型變量 */ long ab,ef; /* 定義ab、ef為長(zhǎng)整型變量 */ 【例】整型變量的定義與使用: #include main() int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u;d=b+u; printf(a+u=%d,
7、b+u=%dn,c,d); (2)實(shí)型(單精度、雙精度): 實(shí)型數(shù)據(jù)類(lèi)型分為:?jiǎn)尉刃停╢loat)、雙精度型(double)和長(zhǎng)雙精度型(long double); 實(shí)型常量: 十進(jìn)制小數(shù)形式:由數(shù)字和小數(shù)點(diǎn)組成,如 0.123、.23、23.0 指數(shù)形式:由尾數(shù)、e(E)和指數(shù)組成,如123e2 (等于123*102); 實(shí)型變量的定義:實(shí)型變量用來(lái)存放實(shí)型數(shù)據(jù)的,在使用前必須使用標(biāo)識(shí)符加以定義; 如 float x,y; /* 定義x、y為單精度實(shí)型變量 */ double z; /* 定義z為雙精度實(shí)型變量 */(3)字符型: 字符常量 普通字符常量是由單引號(hào)括起來(lái)的一個(gè)字符;如 a、
8、6、D 等; 字符常量的特點(diǎn): 1)字符常量只能用單引號(hào)括起來(lái),不能用雙引號(hào)或其它括號(hào)。 2)字符常量只能是單個(gè)字符。 3)字符可以是字符集中任意字符。但數(shù)字被定義為字符型之后就不能參與數(shù)值運(yùn)算。如5和5 是不同的,5是字符常量,不能以5為值參加數(shù)值運(yùn)算。 轉(zhuǎn)義字符:以反斜杠后跟一個(gè)或幾個(gè)字符用來(lái)表示那些用一般字符不便于表示的控制代碼。轉(zhuǎn)義字符轉(zhuǎn)義字符的意義ASCII代碼n回車(chē)換行10t橫向跳到下一制表位置9b退格8r回車(chē)13f走紙換頁(yè)12反斜線符92單引號(hào)符39雙引號(hào)符34a鳴鈴7ddd13位八進(jìn)制數(shù)所代表的字符xhh12位十六進(jìn)制數(shù)所代表的字符 【例】轉(zhuǎn)義字符的使用。#include ma
9、in() int a,b,c; a=5; b=6; c=7; printf( ab ctderfn); printf(hijktLbMn);字符變量:用字符類(lèi)型標(biāo)識(shí)符char來(lái)定義;字符變量占一個(gè)字節(jié)的存儲(chǔ)單元,只能存放一個(gè)字符; 定義格式:char ; 如 char c1,c2; 字符變量賦值:字符變量只能存放一個(gè)字符; 如 c1=1;c2=d; 【例】向字符變量賦以整數(shù)。#include main() char a,b; a=120; /* x的ASCII碼值 */ b=121; /* y 的ASCII碼值 */ printf(%c,%cn,a,b); /* 輸出字符x、y */ prin
10、tf(%d,%dn,a,b); /* 輸出字符的ASCII值*/ 【例】字符的大小寫(xiě)轉(zhuǎn)換 #include main() char a,b; a=m; b=n; a=a-32; /* A的ASCII碼值 */ b=b-32; /* B的ASCII碼值*/ printf(%c,%cn,a,b); /* 輸出A、B 字符*/ printf(%d,%dn,a,b); /* 輸出A、B的ASCII碼值*/ 字符串常量:是一對(duì)雙引號(hào)括起來(lái)的字符序列; 如 a 、 、 123 、 SDCF等都是合法的字符串常量;字符串常量和字符常量的區(qū)別:1)字符常量由單引號(hào)括起來(lái),字符串常量由雙引號(hào)括起來(lái);2)字符常量
11、只能是單個(gè)字符,字符串常量則可以含一個(gè)或多個(gè)字符;3)可以把一個(gè)字符常量賦予一個(gè)字符變量,但不能把一個(gè)字符串常量賦予一個(gè)字符變量;4)字符常量占一個(gè)字節(jié)的內(nèi)存空間。字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中字節(jié)數(shù)加1。增加的一個(gè)字節(jié)中存放字符0 (ASCII碼為0)。這是字符串結(jié)束的標(biāo)志;如:字符串 C program 在內(nèi)存中所占的字節(jié)為:Cprogram0字符常量a和字符串常量a雖然都只有一個(gè)字符,但在內(nèi)存中的情況是不同的。a在內(nèi)存中占一個(gè)字節(jié),可表示為: aa在內(nèi)存中占二個(gè)字節(jié),可表示為:a003運(yùn)算符與表達(dá)式1、算術(shù)運(yùn)算符和表達(dá)式 +:加法運(yùn)算符,如 35,結(jié)果為8; -:減法運(yùn)算符,如 5
12、-3,結(jié)果為2; *:乘法運(yùn)算符,如 5*8,結(jié)果為40; /:除法運(yùn)算符,如 3/6;參與運(yùn)算量均為整型時(shí),結(jié)果也為整型,舍去小數(shù);若運(yùn)算量中有一個(gè)是實(shí)型,則結(jié)果為雙精度實(shí)型。 %:模運(yùn)算符,也稱(chēng)取余運(yùn)算符,用于計(jì)算兩數(shù)相除后的余數(shù),如 5%3=2;2、賦值運(yùn)算符和賦值表達(dá)式賦值運(yùn)算符:,其作用是將一個(gè)表達(dá)式的值賦給一個(gè)變量; 其一般形式為: 變量=表達(dá)式如:x=a+b;賦值表達(dá)式的功能是計(jì)算表達(dá)式的值再賦予左邊的變量。賦值運(yùn)算符具有右結(jié)合性。因此 a=b=c=5 可理解為 a=(b=(c=5);復(fù)合賦值運(yùn)算符:+=、-=、*=、/=、%=、=、=、&=、=、|=構(gòu)成復(fù)合賦值表達(dá)式的一般形式
13、為:變量 雙目運(yùn)算符=表達(dá)式它等價(jià)于:變量=變量 運(yùn)算符 表達(dá)式如: a+=5 等價(jià)于a=a+5 x*=y+7 等價(jià)于x=x*(y+7) r%=p 等價(jià)于r=r%p3、類(lèi)型轉(zhuǎn)換如果賦值運(yùn)算符兩邊的數(shù)據(jù)類(lèi)型不相同,系統(tǒng)將自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換,即把賦值號(hào)右邊的類(lèi)型換成左邊的類(lèi)型。具體規(guī)定如下:1)實(shí)型賦予整型,舍去小數(shù)部分。前面的例子已經(jīng)說(shuō)明了這種情況。2)整型賦予實(shí)型,數(shù)值不變,但將以浮點(diǎn)形式存放,即增加小數(shù)部分(小數(shù)部分的值為0)。3)字符型賦予整型,由于字符型為一個(gè)字節(jié),而整型為二個(gè)字節(jié),故將字符的ASCII碼值放到整型量的低八位中,高八位為0。整型賦予字符型,只把低八位賦予字符量。4、自增、自
14、減運(yùn)算符:自增運(yùn)算符:+,功能是將變量的值加1;自減運(yùn)算符:-,功能是將變量的值減1;可有以下幾種形式:+i i自增1后再參與其它運(yùn)算。-i i自減1后再參與其它運(yùn)算。i+ i參與運(yùn)算后,i的值再自增1。i- i參與運(yùn)算后,i的值再自減1。 注:(1)+、-的操作對(duì)象只能是變量;(2)+、-運(yùn)算優(yōu)先級(jí)相同,且結(jié)合方向自右向左;-i+應(yīng)理解為-(i+),【例】自增、自減運(yùn)算、#includemain() int i=8; printf(%dn,+i); /* i先加1,再輸出i ,輸出結(jié)果為9 */ printf(%dn,-i); /* i先減1,再輸出i ,結(jié)果為8 */ printf(%dn
15、,i+); /* 先輸出i ,輸出結(jié)果為8,i再加1, */ printf(%dn,i-); /* 先輸出i ,輸出結(jié)果為9,i再減1, */ printf(%dn,-i+); /* 先加輸出-i,輸出結(jié)果為-8,i再加1 */ printf(%dn,-i-); /* 先輸出-i ,輸出結(jié)果為-9,i再減1 */ 5、求字節(jié)運(yùn)算符 計(jì)算表達(dá)式的結(jié)果所占字節(jié)數(shù)或某種數(shù)據(jù)類(lèi)型的定義字節(jié)數(shù)。 一般格式:sizeof(數(shù)據(jù)類(lèi)型標(biāo)識(shí)符) 或 sizeof(表達(dá)式)如: sizeof(float)的值為4,占4個(gè)字節(jié); Sizeof(2*3)的值為2,占2個(gè)字節(jié);6、關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符:(小
16、于)、 (大于)、=(大于等于) 、=(等于)、 !=(不等于)關(guān)系表達(dá)式:若關(guān)系表達(dá)式成立,其值為真,否則為假;在C語(yǔ)言中,用0代表假,用非零值(常用1)代表真;7、邏輯運(yùn)算符和邏輯表達(dá)式:邏輯運(yùn)算符: ! (非)、 & (與)、 |(或);運(yùn)算優(yōu)先級(jí): !&|邏輯表達(dá)式:用邏輯運(yùn)算符將表達(dá)式連接起來(lái)的式子;邏輯表達(dá)式的結(jié)果仍然是邏輯量(真或假)8、條件運(yùn)算符:一般格式: ?:先計(jì)算表達(dá)式1,若表達(dá)式1的值為真,則計(jì)算表達(dá)式2的值,且表達(dá)式2的值為整個(gè)條件表達(dá)式的值;否則,計(jì)算表達(dá)式3的值,且表達(dá)式3的值即為整個(gè)條件表達(dá)式的值。9、逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式逗號(hào)運(yùn)算符:,作為運(yùn)算符,其功能是將多
17、個(gè)表達(dá)式組成一個(gè)表達(dá)式;一般形式:表達(dá)式1,表達(dá)式2,表達(dá)式n 求解過(guò)程:先計(jì)算表達(dá)式1,再計(jì)算表達(dá)式2,依此計(jì)算表達(dá)式n,最終,表達(dá)式n的值即為整個(gè)表達(dá)式的值。04順序結(jié)構(gòu)一、概述: 順序語(yǔ)句按照語(yǔ)法形式分為:表達(dá)式語(yǔ)句、函數(shù)調(diào)用語(yǔ)句、復(fù)合語(yǔ)句、流程控制語(yǔ)句和空語(yǔ)句。1、表達(dá)式語(yǔ)句:語(yǔ)法格式:表達(dá)式;如:a+4;其中賦值語(yǔ)句為最典型的表達(dá)式語(yǔ)句,如: a=5; a=b+3; 特別提示:分號(hào)(;)是表達(dá)式語(yǔ)句中不可缺少的一部分。2、函數(shù)調(diào)用語(yǔ)句:如:printf(I am a student!);其中:printf()為系統(tǒng)提供的函數(shù),用于顯示信息。3、復(fù)合語(yǔ)句:所謂復(fù)合語(yǔ)句即由一對(duì)括起來(lái)的一
18、組語(yǔ)句,也稱(chēng)塊語(yǔ)句或分程序。一般形式為: 語(yǔ)句1 語(yǔ)句2 . 語(yǔ)句n 如: i+;j=a+3;printf(%d,j=,i,j); 特別提示:復(fù)合語(yǔ)句中的最后一條語(yǔ)句的分號(hào)不得缺少;復(fù)合語(yǔ)句的之后不得有分號(hào)。 二、數(shù)據(jù)的輸入輸出 C語(yǔ)言提供了一些輸入輸出函數(shù),如printf()和scanf(),在程序中調(diào)用這些輸入輸出函數(shù)時(shí),必須將標(biāo)準(zhǔn)輸入輸出頭文件stdio.h包含到用戶(hù)所編寫(xiě)的源程序中。 如:#include 其中:#include命令一般寫(xiě)在程序的開(kāi)頭位置。 1、格式輸入輸出 1、格式輸出函數(shù)printf() (1)一般格式: printf(格式字符串,輸出列表) 其中:格式字符串包括輸
19、出字符和格式控制字符(由%和格式字符組成,指定輸出項(xiàng)的輸出格式)。 d格式符:用于輸出十進(jìn)制整數(shù); %d:以十進(jìn)制形式顯示輸出變量的值; %5d:以十進(jìn)制形式顯示變量的值,且至少占用5個(gè)字符的空間,若不夠5位數(shù)字,則左側(cè)補(bǔ)空格; %-5d:以十進(jìn)制形式顯示變量的值,且至少占用5個(gè)字符的空間,左對(duì)齊; %5.3d:以十進(jìn)制形式顯示變量的值,且至少占用5個(gè)字符的空間并至少有3位數(shù)字,若不夠3位數(shù)字,則左側(cè)補(bǔ)0; 如:#include main() int i; i=40; printf(%dn,i); printf(%5dn,i); printf(%-5dn,i); printf(%5.3dn,i
20、); f格式符:用于以小數(shù)形式輸出實(shí)數(shù); %10.3f:以定點(diǎn)十進(jìn)制形式顯示變量的值,且總共用10個(gè)字符,其中,整數(shù)位6位,小數(shù)位3位,小數(shù)點(diǎn)1位; 如:#include main() float x; x=839.21f; printf(%10.3fn,x); c格式符:用于輸出一個(gè)字符; 如: x=a,y =b, 則 printf(%c %c,x,y)的輸出結(jié)果為:a b 若變量的值為整數(shù),則輸出該整數(shù)值為ASCII碼的字符: 如 x=65,y=98,則 printf(%c, %c,x,y)的輸出結(jié)果為: A, b; 同理,一個(gè)字符的數(shù)據(jù)也可以以整數(shù)的形式輸出; 如 x=a,y=B,則pr
21、intf(%d,%d,x,y)的輸出結(jié)果為:97,66 s格式符:用于輸出一個(gè)字符串。 如:printf(%s,I am a student !) e,E格式符:用于以指數(shù)形式輸出實(shí)數(shù)。 如:printf(%e, 123.456),則輸出結(jié)果為:1.234560e+002; g,G格式符:用于輸出實(shí)數(shù),根據(jù)數(shù)值的大小自動(dòng)選擇f格式或e格式。 2、格式輸入函數(shù)scanf() (1)一般格式: scanf(格式字符串,變量地址表) 其中:格式字符串使用雙引號(hào)括起來(lái)的字符串,包括普通字符(按原樣輸入)、格式控制字符(由%和格式字符組成,用來(lái)標(biāo)定輸入數(shù)據(jù)的格式)。 變量地址表是由若干個(gè)變量地址組成的表
22、列,可以是變量的地址,也可以使字符串的首地址。 d格式:用于輸入十進(jìn)制整數(shù);如:scanf(%d,%d,&x,&y);則輸入格式為:123 ,3456 u格式:用于輸入十進(jìn)制無(wú)符號(hào)整數(shù); f格式:用于輸入以小數(shù)形式的實(shí)數(shù);如:scanf(%f,%f,&x,&y);則輸入格式為:123.23,23.456 c格式:用于輸入一個(gè)字符;如:scanf(%c,%c,&x,&y);則輸入格式為:a,b s格式:用于輸入一個(gè)字符串;如:scanf(%s,a);假定a為字符數(shù)組,則輸入格式為:abcdef注:輸入的字符串中間不能包含空格。 特別說(shuō)明: 對(duì)于變量,&加變量名即為該變量的地址;如:&a、&b等分
23、別表示變量a和變量b的地址; 對(duì)于字符串?dāng)?shù)組或字符指針型變量,數(shù)組名和指針變量名本身即為其地址; 可以在%和格式字符之間加表示位數(shù)的數(shù)字;如:scanf(%5s,p);表示只能輸入5個(gè)字符給字符串指針p;05選擇結(jié)構(gòu)一、if語(yǔ)句: 一般格式: if(表達(dá)式) 語(yǔ)句;表示:當(dāng)表達(dá)式成立時(shí),則執(zhí)行語(yǔ)句;否則跳過(guò)語(yǔ)句;如:if (ab) printf(ab!);例:若用戶(hù)輸入的數(shù)為3的倍數(shù),則顯示OK #include main() int a; scanf(%d,&a); if(a %3=0) printf(OK); 二、if-else 語(yǔ)句:一般格式:if (表達(dá)式) 語(yǔ)句1;else 語(yǔ)句2;
24、例:給出用戶(hù)輸入的兩個(gè)整數(shù)的較大者 #include main() int a,b; scanf(%d,%d,&a,&b); if(ab) printf(the max=%d,a); else printf( the max=%d,b); 三、if語(yǔ)句的嵌套1、if子句中嵌套: if(表達(dá)式1) if(表達(dá)式2) 語(yǔ)句1; else 語(yǔ)句2;else 語(yǔ)句3; if(表達(dá)式1) if(表達(dá)式2) 語(yǔ)句1; Else 語(yǔ)句2; 2、else子句中嵌套 if (表達(dá)式1) 語(yǔ)句1; else if(表達(dá)式2) 語(yǔ)句2; else 語(yǔ)句3; if(表達(dá)式1) 語(yǔ)句1; else if(表達(dá)式2) 語(yǔ)
25、句2;3、嵌套一般格式: if (表達(dá)式1) 語(yǔ)句1; else if (表達(dá)式2) 語(yǔ)句2; else if (表達(dá)式3) 語(yǔ)句3 ;else if(表達(dá)式n) 語(yǔ)句n;else 語(yǔ)句n+1; 例:將用戶(hù)輸入的成績(jī)按以下規(guī)則轉(zhuǎn)換成等級(jí)成績(jī): 分?jǐn)?shù): 90100 等級(jí):優(yōu) 分?jǐn)?shù): 8089 等級(jí):良 分?jǐn)?shù): 7079 等級(jí):中 分?jǐn)?shù): 6069 等級(jí):及格 分?jǐn)?shù): 60以下 等級(jí):不及格 # include main() int d; printf(輸入分?jǐn)?shù):); scanf(%d,&d); if(d=90 ) printf(優(yōu)); else if(d=80) printf( 良); else
26、 if(d=70) printf( 中); else if(d=60) printf( 及格); else printf( 不及格); 四、條件語(yǔ)句:表達(dá)式1 ? 表達(dá)式2 :表達(dá)式3執(zhí)行的過(guò)程:若表達(dá)式1的值為非0時(shí),該條件語(yǔ)句的職位表達(dá)式2,否則為表達(dá)式3;例:求一個(gè)整數(shù)的絕對(duì)值 #include main() int i,absi; scanf(%d,&i);absi=i0 ? i : -i;printf(%d絕對(duì)值是%dn,i,absi); 五、switch語(yǔ)句 switch (表達(dá)式) case 常量表達(dá)式1: 語(yǔ)句1 ; break; case常量表達(dá)式2: 語(yǔ)句2 ; break
27、; case常量表達(dá)式n:語(yǔ)句n ; break; default: 語(yǔ)句n+1; 例:商店賣(mài)貨物,每一件3.5元,按購(gòu)買(mǎi)的數(shù)量給與優(yōu)惠: 購(gòu)買(mǎi)100件,優(yōu)惠5%; 購(gòu)買(mǎi)200件以上,優(yōu)惠6%; 購(gòu)買(mǎi)300件以上,優(yōu)惠8%; 購(gòu)買(mǎi)400件以上,優(yōu)惠10%; 購(gòu)買(mǎi)500件以上,優(yōu)惠15%; #include main() int n; float p,price; scanf(%d,&n); switch(n/100) case 1: p=0.05; break; case 2: p=0.06; break; case 3: p=0.08; break; case 4: p=0.10; brea
28、k; case 5: p=0.15; break; price=3.5*n*(1-p); printf(%應(yīng)付款=%7.2fn,price); 06循環(huán)結(jié)構(gòu)一、if語(yǔ)句: 一般格式: if(表達(dá)式) 語(yǔ)句;表示:當(dāng)表達(dá)式成立時(shí),則執(zhí)行語(yǔ)句;否則跳過(guò)語(yǔ)句;如:if (ab) printf(ab!);例:若用戶(hù)輸入的數(shù)為3的倍數(shù),則顯示OK #include main() int a; scanf(%d,&a); if(a %3=0) printf(OK); 二、if-else 語(yǔ)句:一般格式:if (表達(dá)式) 語(yǔ)句1;else 語(yǔ)句2;例:給出用戶(hù)輸入的兩個(gè)整數(shù)的較大者 #include mai
29、n() int a,b; scanf(%d,%d,&a,&b); if(ab) printf(the max=%d,a); else printf( the max=%d,b); 三、if語(yǔ)句的嵌套1、if子句中嵌套: if(表達(dá)式1) if(表達(dá)式2) 語(yǔ)句1; else 語(yǔ)句2;else 語(yǔ)句3; if(表達(dá)式1) if(表達(dá)式2) 語(yǔ)句1; Else 語(yǔ)句2; 2、else子句中嵌套 if (表達(dá)式1) 語(yǔ)句1; else if(表達(dá)式2) 語(yǔ)句2; else 語(yǔ)句3; if(表達(dá)式1) 語(yǔ)句1; else if(表達(dá)式2) 語(yǔ)句2;3、嵌套一般格式: if (表達(dá)式1) 語(yǔ)句1; el
30、se if (表達(dá)式2) 語(yǔ)句2; else if (表達(dá)式3) 語(yǔ)句3 ;else if(表達(dá)式n) 語(yǔ)句n;else 語(yǔ)句n+1; 例:將用戶(hù)輸入的成績(jī)按以下規(guī)則轉(zhuǎn)換成等級(jí)成績(jī): 分?jǐn)?shù): 90100 等級(jí):優(yōu) 分?jǐn)?shù): 8089 等級(jí):良 分?jǐn)?shù): 7079 等級(jí):中 分?jǐn)?shù): 6069 等級(jí):及格 分?jǐn)?shù): 60以下 等級(jí):不及格 # include main() int d; printf(輸入分?jǐn)?shù):); scanf(%d,&d); if(d=90 ) printf(優(yōu)); else if(d=80) printf( 良); else if(d=70) printf( 中); else if(
31、d=60) printf( 及格); else printf( 不及格); 四、條件語(yǔ)句:表達(dá)式1 ? 表達(dá)式2 :表達(dá)式3執(zhí)行的過(guò)程:若表達(dá)式1的值為非0時(shí),該條件語(yǔ)句的職位表達(dá)式2,否則為表達(dá)式3;例:求一個(gè)整數(shù)的絕對(duì)值 #include main() int i,absi; scanf(%d,&i);absi=i0 ? i : -i;printf(%d絕對(duì)值是%dn,i,absi); 五、switch語(yǔ)句 switch (表達(dá)式) case 常量表達(dá)式1: 語(yǔ)句1 ; break; case常量表達(dá)式2: 語(yǔ)句2 ; break; case常量表達(dá)式n:語(yǔ)句n ; break; defa
32、ult: 語(yǔ)句n+1; 例:商店賣(mài)貨物,每一件3.5元,按購(gòu)買(mǎi)的數(shù)量給與優(yōu)惠: 購(gòu)買(mǎi)100件,優(yōu)惠5%; 購(gòu)買(mǎi)200件以上,優(yōu)惠6%; 購(gòu)買(mǎi)300件以上,優(yōu)惠8%; 購(gòu)買(mǎi)400件以上,優(yōu)惠10%; 購(gòu)買(mǎi)500件以上,優(yōu)惠15%; #include main() int n; float p,price; scanf(%d,&n); switch(n/100) case 1: p=0.05; break; case 2: p=0.06; break; case 3: p=0.08; break; case 4: p=0.10; break; case 5: p=0.15; break; pric
33、e=3.5*n*(1-p); printf(%應(yīng)付款=%7.2fn,price); 07函數(shù)定義,調(diào)用一、if語(yǔ)句: 一般格式: if(表達(dá)式) 語(yǔ)句;表示:當(dāng)表達(dá)式成立時(shí),則執(zhí)行語(yǔ)句;否則跳過(guò)語(yǔ)句;如:if (ab) printf(ab!);例:若用戶(hù)輸入的數(shù)為3的倍數(shù),則顯示OK #include main() int a; scanf(%d,&a); if(a %3=0) printf(OK); 二、if-else 語(yǔ)句:一般格式:if (表達(dá)式) 語(yǔ)句1;else 語(yǔ)句2;例:給出用戶(hù)輸入的兩個(gè)整數(shù)的較大者 #include main() int a,b; scanf(%d,%d,&a
34、,&b); if(ab) printf(the max=%d,a); else printf( the max=%d,b); 三、if語(yǔ)句的嵌套1、if子句中嵌套: if(表達(dá)式1) if(表達(dá)式2) 語(yǔ)句1; else 語(yǔ)句2;else 語(yǔ)句3; if(表達(dá)式1) if(表達(dá)式2) 語(yǔ)句1; Else 語(yǔ)句2; 2、else子句中嵌套 if (表達(dá)式1) 語(yǔ)句1; else if(表達(dá)式2) 語(yǔ)句2; else 語(yǔ)句3; if(表達(dá)式1) 語(yǔ)句1; else if(表達(dá)式2) 語(yǔ)句2;3、嵌套一般格式: if (表達(dá)式1) 語(yǔ)句1; else if (表達(dá)式2) 語(yǔ)句2; else if (
35、表達(dá)式3) 語(yǔ)句3 ;else if(表達(dá)式n) 語(yǔ)句n;else 語(yǔ)句n+1; 例:將用戶(hù)輸入的成績(jī)按以下規(guī)則轉(zhuǎn)換成等級(jí)成績(jī): 分?jǐn)?shù): 90100 等級(jí):優(yōu) 分?jǐn)?shù): 8089 等級(jí):良 分?jǐn)?shù): 7079 等級(jí):中 分?jǐn)?shù): 6069 等級(jí):及格 分?jǐn)?shù): 60以下 等級(jí):不及格 # include main() int d; printf(輸入分?jǐn)?shù):); scanf(%d,&d); if(d=90 ) printf(優(yōu)); else if(d=80) printf( 良); else if(d=70) printf( 中); else if(d=60) printf( 及格); else pri
36、ntf( 不及格); 四、條件語(yǔ)句:表達(dá)式1 ? 表達(dá)式2 :表達(dá)式3執(zhí)行的過(guò)程:若表達(dá)式1的值為非0時(shí),該條件語(yǔ)句的職位表達(dá)式2,否則為表達(dá)式3;例:求一個(gè)整數(shù)的絕對(duì)值 #include main() int i,absi; scanf(%d,&i);absi=i0 ? i : -i;printf(%d絕對(duì)值是%dn,i,absi); 五、switch語(yǔ)句 switch (表達(dá)式) case 常量表達(dá)式1: 語(yǔ)句1 ; break; case常量表達(dá)式2: 語(yǔ)句2 ; break; case常量表達(dá)式n:語(yǔ)句n ; break; default: 語(yǔ)句n+1; 例:商店賣(mài)貨物,每一件3.5元
37、,按購(gòu)買(mǎi)的數(shù)量給與優(yōu)惠: 購(gòu)買(mǎi)100件,優(yōu)惠5%; 購(gòu)買(mǎi)200件以上,優(yōu)惠6%; 購(gòu)買(mǎi)300件以上,優(yōu)惠8%; 購(gòu)買(mǎi)400件以上,優(yōu)惠10%; 購(gòu)買(mǎi)500件以上,優(yōu)惠15%; #include main() int n; float p,price; scanf(%d,&n); switch(n/100) case 1: p=0.05; break; case 2: p=0.06; break; case 3: p=0.08; break; case 4: p=0.10; break; case 5: p=0.15; break; price=3.5*n*(1-p); printf(%應(yīng)付款=
38、%7.2fn,price); 08一維數(shù)組一、if語(yǔ)句: 一般格式: if(表達(dá)式) 語(yǔ)句;表示:當(dāng)表達(dá)式成立時(shí),則執(zhí)行語(yǔ)句;否則跳過(guò)語(yǔ)句;如:if (ab) printf(ab!);例:若用戶(hù)輸入的數(shù)為3的倍數(shù),則顯示OK #include main() int a; scanf(%d,&a); if(a %3=0) printf(OK); 二、if-else 語(yǔ)句:一般格式:if (表達(dá)式) 語(yǔ)句1;else 語(yǔ)句2;例:給出用戶(hù)輸入的兩個(gè)整數(shù)的較大者 #include main() int a,b; scanf(%d,%d,&a,&b); if(ab) printf(the max=%d
39、,a); else printf( the max=%d,b); 三、if語(yǔ)句的嵌套1、if子句中嵌套: if(表達(dá)式1) if(表達(dá)式2) 語(yǔ)句1; else 語(yǔ)句2;else 語(yǔ)句3; if(表達(dá)式1) if(表達(dá)式2) 語(yǔ)句1; Else 語(yǔ)句2; 2、else子句中嵌套 if (表達(dá)式1) 語(yǔ)句1; else if(表達(dá)式2) 語(yǔ)句2; else 語(yǔ)句3; if(表達(dá)式1) 語(yǔ)句1; else if(表達(dá)式2) 語(yǔ)句2;3、嵌套一般格式: if (表達(dá)式1) 語(yǔ)句1; else if (表達(dá)式2) 語(yǔ)句2; else if (表達(dá)式3) 語(yǔ)句3 ;else if(表達(dá)式n) 語(yǔ)句n;e
40、lse 語(yǔ)句n+1; 例:將用戶(hù)輸入的成績(jī)按以下規(guī)則轉(zhuǎn)換成等級(jí)成績(jī): 分?jǐn)?shù): 90100 等級(jí):優(yōu) 分?jǐn)?shù): 8089 等級(jí):良 分?jǐn)?shù): 7079 等級(jí):中 分?jǐn)?shù): 6069 等級(jí):及格 分?jǐn)?shù): 60以下 等級(jí):不及格 # include main() int d; printf(輸入分?jǐn)?shù):); scanf(%d,&d); if(d=90 ) printf(優(yōu)); else if(d=80) printf( 良); else if(d=70) printf( 中); else if(d=60) printf( 及格); else printf( 不及格); 四、條件語(yǔ)句:表達(dá)式1 ? 表達(dá)式2
41、:表達(dá)式3執(zhí)行的過(guò)程:若表達(dá)式1的值為非0時(shí),該條件語(yǔ)句的職位表達(dá)式2,否則為表達(dá)式3;例:求一個(gè)整數(shù)的絕對(duì)值 #include main() int i,absi; scanf(%d,&i);absi=i0 ? i : -i;printf(%d絕對(duì)值是%dn,i,absi); 五、switch語(yǔ)句 switch (表達(dá)式) case 常量表達(dá)式1: 語(yǔ)句1 ; break; case常量表達(dá)式2: 語(yǔ)句2 ; break; case常量表達(dá)式n:語(yǔ)句n ; break; default: 語(yǔ)句n+1; 例:商店賣(mài)貨物,每一件3.5元,按購(gòu)買(mǎi)的數(shù)量給與優(yōu)惠: 購(gòu)買(mǎi)100件,優(yōu)惠5%; 購(gòu)買(mǎi)20
42、0件以上,優(yōu)惠6%; 購(gòu)買(mǎi)300件以上,優(yōu)惠8%; 購(gòu)買(mǎi)400件以上,優(yōu)惠10%; 購(gòu)買(mǎi)500件以上,優(yōu)惠15%; #include main() int n; float p,price; scanf(%d,&n); switch(n/100) case 1: p=0.05; break; case 2: p=0.06; break; case 3: p=0.08; break; case 4: p=0.10; break; case 5: p=0.15; break; price=3.5*n*(1-p); printf(%應(yīng)付款=%7.2fn,price); 09字符數(shù)組一、if語(yǔ)句: 一
43、般格式: if(表達(dá)式) 語(yǔ)句;表示:當(dāng)表達(dá)式成立時(shí),則執(zhí)行語(yǔ)句;否則跳過(guò)語(yǔ)句;如:if (ab) printf(ab!);例:若用戶(hù)輸入的數(shù)為3的倍數(shù),則顯示OK #include main() int a; scanf(%d,&a); if(a %3=0) printf(OK); 二、if-else 語(yǔ)句:一般格式:if (表達(dá)式) 語(yǔ)句1;else 語(yǔ)句2;例:給出用戶(hù)輸入的兩個(gè)整數(shù)的較大者 #include main() int a,b; scanf(%d,%d,&a,&b); if(ab) printf(the max=%d,a); else printf( the max=%d,b
44、); 三、if語(yǔ)句的嵌套1、if子句中嵌套: if(表達(dá)式1) if(表達(dá)式2) 語(yǔ)句1; else 語(yǔ)句2;else 語(yǔ)句3; if(表達(dá)式1) if(表達(dá)式2) 語(yǔ)句1; Else 語(yǔ)句2; 2、else子句中嵌套 if (表達(dá)式1) 語(yǔ)句1; else if(表達(dá)式2) 語(yǔ)句2; else 語(yǔ)句3; if(表達(dá)式1) 語(yǔ)句1; else if(表達(dá)式2) 語(yǔ)句2;3、嵌套一般格式: if (表達(dá)式1) 語(yǔ)句1; else if (表達(dá)式2) 語(yǔ)句2; else if (表達(dá)式3) 語(yǔ)句3 ;else if(表達(dá)式n) 語(yǔ)句n;else 語(yǔ)句n+1; 例:將用戶(hù)輸入的成績(jī)按以下規(guī)則轉(zhuǎn)換成等
45、級(jí)成績(jī): 分?jǐn)?shù): 90100 等級(jí):優(yōu) 分?jǐn)?shù): 8089 等級(jí):良 分?jǐn)?shù): 7079 等級(jí):中 分?jǐn)?shù): 6069 等級(jí):及格 分?jǐn)?shù): 60以下 等級(jí):不及格 # include main() int d; printf(輸入分?jǐn)?shù):); scanf(%d,&d); if(d=90 ) printf(優(yōu)); else if(d=80) printf( 良); else if(d=70) printf( 中); else if(d=60) printf( 及格); else printf( 不及格); 四、條件語(yǔ)句:表達(dá)式1 ? 表達(dá)式2 :表達(dá)式3執(zhí)行的過(guò)程:若表達(dá)式1的值為非0時(shí),該條件語(yǔ)句的職
46、位表達(dá)式2,否則為表達(dá)式3;例:求一個(gè)整數(shù)的絕對(duì)值 #include main() int i,absi; scanf(%d,&i);absi=i0 ? i : -i;printf(%d絕對(duì)值是%dn,i,absi); 五、switch語(yǔ)句 switch (表達(dá)式) case 常量表達(dá)式1: 語(yǔ)句1 ; break; case常量表達(dá)式2: 語(yǔ)句2 ; break; case常量表達(dá)式n:語(yǔ)句n ; break; default: 語(yǔ)句n+1; 例:商店賣(mài)貨物,每一件3.5元,按購(gòu)買(mǎi)的數(shù)量給與優(yōu)惠: 購(gòu)買(mǎi)100件,優(yōu)惠5%; 購(gòu)買(mǎi)200件以上,優(yōu)惠6%; 購(gòu)買(mǎi)300件以上,優(yōu)惠8%; 購(gòu)買(mǎi)40
47、0件以上,優(yōu)惠10%; 購(gòu)買(mǎi)500件以上,優(yōu)惠15%; #include main() int n; float p,price; scanf(%d,&n); switch(n/100) case 1: p=0.05; break; case 2: p=0.06; break; case 3: p=0.08; break; case 4: p=0.10; break; case 5: p=0.15; break; price=3.5*n*(1-p); printf(%應(yīng)付款=%7.2fn,price); 10二維數(shù)組二、二維數(shù)組: 具有兩個(gè)下標(biāo)的數(shù)組為二維數(shù)組。1、定義格式: 類(lèi)型說(shuō)明符 數(shù)組
48、名常量表達(dá)式常量表達(dá)式如: int a32; /定義了一個(gè)二維數(shù)組,名稱(chēng)數(shù)組名為a,含有6個(gè)元素:a00、a01、a10、a11、a20、a21;說(shuō)明:第一個(gè)常量表達(dá)式指出的是數(shù)組的行數(shù);第二個(gè)常量表達(dá)式指出的是數(shù)組的列數(shù);二維數(shù)組元素的順序是:按行存放;即先順序存放第一行的元素,再存放第二行的元素以此類(lèi)推;其存儲(chǔ)格式: a00a01a10a11a20a212、二維數(shù)組的初始化:同一維數(shù)組。分行為二維數(shù)組賦初值: int a32=1,2,3,4,5,6; 則該語(yǔ)句執(zhí)行后,a00=1, a01=2, a10=3,a11=4, a20=5, a21=6;按數(shù)組在存儲(chǔ)時(shí)的排列次序賦初值:int a3
49、2=1,2,3,4,5,6;對(duì)數(shù)組的部分元素賦初值: int a32=1,2,3,4;忽略第一維的長(zhǎng)度,對(duì)二維數(shù)組賦初值: int a2=1,2,3,4,5,6; 該語(yǔ)句執(zhí)行后,C語(yǔ)言系統(tǒng)自動(dòng)計(jì)算出第一維的長(zhǎng)度為6/2=3,同樣有:a00=1, a01=2,a10=3,a11=4, a20=5, a21=6;例:將兩個(gè)2行3列的矩陣相加,并顯示結(jié)果。#include main() int a23=1,3,5,7,9,11;int b23=2,4,6,8,10,12;int c23,sum=0,i,j; for(i=0;i2;i+) /i 表示第1行到第3行 for(j=0;j3;j+) /j
50、表示第1列到第3列 cij=aij+bij; for(i=0;i2;i+) for (j=0;j3;j+) printf(%5d,cij); if(j+1)%3=0) printf(n); 11地址與指針指針是一個(gè)變量,其存儲(chǔ)空間內(nèi)存放的是一個(gè)地址,因此,指針是一個(gè)地址變量。C語(yǔ)言提供的指針運(yùn)算符號(hào): &:取地址運(yùn)算符; *:取內(nèi)容運(yùn)算符;1、指針變量的定義:指針變量定義的格式: 類(lèi)型說(shuō)明符 *標(biāo)識(shí)符; 如: int *p;2、指針變量的引用:指針變量是用來(lái)存放存儲(chǔ)單元地址的,在賦值前,其所指向的存儲(chǔ)單元是不定的,當(dāng)賦完值后,指針變量才具體指向某一變量。如: int a,b, *p; /定義一
51、個(gè)真正變量p,其指向的變量類(lèi)型為整型 a=10; p=&a; /指針變量p存儲(chǔ)的是變量a的存儲(chǔ)地址; 此時(shí):*p的值即為指針p所指向的存儲(chǔ)空間中保存的值,即 *pa。 12指針與一維數(shù)組一、數(shù)組元素的地址表示數(shù)組元素也是一般變量,所以數(shù)組元素的地址也用:&數(shù)組元素名 。(1)數(shù)組首元素的地址表示為:數(shù)組名 或 &組數(shù)元素名 a 或 &a0 (2)任意數(shù)組元素的地址表示為;數(shù)組名+下標(biāo) 或 &數(shù)組元素名用i來(lái)表示下標(biāo),即 a+i 或 &ai 若指針p指向數(shù)組a,則 任意數(shù)組元素的地址可表示為: p+i 或 &pi 二、指針與一維數(shù)組的關(guān)系:若指針p指向數(shù)組a,則 p+ - 表示從當(dāng)前指向位置下移
52、1個(gè)元素;p- - 表示從當(dāng)前指向位置上移1個(gè)元素;pn - 表示從當(dāng)前指向位置下移或上移n個(gè)元素; 若指針p、q均指向數(shù)組a,則可進(jìn)行pq、p=q等運(yùn)算; p=q -表示p、q均指向同一數(shù)組元素; p-q -表示p指針和q指針之間相隔的數(shù)組元素個(gè)數(shù); 三、一維數(shù)組元素的引用若指針p指向數(shù)組a,則數(shù)組中任意元素可表示為: ai、*(a+i)、*(p+i)、pi【例】利用指針顯示數(shù)組元素的值 #include main() int a5=1,2,3,4,5; int i; for(i=0;i5;i+) printf(a%d=%dn, i ,*(a+i); 或者寫(xiě)為: #include main(
53、) int a5=1,2,3,4,5; int *p; for(p=a; pa+5; p+) printf(%dn,*p); 13指針與字符串 在C語(yǔ)言中,字符串是存儲(chǔ)在字符數(shù)組中的。字符數(shù)組與指針的關(guān)系與一位數(shù)組與指針的關(guān)系基本相同,只是數(shù)組與指針均為字符型。 當(dāng)定義一個(gè)字符型的指針變量并把它指向一個(gè)字符數(shù)組時(shí),就可以通過(guò)指針變量來(lái)處理字符串了?!纠客ㄟ^(guò)指針計(jì)算字符串的長(zhǎng)度。#includemain() char a80,*p; int len=0; gets(a); p=a; /指針p指向字符數(shù)組a while(*p!=0) len+; printf(%d n,len)【例】通過(guò)指針實(shí)現(xiàn)
54、字符串的復(fù)制。#includemain() char a80,b80,*p1,*p2; gets(a); p1=a; /指針p1指向字符數(shù)組a p2=b; /指針p2指向字符數(shù)組b while(*p1!=0) /當(dāng)指針p1沒(méi)有指向結(jié)束標(biāo)記符號(hào) *p2+=*p1+; /將指針p1指向的字符賦給指針p2指向的空間 *p2=0; /為數(shù)組b添加結(jié)束標(biāo)記符號(hào) puts(b);14函數(shù)的參數(shù)傳遞 函數(shù)定義時(shí),函數(shù)首部的參數(shù)稱(chēng)為形式參數(shù)(簡(jiǎn)稱(chēng)形參); 函數(shù)調(diào)用時(shí),調(diào)用語(yǔ)句中的參數(shù)稱(chēng)為實(shí)際參數(shù)(簡(jiǎn)稱(chēng)實(shí)參); 形式參數(shù)與實(shí)際參數(shù)必須要一一對(duì)應(yīng),二者數(shù)量相同,類(lèi)型一致。C語(yǔ)言中,實(shí)際參數(shù)傳給形式參數(shù),而形式參數(shù)
55、的值不能傳給實(shí)際參數(shù),稱(chēng)為單向值傳遞。 值傳遞方式(傳值):將實(shí)際參數(shù)的值單向傳遞給形式參數(shù); 地址傳遞方式(傳址):將實(shí)際參數(shù)所表示的地址單向傳遞給形式參數(shù) 一、傳值調(diào)用時(shí),編譯系統(tǒng)為實(shí)際參數(shù)和形式參數(shù)分配的內(nèi)存空間是不一樣的,因此,即使函數(shù)修改了形式參數(shù)的值,也不會(huì)影響實(shí)際參數(shù)的值,同理,修改了實(shí)際參數(shù)的數(shù)值也不會(huì)影響到形式參數(shù)的值。 傳值調(diào)用時(shí),實(shí)際參數(shù)通常是常量、變量、數(shù)組元素或表達(dá)式,系統(tǒng)先計(jì)算實(shí)際參數(shù)的數(shù)值,再將該數(shù)值傳遞給形式參數(shù)。 二、傳址調(diào)用時(shí),編譯系統(tǒng)不再為形式參數(shù)分配內(nèi)存空間,形式參數(shù)和實(shí)際參數(shù)共用一段內(nèi)存空間。 因此,在函數(shù)中修改了形式參數(shù)的值,也就是修改了實(shí)際參數(shù)的值
56、;同理,修改了實(shí)際參數(shù)的值,也就修改了形式參數(shù)的值,二者指向的數(shù)值相同。 傳址調(diào)用時(shí),實(shí)際參數(shù)通常是地址、指針變量、一維數(shù)組名、二維數(shù)組名、字符串等。 (1)一維數(shù)組名作為函數(shù)的實(shí)參 數(shù)組名表示一段連續(xù)內(nèi)存空間的首地址,即數(shù)組首元素的地址。函數(shù)調(diào)用時(shí),是把數(shù)組首元素的地址值傳遞給形參,形參可以是與實(shí)參數(shù)據(jù)類(lèi)型相同的數(shù)組名,此時(shí),形參和實(shí)參共用一段連續(xù)的內(nèi)存空間,因此,形參和實(shí)參的數(shù)值完全相同。 (2)指針作為函數(shù)的實(shí)參 將指針變量所表示的數(shù)組首元素的地址傳遞給形參數(shù)組名,實(shí)參和形參共用一段連續(xù)的內(nèi)存空間,其值也相同。15函數(shù)的嵌套的調(diào)用(略)16結(jié)構(gòu)體,共用體,枚舉一、結(jié)構(gòu)體定義: 結(jié)構(gòu)體是由
57、若干成員組成的一種構(gòu)造類(lèi)型,每個(gè)成員可以是一個(gè)基本數(shù)據(jù)類(lèi)型或又是一個(gè)構(gòu)造類(lèi)型。 一般格式: struct 標(biāo)識(shí)符 數(shù)據(jù)類(lèi)型 成員名1; 數(shù)據(jù)類(lèi)型 成員名2; 數(shù)據(jù)類(lèi)型 成員名3; . ;其中:關(guān)鍵字 struct不可省略; 標(biāo)識(shí)符是對(duì)結(jié)構(gòu)體的命名,稱(chēng)為結(jié)構(gòu)體名; 成員的定義格式一般如下: 類(lèi)型標(biāo)識(shí)符 成員名 在使用結(jié)構(gòu)體變量之前,必須先定義結(jié)構(gòu)體類(lèi)型。如:定義一個(gè)學(xué)生情況結(jié)構(gòu)體student: struct student char name12; /姓名 char sex; /性別 int age; /年齡 int score; /成績(jī) char class16; /班級(jí) ;二、結(jié)構(gòu)體變量的
58、引用和初始化 1、結(jié)構(gòu)體變量的引用: 一般格式為: 結(jié)構(gòu)體變量名.成員名 或 指針變量名-成員名 如:struct student stud,*ps; 則引用age成員分別是: stud.age ps-age 2、可以將結(jié)構(gòu)體變量作為一個(gè)整體賦給另一個(gè)同類(lèi)型的結(jié)構(gòu)體變量; 如: struct student std1,std2; . std1=std2; 3、結(jié)構(gòu)體變量的初始化: struct student sud=李明,M,20,88,091001011; 4、結(jié)構(gòu)體數(shù)組的定義: 先定義結(jié)構(gòu)體類(lèi)型,再定義結(jié)構(gòu)體數(shù)組。 struct student char name12; char sex
59、; int age; int score; char class16; struct student st40; 5、結(jié)構(gòu)體數(shù)組的引用: 在st結(jié)構(gòu)體數(shù)組定義后,st2.age表示st的第3個(gè)元素的age成員項(xiàng), 6、結(jié)構(gòu)體數(shù)組的初始化: struct depart int no; char dname; dp3=3,人事處,15,財(cái)務(wù)處,8,科技處;三、結(jié)構(gòu)體指針 結(jié)構(gòu)體指針指向一個(gè)結(jié)構(gòu)體變量。 struct student stud,*p; p=&stud; p不是結(jié)構(gòu)體變量,故不能寫(xiě)成p.age,應(yīng)寫(xiě)為(*p).age,或?qū)懗蓀-age; p只能指向一個(gè)結(jié)構(gòu)體變量;而不能指向一個(gè)結(jié)構(gòu)體變
60、量中的一個(gè)成員;四、結(jié)構(gòu)體數(shù)組指針: 一個(gè)指針變量可以指向結(jié)構(gòu)體數(shù)組,即將該數(shù)組的起始地址賦值給指針變量。 struct student stud40,*p; p=&stud; 當(dāng)執(zhí)行p=&stud;后,p指向stud數(shù)組的第一個(gè)元素;當(dāng)進(jìn)行p+后,表示p指向下一個(gè)元素的起始地址; p只能指向該結(jié)構(gòu)體數(shù)組的一個(gè)元素,然后用指向運(yùn)算符-取其成員的值,而不能直接指向一個(gè)成員; (+)p-age:先將p自增1,然后取得它指向的元素中的成員age的值,即stud0.age; (p+)-age:先取得p-age的值,再進(jìn)行p自增1,指向下一個(gè)元素stud1; 五、共用體類(lèi)型的說(shuō)明和變量定義 1、共用體類(lèi)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 石河子大學(xué)《智慧水利》2022-2023學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《外國(guó)文學(xué)一》2021-2022學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《化工儀表及自動(dòng)化》2023-2024學(xué)年第一學(xué)期期末試卷
- 沈陽(yáng)理工大學(xué)《展示空間設(shè)計(jì)》2022-2023學(xué)年第一學(xué)期期末試卷
- 沈陽(yáng)理工大學(xué)《汽車(chē)?yán)碚摗?023-2024學(xué)年第一學(xué)期期末試卷
- 沈陽(yáng)理工大學(xué)《工控組態(tài)軟件及應(yīng)用》2022-2023學(xué)年第一學(xué)期期末試卷
- 管道保溫工程合同協(xié)議書(shū)
- 光明租賃合同
- 合同編司法解釋27解讀
- 2024肉類(lèi)采購(gòu)合同樣本
- 鋰離子電池行業(yè)發(fā)展趨勢(shì)
- 第十八章 正比例函數(shù)和反比例函數(shù)(5類(lèi)壓軸題專(zhuān)練)
- 單項(xiàng)式乘多項(xiàng)式教案
- 遼寧省大連市中山區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期中化學(xué)試題
- 天津市天津市紅橋區(qū)2024-2025學(xué)年八年級(jí)上學(xué)期10月期中英語(yǔ)試題
- 老舊房子改造合同模板
- 幼兒園實(shí)習(xí)生總結(jié)會(huì)方案
- 2024新人教版七年級(jí)上冊(cè)英語(yǔ)期中作文預(yù)測(cè)及范文
- 湘教版(2024新版)七年級(jí)上冊(cè)數(shù)學(xué)期中考試模擬測(cè)試卷(含答案)
- 2024年中國(guó)移動(dòng)通信集團(tuán)甘肅限公司校園招聘290人高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 2024中國(guó)石油春季招聘(8000人)高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
評(píng)論
0/150
提交評(píng)論