freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c程序設(shè)計(jì)實(shí)踐教程(中)ppt-資料下載頁(yè)

2025-10-08 00:27本頁(yè)面
  

【正文】 }。 說(shuō)明 – 結(jié)構(gòu)體類型名用標(biāo)識(shí)符表示。 – 成員可以是基本類型或?qū)С鲱愋偷淖兞?,不能指定存?chǔ)類型為 auto、 register、 extern,但可指定存儲(chǔ)類型為 static。 – 定義結(jié)構(gòu)體類型用分號(hào) “ ?!?表示結(jié)束。 – 結(jié)構(gòu)體類型是一個(gè)存儲(chǔ)模型,本身不占內(nèi)存,僅當(dāng)定義其變量時(shí),系統(tǒng)才按此存儲(chǔ)模型為其變量分配相應(yīng)的內(nèi)存。 結(jié)構(gòu)體類型變量的定義 ? 定義結(jié)構(gòu)體類型變量的格式為: 結(jié)構(gòu)體類型名 變量列表 。 或 struct 結(jié)構(gòu)體類型名 變量列表 。 其中,結(jié)構(gòu)體類型名為已定義的類型;多個(gè)變量之間用逗號(hào)分隔;后一種格式與 C兼容。 ? 例如: student s1,s2,s3[10]。 或 struct student s1,s2,s3[10]。 student類型變量 s1的內(nèi)存分配圖 … ?按 student類型的存儲(chǔ)模型為其變量 s1分配內(nèi)存。 ?student類型的存儲(chǔ)模型所需內(nèi)存字節(jié)數(shù): sizeof(student) ?s1變量各成員在內(nèi)存中的順序與其類型中成員說(shuō)明的順序一致。 name 占 20字節(jié) age 占 4字節(jié) score 占 4字節(jié) 結(jié)構(gòu)體類型變量定義的其他形式 ? 結(jié)構(gòu)體類型變量也可在聲明結(jié)構(gòu)體類型的同時(shí)定義。 ? 例如: struct Date{ int year,month,day。 }today,yesterday。 ? 再如: struct{ //定義一個(gè)無(wú)名結(jié)構(gòu)類型 int a。 float b。 }x,y。 無(wú)名結(jié)構(gòu)體類型不能在該類型定義之外定義其變量。 結(jié)構(gòu)體類型變量的初始化 ? 結(jié)構(gòu)體變量的初始化:與數(shù)組的初始化方式類似,在花括號(hào)中,按結(jié)構(gòu)體成員說(shuō)明的順序依次列出其值。 ? 例如: student s1={Jenny,20,98}。 Date today={2021,1,2}。 struct Complex{ float real,image。 }c1={,},c2。 結(jié)構(gòu)體類型變量的使用 ? 訪問(wèn)結(jié)構(gòu)體變量成員的格式為: 結(jié)構(gòu)體變量 .成員名 其中 “ .” 是成員訪問(wèn)運(yùn)算符。例如: 表示訪問(wèn)結(jié)構(gòu)體變量 today的成員 year。 ? 相同結(jié)構(gòu)體類型的變量之間可直接賦值。例如: struct weather{ double temp,wind。 }w1={,},w2=w1。 其中 “ w2=w1?!钡韧冢? =。 =。 ? 結(jié)構(gòu)體類型變量不能直接輸入 /輸出,其成員能否直接輸入 /輸出,取決于其成員的類型,若是基本類型或字符數(shù)組,則可直接輸入 /輸出。如: cins1。 //錯(cuò)誤 cinscore。 //正確 couts1。 //錯(cuò)誤 coutscore。//正確 ? 結(jié)構(gòu)體類型變量做函數(shù)的形參時(shí),調(diào)用函數(shù)的實(shí)參必須是相同結(jié)構(gòu)體類型的變量。參數(shù)的傳遞方式為值傳遞,系統(tǒng)將實(shí)參的每個(gè)成員逐個(gè)拷貝給對(duì)應(yīng)的形參成員。結(jié)構(gòu)體類型變量也可做函數(shù)的返回值。 ? 例 編寫求兩分?jǐn)?shù)之和的函數(shù),并用它求 1/8+5/24。 include struct Fraction{ int num,den。 //分別為分?jǐn)?shù)的分子和分母 }。 int gcd(int m,int n)//求 m和 n的最大公約數(shù) { int t。 if(mn){ t=m。m=n。n=t。 } while(t=m%n){ m=n。n=t。 } return n。 } Fraction add(Fraction x, Fraction y)//求分?jǐn)?shù)和 { Fraction z。 =*+*。//求分子 =*。 //求分母 int a=gcd(,)。 。 。 //約分化簡(jiǎn) return z。 } void main() { Fraction x={1,8},y={5,24},z。 z=add(x,y)。 //調(diào)用函數(shù)求分?jǐn)?shù)之和 coutx+y=?/?endl。 } ? 例 電視臺(tái)舉報(bào)青年歌手大獎(jiǎng)賽,請(qǐng)輸入每位選手的姓名、編號(hào)及演唱得分、綜合素質(zhì)得分、新歌得分(演唱新歌加 ),計(jì)算每人的總分,然后輸出每人的全部信息。 include struct Singer{//定義結(jié)構(gòu)體類型,描述青年歌手 char name[10]。 //姓名 char no[8]。 //編號(hào) float singScore, //演唱得分 diaScore, //綜合素質(zhì)得分 newScore。 //新歌得分 float sum。 //總分 }。 const int n=3。 //參賽青年歌手人數(shù) void main() { Singer s[n]。 //定義結(jié)構(gòu)體數(shù)組 for(int i=0。in。i++){ cout輸入第 i+1 “位選手的姓名、編號(hào)和三項(xiàng)得分: ” 。 cins[i].names[i].nos[i].singScore s[i].diaScores[i].newScore。 s[i].sum=s[i].singScore+s[i].diaScore +s[i].newScore。 //求總分 } for(i=0。in。i++) couts[i].name39。\t39。s[i].no39。\t39。 s[i].singScore39。\t39。s[i].diaScore39。\t39。 s[i].newScore39。\t39。s[i].sumendl。 } 位域 * ? 內(nèi)存浪費(fèi)現(xiàn)象比比皆是。例如: – 人的性別只需 1個(gè)二進(jìn)制位就可精確表示,但通常用字符型或字符型數(shù)組表示。 – 人的年齡只需 7個(gè)二進(jìn)制位就可精確表示,但通常用整型變量表示。 ? 針對(duì)上述情況,如何節(jié)約使用內(nèi)存? ? 位域:結(jié)構(gòu)體中 指定了存儲(chǔ)位數(shù)的成員稱為位域 。 使用位域可解決上述問(wèn)題。 ? 位域類型: 含有位域的結(jié)構(gòu)體類型 。 定義位域類型 ? 格式為: struct 位域類型名 { 類型名 位域名 1 :二進(jìn)制位數(shù) 。 //定義位域 類型名 位域名 2 :二進(jìn)制位數(shù) 。 //定義位域 …… //定義其它成員 }。 其中,位域類型名用標(biāo)識(shí)符表示,類型名只能是整型和字符型,二進(jìn)制位數(shù)必須是大于或等于 0的整數(shù)。 ? 例如: struct data{ unsigned short flaga:1。 //取值 0或 1 unsigned short flagb:3。 //取值 0~ 7 unsigned short flagc:4。 //取值 0~ 15 short flagd:4。 //取值 8~ 7 }f1。 位域類型 data的變量 f1的內(nèi)存分配圖 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 注:同一字中位域的分配方向因系統(tǒng)而異,可能從右到左,也可能從左到右。 VC++從右到左。 ? 若要跳過(guò)幾個(gè)二進(jìn)位,可定義無(wú)名位域。若無(wú)名位域的位數(shù)為 0,則表示下一位域從新單元開始。如: struct PackedData{ unsigned flaga:4。 unsigned:2。 //跳過(guò) 2個(gè)二進(jìn)位,預(yù)留 unsigned:0。 //下一位域從新單元開始 unsigned flagd:7。 }。 flagd位域從下一個(gè) unsigned存儲(chǔ)單元開始存儲(chǔ)。 這樣 PackedData類型需要 2個(gè) unsigned存儲(chǔ)單元。 位域類型變量的定義、初始化和使用 ? 位域類型變量的定義、初始化和用法與結(jié)構(gòu)體類型變量相同。例如: data f2={0,4,10,1}。 =12。 ? 注意:位域賦值時(shí),若所賦數(shù)值超出位域的表示范圍,則取其低位數(shù)字。例如: =10。 因 10已超出 flagb位域 0~ 7的表示范圍,故賦給 flagb位域的是 10的二進(jìn)制表示的低三位: 10的二進(jìn)制為 1 0 1 0 即 2。 ? 位域變量節(jié)省內(nèi)存,但存取費(fèi)時(shí)。使用時(shí)注意權(quán)衡。 ? 例 用位域來(lái)存放學(xué)生的信息。 include const int num=2。 struct student{ char name[10]。 //姓名:非位域成員 unsigned short sex:1。 //性別:位域成員 unsigned short age:7。 //年齡:位域成員 unsigned short score:7。//成績(jī):位域成員 }。 void main() { coutsizeof(student)=sizeof(student)endl。 student s[num]={{Tonny,1,19,98},{Jenny,0,18,85}}。 for(int i=0。inum。i++) couts[i].name39。,39。s[i].sex39。,39。 s[i].age39。,39。s[i].scoreendl。 } 共用體的定義及應(yīng)用 ? 有時(shí)希望多個(gè)變量共用同一塊內(nèi)存,可通過(guò)定義共用體類型的變量來(lái)實(shí)現(xiàn)。 ? 共用體類型的定義格式: union 共用體類型名 { 數(shù)據(jù)類型 成員名 1。 數(shù)據(jù)類型 成員名 2。 …… }。 ?在定義和使用形式上,共用體與結(jié)構(gòu)體相似:由多個(gè)成員組成,成員的類型可以不同。 ?在內(nèi)存分配上,共用體與結(jié)構(gòu)體有本質(zhì)區(qū)別:結(jié)構(gòu)體的每個(gè)成員都有自己的獨(dú)占內(nèi)存;而共用體的每個(gè)成員共用同一塊內(nèi)存。 ?共同體存儲(chǔ)區(qū)域的大小由占用最大存儲(chǔ)區(qū)的成員決定。 ? 例如: union udata{ char c。 int i。 double d。 }。 ? 共用體類型定義后,即可定義其變量、數(shù)組、指針和引用等。例如: udata u1, //變量 u1實(shí)際占用 8字節(jié)內(nèi)存 u2[10], *p=u2。 ? 對(duì)共用體變量的操作與結(jié)構(gòu)體變量類似。例如: =39。a39。 =25。 =。 注意,當(dāng)對(duì)變量 u1的成員 i賦值時(shí),覆蓋了成員 c的值;類似的當(dāng)對(duì)成員 d賦值時(shí),又覆蓋了成員 i的值。同一時(shí)刻,只可使用其中的一個(gè)成員。 ? 共用體可做函數(shù)的參數(shù)和返回值。 ? 應(yīng)用舉例:學(xué)生體能測(cè)試,男生測(cè) 100米,女生測(cè)跳繩。要求輸入學(xué)生的體能測(cè)試數(shù)據(jù)并輸出。 includeiostream using namespace std。 struct student{ char sex。 //性別: 39。m39。為男生, 39。f39。為女生 union{ float run。 //百米成績(jī) int rope。 //跳繩成績(jī) }score。 }。 void input(student s[],int n) { for(int i=0。in。i++){ cout輸入學(xué)生性別: 。 cins[i].sex。 if(s[i].
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1