




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C語言精華作者:劉麗英print函數(shù)1.格式字符(1)u格式%u為unsigned型數(shù)據(jù)以十進(jìn)制整形輸出(2)d格式%d為整形輸出%md.其中m為指定的字段的寬度,如果數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格,如果數(shù)據(jù)的位數(shù)大于m則按實(shí)際輸出eg:printf("%4d,%4d",a,b);若a=123,b=12345,則輸出結(jié)果為_123,12345同理有%mld,%mo(八進(jìn)制輸出),%mx(十六進(jìn)制輸出),%mc(3)s格式%s用來輸出一個字符串
%ms%-ms如果字符串小于m,則在m列范圍內(nèi),字符串向左靠,右補(bǔ)空格
%m.ns輸出占有m列,但只取字符串中左端n個字符。這n個字符輸出在m列的右側(cè),左補(bǔ)空格%-m.ns輸出占有m列,但只取字符串中左端n個字符。這n個字符輸出在m列的左側(cè),右補(bǔ)空格。若n>m則m自動取n值,即保證n個字符正常輸出(4)f格式%m.nf一共占m列,其中有n為小數(shù)。如果數(shù)值長度小于m則左端補(bǔ)空格。%-m.nf基本同上,只是輸出數(shù)值向左端靠齊,右端補(bǔ)空格(5)e格式以指數(shù)形式輸出實(shí)數(shù)%e數(shù)字部分的小數(shù)位為6位,指數(shù)部分占5位(如e+002),數(shù)值按規(guī)范化指數(shù)形式輸出(即小數(shù)點(diǎn)前必須有而且只有1位非零數(shù)字)。例如:printf("%e",123.456);輸出結(jié)果為1.234560e+002所輸出實(shí)數(shù)共占13列(不同系統(tǒng)的規(guī)定略有不同)%m.ne與%-m.ne中的m,n,"-"與前面的相同。此時的n指的是擬輸出的數(shù)據(jù)的小數(shù)部分(又稱尾數(shù))的小數(shù)位數(shù)若f=123.456,則printf("%e--%10e--%10.2e--%.2e--%-10.2e",f,f,f,f,f);輸出結(jié)果如下1.234560e+002--1.234560e+002---1.23e+002--1.23e+002--1.23e+002-
13列13列10列9列10列條件表達(dá)式條件表達(dá)式,C中唯一的一個三目表達(dá)式
表達(dá)式1?表達(dá)式2:表達(dá)式3例1if(a>b)優(yōu)先級別比關(guān)系運(yùn)算符和算術(shù)運(yùn)算符都低max=a;a>b?a:b+1;<==>a>b?a:(b+1);<=\=>(a>b?a:b)+1;else<===>max=(a>b)?a:b;<===>max=a>b?a:b;max=b;結(jié)合方向自右至左表達(dá)式2和3不僅可以是數(shù)值表達(dá)式,還可以是賦值表達(dá)式或函數(shù)表達(dá)式;表達(dá)式1,2,3的類型可以都不同。eg2:a>b?(a=100):(b=123);a>b?printf("%d",a):printf("%d",b);x?'a':'b';x>y?1:1.5;數(shù)據(jù)類型浮點(diǎn)小數(shù)1.指數(shù)形式:包含整數(shù)部分、字母E或e和階數(shù)。如2.48E23。注意尾數(shù)部分不能省、階碼必須是整數(shù)2.十進(jìn)制小數(shù):包含整數(shù)部分、小數(shù)點(diǎn)和小數(shù)部分。其中小數(shù)點(diǎn)不能省。文字?jǐn)?shù)據(jù)的表示1.單個字符:單個字符的表現(xiàn)形式是由單引號括起來的一個字符,如'A'。其中單引號、雙引號、反斜杠的表現(xiàn)形式比較特殊,分別是'\'','\"','\\'。數(shù)據(jù)類型轉(zhuǎn)換1.強(qiáng)制類型轉(zhuǎn)換(類型)表達(dá)式強(qiáng)制類型裝換最主要的用途一是滿足一些運(yùn)算對類型的要求,例如求余運(yùn)“%”要求運(yùn)算符兩側(cè)的數(shù)據(jù)類型為整型,(int)2.5%3二是防止丟失整數(shù)除法中的小數(shù)部分。break語句的的作用:1.用于switch語句中,從中推出switch語句。2.用于循環(huán)語句中,從循環(huán)體內(nèi)直接退出循環(huán)。注意:對于嵌套的循環(huán)語句和switch語句,break語句的執(zhí)行只能退出直接包含break的那層結(jié)構(gòu)函數(shù)C語言的函數(shù)可以分為三類:主函數(shù)main()、庫函數(shù)(如,printf()scanf())、和用戶自定義函數(shù)自定義的函數(shù)類型
函數(shù)類型與return語句的返回值類型相同,當(dāng)函數(shù)類型缺省時默認(rèn)為整形,如果函數(shù)無返回值用void。函數(shù)體可以為空。return(表達(dá)式);表達(dá)式可為一個變量、常量、表達(dá)式,函數(shù)類型決定返回值類型函數(shù)的調(diào)用
實(shí)參與形參之間是“單向的值傳遞”實(shí)參可以是常量、變量表達(dá)式或函數(shù)。函數(shù)遞歸調(diào)用直接或間接地調(diào)用函數(shù)自身為函數(shù)遞歸調(diào)用。
遞歸調(diào)用必須可以滿足一定條件時結(jié)束調(diào)用,否則無限的遞歸調(diào)用將導(dǎo)致程序無法結(jié)束。數(shù)組一、一維數(shù)組1.一維數(shù)組的定義數(shù)組類型的所有元素都是同一種類型按順序存放在一個連續(xù)的存儲空間中,下表從0開始順序編號。數(shù)組元素的個數(shù)是一個固定值,可以是整型常量、符號常量或者整型常量表達(dá)式。定義數(shù)組時,系統(tǒng)將按照數(shù)組類型和個數(shù)數(shù)組元素,分配一段連續(xù)的存儲空間存儲,絕對不能使用變量或者變量表達(dá)式來表示元素的個數(shù),大多數(shù)情況下不要省略元素的個數(shù)(形參和數(shù)組初始化時除外)。2。一位數(shù)組的引用C語言規(guī)定只能逐個引用數(shù)組元素,而不能一次引用整個數(shù)組.C語言不檢查邊界,所以當(dāng)超越邊界是系統(tǒng)將不會提示錯誤,但運(yùn)行時可能導(dǎo)致其他變量甚至程序被破壞。數(shù)組元素的使用方法與同類型的變量使用方法相同,可以參加各種運(yùn)算,常用于循環(huán)語句來處理二、多維數(shù)組1.多(以二維為例)維數(shù)組的定義類型標(biāo)示符數(shù)組名[元素個數(shù)1][元素個數(shù)2]...[元素個數(shù)N];二維數(shù)組中元素的存放順序是按行存放的;多維數(shù)組的存儲順序?yàn)椋鹤钭筮叺南聵?biāo)變化最慢,越往右邊變化越快。三、數(shù)組作為函數(shù)參數(shù)數(shù)組中的元素和數(shù)組名都可以作函數(shù)參數(shù),但效果不一樣。2.一維數(shù)組元素作為函數(shù)參數(shù)一維數(shù)組中元素作為函數(shù)實(shí)參,與同類型的簡單變量作為實(shí)參一樣是單向的值傳遞,即數(shù)組元素的值傳給形參,形參的改變不影響作為數(shù)組元素的實(shí)參,3數(shù)組名作為函數(shù)參數(shù)
此時形參和實(shí)參都是數(shù)組名(或者是表示地址的指針變量,見第十講),傳遞的是整個數(shù)組(數(shù)組的起始地址),即形參數(shù)組和實(shí)參數(shù)組完全等同,是存放在同一空間的同一個數(shù)組。這樣形參數(shù)組修改時是參數(shù)組也同時被改變了。形參中的數(shù)組要定義,并且要求與實(shí)參數(shù)組類型一致,但是形參數(shù)組的大?。丛貍€數(shù))可以小于等于實(shí)參數(shù)組的個數(shù),甚至可以省略,而有一個專門的形參傳遞元素個數(shù)。
變量類別與編譯預(yù)處理一、全局變量與局部變量C語言根據(jù)變量的作用域不同,將變量分為局部變量和全局變量局部變量:在函數(shù)內(nèi)部定義的變量,它只在定義它的函數(shù)內(nèi)部有效。全局變量:在所有函數(shù)的外部定義的變量,作用范圍是從定義變量的位置開始到源程序結(jié)束,即全局變量可以被在其定義位置之后的其它函數(shù)所共享。全局變量主要用于函數(shù)之間數(shù)據(jù)的傳遞。具體應(yīng)用在兩方面:一是函數(shù)可以將結(jié)果保存在全局變量中,這樣函數(shù)得到多個執(zhí)行結(jié)果,而不局限于一個返回值;二是由于函數(shù)可以直接使用全局變量的數(shù)據(jù),從而減少了函數(shù)調(diào)用時的參數(shù)。
用extern、static聲明的全局變量:
如果組成這一個程序的幾個文件需要用到同一個全局變量,只要在其他引用該全局變量的源程序文件中說明該全局變量為extern即可。反之,如果希望一個源程序文件中的全局變量僅限于該文件使用,只要在該全局變量定義時的類型說明前加一個static。二、自動變量、靜態(tài)變量和寄存器變量C語言根據(jù)變量的存儲空間的不同,可以分為寄存器變量、靜態(tài)變量、和自動變量。自動變量:動態(tài)變量的存儲空間為內(nèi)存中的動態(tài)數(shù)據(jù)區(qū)。自動變量的類型修飾符auto放在變量的類型說明之前。但auto一般不寫的。在函數(shù)體內(nèi)或者復(fù)合語句內(nèi)定義的局部變量只要不專門說明是static存儲類型都屬于自動變量,采用動態(tài)存儲方式。特點(diǎn)是當(dāng)程序和執(zhí)行到自動變量的作用域時,才為自動變量分配存儲空間,并且定義自動變量的函數(shù)執(zhí)行結(jié)束后,程序?qū)⑨尫抛詣幼兞康目臻g,留給其他自動變量使用。靜態(tài)變量:靜態(tài)變量的存儲空間為內(nèi)存的靜態(tài)數(shù)據(jù)區(qū),該區(qū)域中的數(shù)據(jù)在整個程序的運(yùn)行期間一直占用這些存儲空間,知道整個程序運(yùn)行結(jié)束。所有的全局變量都是靜態(tài)變量,而局部變量只有加上類型修飾符static,才為局部靜態(tài)變量。
靜態(tài)變量的特點(diǎn)是在程序的整個執(zhí)行過程中始終存在,但在它作用域之外不能使用,即靜態(tài)變量的生存期就是整個運(yùn)行期。在選擇使用靜態(tài)變量還是動態(tài)變量時,可以考慮以下兩點(diǎn):一是如果需要在兩次函數(shù)調(diào)用之間保持上一次函數(shù)調(diào)用結(jié)果,可以使用局部靜態(tài)變量;二是如果在每次掉用函數(shù)時都必須對局部變量初始化,選擇自動變量。但是實(shí)際上局部靜態(tài)變量占用內(nèi)存時間較長,并且可讀性差,因此,除非必要,盡量避免使用局部變量。寄存器變量:為提高運(yùn)算速度,C語言允許將一些頻繁使用的局部變量定義為寄存器變量,這樣程序盡可能地為它分配寄存器存放,而不用內(nèi)存。三、宏定義
C語言提供的預(yù)處理命令主要有:宏定義、文件包含和條件編譯。其中宏定義分為帶參數(shù)的宏定義和不帶參數(shù)的宏定義。1.不帶參數(shù)的宏定義
#define標(biāo)識符字符串
它的作用是在編譯預(yù)處理時,將源程序中所有的標(biāo)識符替換成字符串
注意:(1)宏名一般用大寫字母,以便與變量名區(qū)分
(2)宏名的有效范圍是從定義為止到文件結(jié)束,如果需要終止宏定義的作用域,可以用#undef命令
(3)宏定義時可以引用已經(jīng)定義的宏名(4)對程序中用雙引號括起來的字符串內(nèi)的字符,不進(jìn)行宏的替換操作。2.帶參數(shù)的宏定義
#define標(biāo)識符(參數(shù)表)字符串
它的作用是在編譯預(yù)處理時,將源程序中所有標(biāo)識符替換成字符串,并且將字符串中的參數(shù)用實(shí)際參數(shù)替換。注意:(1)在宏定義時,宏名和參數(shù)之間不能有空格(2)一般在宏定義時,字符串中的形式參數(shù)外面加一個小括號。指針(一)10.1地址和指針計算機(jī)內(nèi)存是以字節(jié)為單位的存儲空間。內(nèi)存的每一個字節(jié)都有一個唯一的編碼,這個編碼就稱為地址。凡是放在內(nèi)存中的程序和數(shù)據(jù)都有一個地址。當(dāng)C程序中定義一個變量時,系統(tǒng)就分配一個帶有唯一地址的存儲單元來存儲這個變量。例如,若有下面的變量定義:chara='A';intb=88;longc=89;系統(tǒng)經(jīng)根據(jù)變量的類型分別為a、b、c分配1個、2個、4個字節(jié)的存儲單元,此時變量所占存儲單元的第一個字節(jié)的地址就是變量的地址。程序?qū)ψ兞康淖x取操作(即變量的引用),實(shí)際上是對變量所在空間寫入或取出數(shù)據(jù)。通過變量名直接引用變量,成為“直接引用”方式,這種引用方式是由系統(tǒng)自動完成變量名與其存儲地址之間的轉(zhuǎn)換。此外,C語言中還有另一種稱為“間接引用”的方式。他首先將變量的地址存放在一個變量(存放地址的變量稱為指針)中,然后通過三、指針變量作為函數(shù)參數(shù)
在C語言中,函數(shù)參數(shù)可以是指針類型。當(dāng)指針變量作函數(shù)參數(shù),其作用是將一個變量的地址傳送到另一個函數(shù)中。此時形參從實(shí)參獲得了變量的地址,即形參和實(shí)參指向同一個變量,當(dāng)形參指向的變量發(fā)生變化時,實(shí)參所知的變量也隨之變化。10.3指針與一維數(shù)組一、指向數(shù)組元素的指針變量1.定義與賦值這種定義方式與指向變量的指針的定義相同。例如:inta[5],*p;/*指針變量可以p可以指向任意的整型變量p=&a[0];因此也可以指向數(shù)組a的任意元素*/表示p指向數(shù)組的第一個元素a[0]。因?yàn)閿?shù)組名代表數(shù)組的地址,也是第一個數(shù)組的地址。因此上面的賦值語句p=&a[0];<=>p=a;指向數(shù)組元素的值也可以在定義時賦初值。2.引用如有以下的定義和賦值:inta[5],*p;p=&a[1];即指針變量p指向數(shù)組元素a[1],則可以通過指針運(yùn)算符“*”來對數(shù)組元素進(jìn)行引用。例如:*p=10;表示對p所指向的數(shù)組元素a[1]賦值,上式等價于a[1]=10;引用一個數(shù)組元素可以有兩種方法:(1)下標(biāo)法,如a[i]。(2)指針法,如*(p+i)。二、數(shù)組名作函數(shù)參數(shù)存放變量地址的指針變量來引用變量。一個變量的地址稱為該變量的指針。用來存放一個變量地址的變量稱為指針變量。當(dāng)指針變量p的值為某變量的地址時,可以說指針變量p指向該變量10.2指向變量的指針變量一、指針變量和其他變量一樣要先定義在使用,定義形式為:類型名*指針變量名;例如:int*p;float*q;char*t;類型名表示指針變量所指向的變量的類型,而且只能指向這種類型的變量。指針變量也允許在定義是進(jìn)行初始化。二、指針變量的引用指針變量的兩個運(yùn)算符:(1)&取地址運(yùn)算符(2)*指針運(yùn)算符例如:&a表示變量a的地址,*p表示指針變量p指向的變量。關(guān)于指針的引用有兩點(diǎn)需要注意:(1)指針變量是用來存放地址的,不要給指針變量賦常數(shù)值。(2)指針變量沒有指向確定地址前,不要對他所指的對象賦值。
在函數(shù)調(diào)用時,是把實(shí)參數(shù)組的首地址傳遞給形參數(shù)組,這樣形參數(shù)組的元素發(fā)生變化時實(shí)參數(shù)組的元素也發(fā)生了變化。如果我們令一個指針變量指向數(shù)組的第一個元素,或者等于數(shù)組名,此時數(shù)組名和指針變量的含義相同,都表示數(shù)組的首地址。所以實(shí)參和形參使用數(shù)組名時可以用指針變量替換。
以下列出實(shí)參和形參使用數(shù)組名或指針變量的四種情況:
實(shí)參:數(shù)組名數(shù)組名指針變量指針變量形參:數(shù)組名指針變量數(shù)組名指針變量三、指向數(shù)組元素的指針變量作函數(shù)參數(shù)雖然數(shù)組名與指向數(shù)組首地址的指針變量都可以作為函數(shù)參數(shù),但是由于指針變量不僅可以指向數(shù)組的首地址,也可以指向數(shù)組中任意一個元素,所以指向數(shù)組元素的指針變量作函數(shù)參數(shù)的作用范圍遠(yuǎn)遠(yuǎn)大于數(shù)組名作函數(shù)參數(shù)。10.4指針與字符串一、指向字符串的指針變量C語言中,字符串是通過一維字符數(shù)組來存儲的。因此,可以使用指向字符數(shù)組的指針變量來實(shí)現(xiàn)字符串操作。由于字符串是按照字符數(shù)組的形式存儲的,所以對字符串中字符的引用也可以用下標(biāo)法或指針法。二、字符串作函數(shù)參數(shù)將字符串作函數(shù)參數(shù)傳遞,可以使用字符數(shù)組名或指向字符串的指針變量做參數(shù)。與上一節(jié)數(shù)組名作函數(shù)參數(shù)類似,實(shí)參和形參的對應(yīng)情況也有四種。實(shí)參:數(shù)組名數(shù)組名指針變量指針變量形參:數(shù)組名指針變量數(shù)組名指針變量指針(二)11.1返回指針的函數(shù)定義的一般形式為:
類型名*函數(shù)名(參數(shù)表);11.2指向函數(shù)的指針一、定義的一般形式為:
類型名(*指針變量)();二、指向函數(shù)的指針的引用C語言規(guī)定函數(shù)名就是函數(shù)的入口地址。所以當(dāng)指向函數(shù)的指針等于函數(shù)名時,表示該指針變量指向函數(shù)。此時可以通過指向函數(shù)的指針變量調(diào)用該函數(shù)。即一般調(diào)用函數(shù)的形式是
函數(shù)名(實(shí)參表)改為指向函數(shù)的指針變量調(diào)用函數(shù)時,調(diào)用形式變?yōu)?/p>
(*指針變量名)(實(shí)參表)
指向函數(shù)的指針變量在使用時要注意:由于這類指針變量等于一個函數(shù)的入口地址,所以它們做加減運(yùn)算是沒有意義的。11.3指針數(shù)組指針數(shù)組的定義的一般形式:
類型名*數(shù)組名[常量表達(dá)式];指針數(shù)組的主要用于管理同種類型的指針,其中最常用于處理若干個字符串(如二維字符串)的操作。11.4指針與多維數(shù)組
不帶任何下標(biāo)的二維數(shù)組名表示二維數(shù)組的起始地址,對其進(jìn)行加法操作時則表示作為其元素的一個一維數(shù)組(即二維數(shù)組一行)的起始地址。只帶一維下標(biāo)的二維數(shù)組名表示作為其元素的的一個一維數(shù)組(即二維數(shù)組一行)的起始地址,對其進(jìn)行加法操作時表示該一維數(shù)組(即二維數(shù)組一行)的一個元素的地址。一、指向二維數(shù)組元素的指針變量在C語言中指針即是地址,如果指針變量等于只帶一維下標(biāo)的二維數(shù)組名,他的定義、賦值、引用與指向一維數(shù)組元素的指針變量形式相同,例如inta[2][3],*p;p=a[0];此時p指向一維數(shù)組a[0]的起始地址,即p,a[0],&a[0][0]相同對其進(jìn)行加法操作時p+1等同于a[0]+1,都指向數(shù)組元素a[0][1]。所以*(p+1)等于元素a[0][1]的值。指向二維數(shù)組中一維數(shù)組的指針變量C語言規(guī)定一種指針變量,如果該指針指向不帶任何下標(biāo)的二維數(shù)組名,指針變量指向作為二維數(shù)組元素的一個一維數(shù)組(即二維數(shù)組的一行),這樣對指針變量進(jìn)行加減操作則指針將在二維數(shù)組的行上移動。這種指針變量的定義形式如下:類型符(*指針變量名)[指向的一維數(shù)組元素的個數(shù)]那么對于一個2行3列組成的二維數(shù)組a[2][3],如果指針變量p指向這個二維數(shù)組中包含3個元素的一行一維數(shù)組則指針變量p的定義形式和賦值形式如下:inta[2][3],(*p)[3];p=a;此時p指向二維數(shù)組a的起始地址。對其進(jìn)行加法操作p+1等同于a+1,指向包含3個元素的一維數(shù)組a[1]。所以*(p+1)等于一維數(shù)組名a[1]+1,所以*(*(p+1)+1)等于a[1][1]。指向數(shù)組的指針變量在使用時,要注意與元素是指針類型的指針數(shù)組的區(qū)別。例如:int(*q)[3],*p[3];q是指向一個包含3個整形元素的一維數(shù)組的指針變量,p是一個由p[0],p[1],p[2]共3個指向整形數(shù)據(jù)的指針組成的一維數(shù)組。結(jié)構(gòu)體、共用體和枚舉類型結(jié)構(gòu)體類型12.1一、結(jié)構(gòu)體的定義形式:struct結(jié)構(gòu)體{類型名1成員名1;類型名2成員名2;......類型名n成員名n;};其中struct是關(guān)鍵字,是結(jié)構(gòu)體類型的標(biāo)志。定義結(jié)構(gòu)體類型的變量有三種方法:1.先定義結(jié)構(gòu)體類型在定義變量。2.定義類型的同時定義變量。3.直接定義結(jié)構(gòu)體類型變量,省略類型名。二、結(jié)構(gòu)體變量初始化將結(jié)構(gòu)體變量個成員的初值順序地放在一對大括號中,并用逗號分隔,對結(jié)構(gòu)體類型變量賦初值時,按每一個成員在結(jié)構(gòu)體中的順序一一對應(yīng)賦值。三、結(jié)構(gòu)體變量引用對結(jié)構(gòu)體變量的引用可以分為對結(jié)構(gòu)體變量中成員的引用和對整個結(jié)構(gòu)體的引用。一般對結(jié)構(gòu)的變量的操作是以成員為單位進(jìn)行的。(1)對結(jié)構(gòu)體變量中成員的引用引用的一般形式為:結(jié)構(gòu)體變量.成員名“.”是成員運(yùn)算符,他在所有運(yùn)算符中優(yōu)先級最高。(2)對整個結(jié)構(gòu)體變量的引用相同類型的結(jié)構(gòu)體變量之間可以進(jìn)行整體賦值。注意:結(jié)構(gòu)體變量只允許整體賦值其它操作如輸入、輸出等必須通過引用結(jié)構(gòu)體變量的成員進(jìn)行相應(yīng)的操作。
12.2結(jié)構(gòu)體數(shù)組一、結(jié)構(gòu)體數(shù)組定義定義結(jié)構(gòu)體數(shù)組的方法和定義結(jié)構(gòu)變量的方法一樣,只是必須說明其為數(shù)組。定義結(jié)構(gòu)體變量的三種方法都可以用來定義結(jié)構(gòu)體數(shù)組。二、結(jié)構(gòu)體數(shù)組的初始化和一般數(shù)組一樣結(jié)構(gòu)體數(shù)組也可以進(jìn)行初始化。數(shù)組每個元素的初值都放在一對大括號中,括號中依次排列元素個成員的初始值。三、結(jié)構(gòu)體數(shù)組的引用對結(jié)構(gòu)體數(shù)組的引用一般是對數(shù)組元素的成員進(jìn)行引用。引用只要遵循對數(shù)組元素的引用規(guī)則和對結(jié)構(gòu)體變量成員的引用規(guī)則即可。#include<stdio.h>#include<string.h>structperson{ charname[20]; intcount;}leader[3]={"li",0,"zhang",0,"wang",0};voidmain(){ inti,j; charname[20]; for(j=0;j<=5;j++) { scanf("%s\n",name[j]); for(i=0;i<3;i++) {
if(strcmp(name,leader[i].name)==0) { leader[i].count++; } } }
for(i=0;i<3;i++) printf("%s:%d\n",leader[i].name,leader[i].count);}指向結(jié)構(gòu)體數(shù)組的指針#include<stdio.h>structstudent{ intnum; charname[20]; charsex; intage;};structstudentxinke[3]={01,"吳衡",'M',19,02,"邱利鶴",'M',18,03,"曹曉",'M',19};voidmain(){ structstudent*p; p=xinke; inti; printf("NUMNAMESEXAGE\n"); for(i=0;i<3;i++) { printf("%-8d%-5s%9c%9d\n",p->num,p->name,p->sex,p->age); p++; }}結(jié)構(gòu)體變量和指向結(jié)構(gòu)體變量的指針作函數(shù)參數(shù)#include<stdio.h>#include<string.h>#defineFORMAT"%d\n%s\n%f\n%f\n%f\n"structstudent{ intnum; charname[20]; floatscore[3];};voidmain(){ voidprint(structstudentstu); structstudentxinke; xinke.num=04;
strcpy(,"fuguoqing");不能用[20]="fuguoqing";
xinke.score[0]=88; xinke.score[1]=89;不能用xinke[3]={88,89,95}; xinke.score[2]=95; print(xinke);}voidprint(structstudentstu){ printf(FORMAT,stu.num,,stu.score[0],stu.score[1],stu.score[2]);}#include<stdio.h>#include<string.h>#defineFORMAT"%d\n%s\n%f\n%f\n%f\n"structstudent{ intnum; charname[20]; floatscore[3];}xinke={04,"fuguoqing",88,89,95};voidmain(){ voidprint(structstudent*stu);
structstudent*p; p=&xinke; print(p);或則直接為print(&xinke);}voidprint(structstudent*stu){ printf(FORMAT,(*stu).num,(*stu).name,(*stu).score[0],(*stu).score[1],(*stu).score[2]);}共用體12.3一、共用體類型及其變量的定義
union共用體名{類型名1成員名1;類型名2成員名2;......類型名n成員名n;};其中,union是關(guān)鍵字,是共用體的類型標(biāo)志。共用體類型變量的定義也有三種方法:1.先定義共用體類型,在定義變量。2.定義類型的同時定義變量。
3.直接定義共用體類型變量。二、共用體變量的引用共用體類型變量也必須先定義在使用。不能直接引用結(jié)構(gòu)體變量本身,只能引用結(jié)構(gòu)體變量成員。引用的一般形式為:共用體變量名.成員名共用體變量的每一個成員也可以像普通變量一樣進(jìn)行其類型允許的各種操作。但要注意:由于共用體類型采用的是覆蓋技術(shù),因此共用體變量中起作用的總是最后一次存放的成員變量的值。共用體變量可以作為結(jié)構(gòu)體變量的成員,結(jié)構(gòu)體變量也可以作為共用體變量的成員,并且共用體類型也可以定義數(shù)組。注意:不能對共用體變量進(jìn)行初始化。不能將共用體變量作為函數(shù)參數(shù)和返回值枚舉類型12.5一、枚舉類型及其變量的定義enmu枚舉名{枚舉元素1,枚舉元素2,......};其中,enum是關(guān)鍵字,是枚舉類型的標(biāo)志。例如:enumweekday{sun,mon,tue,wed,thu,fri,sat};枚舉類型變量的定義有兩種方法:1.先定義枚舉類型,在定義變量。enumweekdayworkday,week-end;2.直接定義枚舉變量。enumweekday{sun,mon,tue,wed,thu,fri,sat}workday,week-end;workday和week-end被定義為枚舉變量,它們的值只能是sun到sat之一。
說明:(1)在C編程中,將枚舉元素作為常量處理,所以稱為枚舉常量。因此不能對他們賦值。例如:sun=0;mon=1;是錯誤的(2)枚舉元素是被處理成一個整型常量的,他的值取決于定義時各枚舉元素排列的先后順序。第一個枚舉元素的值為0,第二個為1,,依次順序加1。如果有賦值語句:workday=mon;workday的值為1.這個整數(shù)的值是可以輸出的。例如:printf("%d",wokeday);將輸出1.二、枚舉變量的基本操作1.枚舉變量賦值只能給枚舉變量賦枚舉常量。不能直接給枚舉變量賦整型值,但可以通過將整型值強(qiáng)制轉(zhuǎn)換成枚舉形賦值。workday=(enumweekday)2;它相當(dāng)于吧順序號為2的枚舉元素賦值給workday,相當(dāng)于wokday=tue;2.枚舉元素的判斷比較枚舉元素可以用來做判斷比較。例如:
if(workday==mon)...if(workdau>sun)...3.枚舉變量只能通過賦值語句得到值,不能通過輸入語句直接輸入數(shù)據(jù)。也不能使用輸出語句直接輸出枚舉元素,可以通過switch語句將枚舉元素以字符串形式輸出應(yīng)用舉例:口袋中有紅,黃,藍(lán),白,黑5種顏色的球若干個,以此從口袋
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 屋面防水勞務(wù)分包合同
- 文化創(chuàng)意產(chǎn)業(yè)發(fā)展項(xiàng)目投資合同書
- 運(yùn)輸承包合同書
- 吸糞車租賃合同
- 買賣中介居間合同
- 民宿預(yù)訂合同
- 鉆機(jī)承包合同
- 武漢工程大學(xué)郵電與信息工程學(xué)院《運(yùn)動康復(fù)治療技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 昆明衛(wèi)生職業(yè)學(xué)院《JavaWeb框架應(yīng)用開發(fā)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 永州師范高等??茖W(xué)?!毒植拷馄蕦W(xué)1》2023-2024學(xué)年第二學(xué)期期末試卷
- 幼兒園實(shí)習(xí)指導(dǎo)課件
- 幼兒園繪本故事:《昆蟲運(yùn)動會》 課件
- 數(shù)學(xué)與生活小報
- 挖掘數(shù)學(xué)專業(yè)課程的思政元素-以空間解析幾何為例
- 青島版五四制四年級上冊課件- 運(yùn)用加法運(yùn)算律簡便計算
- 兒科學(xué)教學(xué)課件腎病綜合征
- 2023高中物理步步高大一輪 第四章 專題強(qiáng)化七 圓周運(yùn)動的臨界問題
- delta-臺達(dá)dvp eh系列plc使用說明書ehs
- Q∕GDW 12152-2021 輸變電工程建設(shè)施工安全風(fēng)險管理規(guī)程
- 云南省地質(zhì)災(zāi)害群測群防手冊
- 集團(tuán)權(quán)屬公司管理制度
評論
0/150
提交評論