版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
結(jié)構(gòu)體使用舉例結(jié)構(gòu)體和共同體【例1:】有3個(gè)候選人,每個(gè)選民只能投票選一人,要求編寫一個(gè)統(tǒng)計(jì)選票的程序,先后輸人被選人的名字,最后輸出各人得票結(jié)果編寫統(tǒng)計(jì)候選人得票的程序解題思路定義一個(gè)結(jié)構(gòu)體數(shù)組,數(shù)組中包含3個(gè)元素,每個(gè)元素中的信息應(yīng)包括候選人的姓名(字符型)和得票數(shù)(整型)輸入被選人的姓名,然后與數(shù)組元素中的“姓名”成員比較,如果相同,就給這個(gè)元素中的“得票數(shù)”成員的值加1。最后輸出所有元素的信息程序?qū)崿F(xiàn)#include<stdio.h>#include<string.h>structperson//聲明結(jié)構(gòu)體類型(候選人){charname[20];intcount;}leader[3]={{“Li”,0},{“zhang”,0},{“wang”,0}};//定義結(jié)構(gòu)體數(shù)組voidmain(){inti,j;charleader_name[20];for(i=1;i<=100;i++)//100個(gè)選民投票{scanf(“%s”,leader_name);//輸入被選人的姓名
//判斷與哪個(gè)候選人的姓名相同,若相同,就把對應(yīng)的票數(shù)加1for(j=0;j<3;j++)if(strcmp(leader_name,leader[j].name)==0){leader[j].count++;break;}}for(i=0;i<3;i++)//輸出每個(gè)候選人信息printf("\n%15s%5d",leader[i].name,leader[i].count);}【例2:】輸入10個(gè)學(xué)生的學(xué)號、姓名和考試成績,然后按從高分到低分的順序排列后輸出解題思路定義一個(gè)結(jié)構(gòu)體數(shù)組,數(shù)組中包含10個(gè)元素,每個(gè)元素中的信息應(yīng)包括學(xué)生的學(xué)號(整型)、姓名(字符型數(shù)組)和考試成績(實(shí)型)使用某種排序算法(如:冒泡法),按照“成績”成員降序排序程序?qū)崿F(xiàn)#include<stdio.h>structstudent//聲明結(jié)構(gòu)體類型{intnum;charname[20];floatscore;};voidmain(){inti,j;structstudenta[10],t;for(i=0;i<10;i++)//輸入10個(gè)學(xué)生的信息。注意:不能整體輸入scanf(“%d%s%s”,&a[i].num,a[i].name,&a[i].score);for(i=0;i<9;i++)//使用冒泡排序算法按“成績”成員降序排序for(j=0;j<9-i;j++)if(a[j].score<a[j+1].score){t=a[j];a[j]=a[j+1];a[j+1]=t;}//交換兩個(gè)數(shù)組元素(可整體引用)for(i=0;i<10;i++)//輸出每個(gè)學(xué)生的信息printf((“\n%5d%15s%7.2f”,a[i].num,a[i].name,a[i].score);}用typedef聲明新類型名
功能:聲明新的類型名來代替已有的類型名簡單地用一個(gè)新的類型名代替原有的類型名typedefintInteger; //指定用Integer為類型名,作用與int相同typedeffloatReal; //指定用Real為類型名,作用與float相同例typedefstruct{
intmonth;
intday;
intyear;}Date;
//聲明了一個(gè)新類型名Date,代表結(jié)構(gòu)體類型Datebirthday;//定義結(jié)構(gòu)體類型變量birthday,不要寫成structDatebirthday;Date*p;
//定義結(jié)構(gòu)體指針變量p,指向此結(jié)構(gòu)體類型數(shù)據(jù)
例例命名一個(gè)簡單的類型名代替復(fù)雜的類型表示方法命名一個(gè)新的類型名代表結(jié)構(gòu)體類型命名一個(gè)新的類型名代表數(shù)組類型typedefintNum[100];
//聲明Num為整型數(shù)組類型名Numa;
//定義a為整型數(shù)組名,它有100個(gè)元素命名一個(gè)簡單的類型名代替復(fù)雜的類型表示方法typedefchar*String;
//聲明String為字符指針類型Stringp,s[10]; //定義p為字符指針變量,s為字符指針數(shù)組
例例命名一個(gè)新的類型名代表指針類型命名一個(gè)新的類型名代表指向函數(shù)的指針類型typedefint(*Pointer)(); //聲明Pointer為指向函數(shù)的指針類型,該函數(shù)返回整型值Pointerp1,p2;
//p1,p2為Pointer類型的指針變量【例3:】學(xué)生的記錄由學(xué)號和成績組成。N名學(xué)生的數(shù)據(jù)已放入主函數(shù)中的結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun,其功能是:把高于等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回解題思路聲明如下結(jié)構(gòu)體類型STREC:typedefstruct{charnum[10];doubles;}STREC;函數(shù)fun的原型如下:floatfun(STREC*a,STREC*b,int*n);第一個(gè)形參(也可為數(shù)組)接收學(xué)生數(shù)組的起始地址;第二個(gè)形參(也可為數(shù)組)接收存放高于等于平均分學(xué)生信息數(shù)組的起始地址;第三個(gè)形參接收存放高于等于平均分的學(xué)生人數(shù)的單元的地址函數(shù)的返回值是平均分程序?qū)崿F(xiàn)#include<stdio.h>#defineN10typedefstruct//聲明結(jié)構(gòu)體類型{charnum[10];doubles;}STREC;//STREC是結(jié)構(gòu)體類型名floatfun(STREC*a,STREC*b,int*n){inti,k=0;floatav=0.0;k=0;//變量k用于統(tǒng)計(jì)高于或等于平均分學(xué)生人數(shù)for(i=0;i<N;i++)//計(jì)算N個(gè)學(xué)生成績總和av=av+a[i].s;av=av/N;//計(jì)算N個(gè)學(xué)生的平均成績
for(i=0;i<N;i++)//將高于或等于平均分的學(xué)生信息存入b所指向數(shù)組中,并計(jì)數(shù)
if(av<=a[i].s){b[k]=a[i];k++;}*n=k;//將高于或等于平均分的學(xué)生人數(shù)放入n所指向的單元returnav;//返回平均分}
voidmain(){STRECs[N],h[N],t;inti,j,n;floatave;
for(i=0;i<N;i++)scanf("%s%f",s[i].num,&s[i].s);ave=fun(s,h,&n);//調(diào)用函數(shù)funprintf("The%dstudentdatawhichishigherthan%7.3f:\n",n,ave);for(i=0;i<n;i++)printf("%s%4.1f\n",h[i].num,h[i].s);printf("\n");}【例4:】人員的記錄由編號和出生年、月、日組成,N名人員的數(shù)據(jù)已在主函數(shù)中存入結(jié)構(gòu)體數(shù)組std中,且編號唯一。編寫函數(shù)search,其功能是:找出指定編號人員的數(shù)據(jù),作為函數(shù)值返回,由主函數(shù)輸出,若指定編號不存在,返回?cái)?shù)據(jù)中的編號為空串解題思路本題目可以使用順序查找算法:依次把每個(gè)人員的編號與要找的編號進(jìn)行比較,若找到了,就返回相應(yīng)編號人員的數(shù)據(jù);否則,返回?cái)?shù)據(jù)中的編號為空串函數(shù)fun的原型如下:STUsearch(STU*std,char*num);第一個(gè)形參接收人員數(shù)組的起始地址;第二個(gè)形參接收要查詢的編號字符串的起始地址函數(shù)的返回值是某人員的數(shù)據(jù)(結(jié)構(gòu)體類型)程序?qū)崿F(xiàn)#include<stdio.h>#include<string.h>#defineN8typedefstruct//聲明結(jié)構(gòu)體類型{charnum[8];intyear,month,day;}STU;//STU是結(jié)構(gòu)體類型名STUsearch(STU*std,char*num){inti;STUa={“”,9999,99,99};//特別定義的結(jié)構(gòu)體類型變量,用于找不到時(shí)返回
//使用順序查找算法依次把每個(gè)人員的編號與要找的編號進(jìn)行比較for(i=0;i<N;i++)if(strcmp(std[i].num,num)==0)return(std[i]);//如果找到了,就返回相應(yīng)人員的數(shù)據(jù)returna;//如果找不到,就返回變量a}voidmain(){STUstd[N]={{"1111",1984,2,15},{"2222",1983,9,21},{"3333",1984,9,1},{"4444",1983,7,15},{"5555",1984,9,28},{"6666",1983,11,15},{"7777",1983,6,22},{"8888",1984,8,19}};STUp;charno[10];printf(“請輸入要查找的編號:“);gets(no
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年中糧麥芽(江陰)有限公司招聘備考題庫帶答案詳解
- 2026年【京企直聘】保障房中心丨面向社會公開招聘法律管理崗1人備考題庫有答案詳解
- 2026年蘇州百年職業(yè)學(xué)院中單招綜合素質(zhì)考試模擬測試卷及答案1套
- 2026年天風(fēng)證券股份有限公司海南分公司招聘備考題庫及參考答案詳解
- 2026年中國新興廈門進(jìn)出口有限責(zé)任公司招聘備考題庫含答案詳解
- 2026年中國鋼研科技集團(tuán)有限公司招聘備考題庫及1套參考答案詳解
- 2026年漯河食品職業(yè)學(xué)院單招綜合素質(zhì)考試題庫及答案1套
- 2026年江西省鷹潭市單招職業(yè)傾向性測試模擬測試卷新版
- 2026年浙江海洋大學(xué)單招職業(yè)技能考試模擬測試卷及答案1套
- 2026年吉安市吉水縣兩山資源控股有限公司面向社會公開招聘出納的備考題庫及1套參考答案詳解
- GB/T 6074-2025板式鏈、連接環(huán)和槽輪尺寸、測量力、抗拉載荷和動載載荷
- 護(hù)理員職業(yè)道德與法律法規(guī)
- 2025年安徽省普通高中學(xué)業(yè)水平合格性考試化學(xué)試卷(含答案)
- 2025年寧波市公共交通集團(tuán)有限公司下屬分子公司招聘備考題庫及答案詳解參考
- 2026年關(guān)于汽車銷售工作計(jì)劃書
- 腫瘤放射治療的新技術(shù)進(jìn)展
- 2024外研版四年級英語上冊Unit 4知識清單
- 視頻會議系統(tǒng)施工質(zhì)量控制方案
- 2025年高二數(shù)學(xué)建模試題及答案
- 2025年黨的二十屆四中全會精神宣講稿及公報(bào)解讀輔導(dǎo)報(bào)告
- 壓力管道安裝單位壓力管道質(zhì)量安全風(fēng)險(xiǎn)管控清單
評論
0/150
提交評論