




已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
實驗九參考程序實驗91/*實驗9.1*(1)為某商店的商品設計合適的結構體 (PRODUCT)。每一種商品包含編號(number)、* 名稱(name)、價格(price)、折扣(discount)4項信息,根據(jù)表9-1,為這些信息選擇合適的數(shù)據(jù)類型。*(2)建立2個函數(shù),以實現(xiàn)對商品的操作。input函數(shù)實現(xiàn)商品的輸入;* display函數(shù)顯示商品信息。要求這2個函數(shù)都以商品的結構體(PRODUCT)指針為參數(shù)。*(3)在主函數(shù)中為商品鍵盤定義一個結構體變量(keyboard),利用input函數(shù)實現(xiàn)鍵盤信息的輸入;* 定義一個結構體數(shù)組(elec_device3),利用input函數(shù)實現(xiàn)冰箱、空調、電視信息的輸入;* 最后利用display函數(shù)顯示4種商品的信息。* 表9-1*編號名稱價格折扣*1010鍵盤89.500.85*1021冰箱1024.000.95*1022空調2058.500.90*1023電視3001.880.95*/#include typedef struct _PRODUCTint iNumber;char strName32;float fPrice;float fDiscount;PRODUCT,*PPRODUCT;void input(PRODUCT *pProduct);void display(PPRODUCT pProduct);void main()int i;PRODUCT kyeboard;PRODUCT elec_device3;input(&kyeboard);for(i=0;i3;i+)input(&elec_devicei);display(&kyeboard);for(i=0;iiNumber);printf(請輸入商品的名稱:n);scanf(%s,pProduct-strName);printf(請輸入商品的價格:n);scanf(%f,&pProduct-fPrice);printf(請輸入商品的折扣:n);scanf(%f,&pProduct-fDiscount);/*函數(shù)名稱:display()*參數(shù):PRODUCT pProduct -PRODUCT結構體數(shù)據(jù)*返回值:無*說明:*該函數(shù)用來完成PRODUCT結構體數(shù)據(jù)的顯示。*/void display(PPRODUCT pProduct)printf(n商品的編號:%dn,pProduct-iNumber);printf(商品的名稱:%sn,pProduct-strName);printf(商品的價格:%.2fn,pProduct-fPrice);printf(商品的折扣:%.2fn,pProduct-fDiscount);實驗92/*實驗9.2*(1)利用鏈表結構(PLAY_LIST),為某媒體播放器建立一個播放列表(playList),* 該鏈表的每一個節(jié)點包括:歌曲編號(number)、歌曲名稱(name)、歌手姓名(artist)、歌曲長度(time),見表9-2。*(2)建立4個函數(shù),以實現(xiàn)對播放列表操作。函數(shù)的原型如下:* 創(chuàng)建播放列表 PLAY_LIST* createList(); * 在播放列表中添加一首歌曲 PLAY_LIST* insertItem(PLAY_LIST* pPlayList,PLAY_LIST* pNewPlayList); * 在播放列表中刪除編號為iItemNumber的歌曲 PLAY_LIST* deleteItem(PLAY_LIST* pPlayList, int iItemNumber); * 顯示整個播放列表中的所有信息 void displayIList(PLAY_LIST* pPlayList); *(3)在主函數(shù)中定義一個鏈表playList。* A)利用函數(shù)createList創(chuàng)建播放列表playList,并在其節(jié)點上依次存儲編號為1100、1102、1103的3首歌曲,* 并調用displayList函數(shù)顯示此時整個播放列表中的所有信息。* B)調用insertItem函數(shù)將編號為1101的歌曲添加到playList中,并顯示整個播放列表中的所有信息。* C)調用deleteItem函數(shù)將編號為1102的歌曲從playList中刪除,并顯示整個播放列表中的所有信息。* 表9-2*歌曲編號歌曲名稱歌手姓名歌曲長度*1100 落葉歸根 王力宏 05:16*1101 風吹麥浪 李健 04:07*1102 往事隨風 齊秦 04:38*1103 天空 王菲 03:42*/#include typedef struct _PLAY_LISTint iNumber;char strName64;char strArtist32;struct _TIMEint iMinutes;int iSeconds; sTime;struct _PLAY_LIST *pNext;PLAY_LIST,*PPLAY_LIST;PLAY_LIST* createList();PLAY_LIST* insertItem(PLAY_LIST* pPlayList,PLAY_LIST* pNewPlayList);PLAY_LIST* deleteItem(PLAY_LIST* pPlayList,int iItemNumber);void displayList(PLAY_LIST* pPlayList);int inputItem(PLAY_LIST* pPlayList);void main()PLAY_LIST *pPlayList=NULL;PLAY_LIST *pNewPlayList=NULL;pPlayList=createList();printf(播放列表:n);displayList(pPlayList);printf(n播放列表插入曲目:n);pNewPlayList=createList();pPlayList=insertItem(pPlayList,pNewPlayList);printf(插入新的曲目之后的播放列表:n);displayList(pPlayList);printf(n播放列表刪除曲目:n);pPlayList=deleteItem(pPlayList,1102);printf(刪除編號為1102的曲目之后的播放列表:n);displayList(pPlayList);/*函數(shù)名稱:createList()*參數(shù):無*返回值:PLAY_LIST* -返回創(chuàng)建好的播放列表鏈表*說明:*該函數(shù)用來創(chuàng)建播放列表鏈表。*/PLAY_LIST* createList()int iResult=0;PLAY_LIST *pListHead,*pTemp,*pNewList;pTemp=pNewList=(PLAY_LIST*)malloc(sizeof(PLAY_LIST);pNewList-pNext=NULL;pListHead=NULL;printf(創(chuàng)建新播放列表n);iResult=inputItem(pNewList);if(iResult)pListHead=pNewList;while(iResult)pNewList=(PLAY_LIST*)malloc(sizeof(PLAY_LIST);pNewList-pNext=NULL;iResult=inputItem(pNewList);if(iResult)pTemp-pNext=pNewList;pTemp=pNewList;return pListHead;/*函數(shù)名稱:insertItem()*參數(shù):PLAY_LIST* pPlayList -操作的播放列表鏈表* PLAY_LIST* pNewPlayList -插入的新項目*返回值:PLAY_LIST* -返回操作后的播放列表鏈表*說明:*該函數(shù)用來完成播放列表鏈表的新項目插入。*/PLAY_LIST* insertItem(PLAY_LIST* pPlayList,PLAY_LIST* pNewPlayList)PLAY_LIST* pTemp;if(NULL=pPlayList|NULL=pNewPlayList)if(pPlayList)return pPlayList;if(pNewPlayList)return pNewPlayList;return NULL;pTemp=pPlayList;if(pTemp-iNumberpNewPlayList-iNumber)pNewPlayList-pNext=pTemp;return pNewPlayList;while(1)if(pTemp-pNext=NULL)pTemp-pNext=pNewPlayList;break;if(pTemp-pNext-iNumberpNewPlayList-iNumber)pNewPlayList-pNext=pTemp-pNext;pTemp-pNext=pNewPlayList;break;pTemp=pTemp-pNext;return pPlayList;/*函數(shù)名稱:deleteItem()*參數(shù):PLAY_LIST* pPlayList -操作的播放列表鏈表* int iItemNumber -刪除項目的編號*返回值:PLAY_LIST* -返回操作后的播放列表鏈表*說明:*該函數(shù)用來完成播放列表鏈表的項目刪除。*/PLAY_LIST * deleteItem(PLAY_LIST* pPlayList,int iItemNumber)PLAY_LIST* pTemp;if(NULL=pPlayList)return NULL;pTemp=pPlayList;if(pTemp-iNumber=iItemNumber)return pTemp-pNext;while(1)if(pTemp-pNext=NULL)break;if(pTemp-pNext-iNumber=iItemNumber)pTemp-pNext=pTemp-pNext-pNext;break;pTemp=pTemp-pNext;return pPlayList;/*函數(shù)名稱:displayList()*參數(shù):PLAY_LIST* pPlayList -顯示的播放列表鏈表*返回值:無*說明:*該函數(shù)用來完成播放列表鏈表的內容顯示。*/void displayList(PLAY_LIST* pPlayList)PLAY_LIST * pTemp;printf(n歌曲編號t歌曲名稱t歌手姓名t歌曲時間長度(mm:ss)n);if(NULL=pPlayList)return ;pTemp=pPlayList;while(pTemp)printf(%-8dt%-8st%-8st%02d:%02dn,pTemp-iNumber,pTemp-strName,pTemp-strArtist,pTemp-sTime.iMinutes,pTemp-sTime.iSeconds);pTemp=pTemp-pNext;/*函數(shù)名稱:inputItem()*參數(shù):PLAY_LIST* pPlayList -操作的播放列表鏈表*返回值:int -正常返回1,不正常返回0*說明:*該函數(shù)用來完成播放列表鏈表的內容輸入。*/int inputItem(PLAY_LIST* pPlayList)printf(請輸入歌曲編號,編號小于0結束輸入:n);scanf(%d,&pPlayList-iNumber);if(pPlayList-iNumberstrName);printf(請輸入歌手姓名:n);scanf(%s,pPlayList-strArtist);printf(請輸入歌曲時間長度(mm:ss):n);scanf(%d:%d,&pPlayList-sTime.iMinutes,&pPlayList-sTime.iSeconds);return 1;實驗93#include union dataint iData2;float fData;char strData4;unsigned int uData;myUnion;void main()int iTemp;char strTemp;float fTemp;unsigned int uTemp;/*第一部分*/printf(第一部分n);myUnion.iData0=-1;myUnion.iData1=1;iTemp=myUnion.iData0;printf(iTemp=%dn,iTemp);/*iTemp的值是多少*/uTemp=myUnion.uData;printf(uTemp=%un,uTemp);/*uTemp的值是多少*/strTemp=myUnion.strData0;printf(strTemp=%d(ASCII:%C)n,strTemp,strTemp);/*strTemp的值是多少*/fTemp=myUnion.fData;printf(fTemp=%fnn,fTemp);/*fTemp的值是多少*/*第二部分*/printf(第二部分n);myUnion.strData0=A;myUnion.strData1=B;iTemp=myUnion.iData0;printf(iTemp=%dn,iTemp);/*iTemp的值是多少*/uTemp=myUnion.uData;printf(uTemp=%un,uTemp);/*uTemp的值是多少*/strTemp=myUnion.strData0;printf(strTemp=%d(ASCII:%C)n,strTemp,strTemp);/*strTemp的值是多少*/fTemp=myUnion.fData;printf(fTemp=%fnn,fTemp);/*fTemp的值是多少*/*第三部分*/printf(第三部分n);myUnion.fData=0.1f;iTemp=myUnion.iData0;printf(iTemp=%dn,iTemp);/*iTemp的值是多少*/uTemp=myUnion.uData;printf(uTemp=%un,uTemp);/*uTemp的值是多少*/strTemp=myUnion.strData0;printf(strTemp=%d(ASCII:%C)n,strTemp,strTemp);/*strTemp的值是多少*/fTemp=myUnion.fData;printf(fTemp=%fnn,fTemp);/*fTemp的值是多少*/實驗94/*實驗9.4*(1)在一個顯示系統(tǒng)中,需要在任意位置顯示一個中文或者英文字符,為此請根據(jù)表9-4設計一種數(shù)據(jù)結構。* 其中當label=0時,content的16位數(shù)據(jù)中低8位為英文字符,高8位的數(shù)據(jù)丟棄。* 當label=1時,content的16位數(shù)據(jù)為中文數(shù)據(jù)。*(2)建立2個函數(shù),函數(shù)的原型如下:* 封裝數(shù)據(jù),即將中英文字符按照表9-4方式存儲* PACK_DATA packData(unsigned uRow,unsigned uCol,unsigned uLabel,char * pContent); * 將封裝的數(shù)據(jù)提取出來,并安裝要求顯示在屏幕上* void unpackData(PACK_DATA data);*(3)只考慮字符(content)為英文的情況。在主函數(shù)中,調用函數(shù)packData,將信息(在第2行第3列顯示英文字符X)封裝好;* 然后調用函數(shù)unpackData 將上一步封裝好的數(shù)據(jù)提取并顯示出來。*(4)考慮字符(content)可能是英文也可能是中文的情況。* 在主函數(shù)中,2次調用函數(shù)packData,將信息1(在第2行第3列顯示英文字符X)和信息2(在第3行第4列顯示中文字符“中”)封裝好;* 然后2次調用函數(shù)unpackData 將上一步封裝好的數(shù)據(jù)提取并顯示出來。* 表9-4*行號(row):3bit列號(col) :3bit中英文標識(label):2bit字符(content):16bit*/#include /*聲明結構體并定義結構體類型*/typedef struct _PACK_DATAunsigned uRow:3;unsigned uCol:3;unsigned uLabel:2;unsigned short uContent:16;PACK_DATA,*PPACK_DATA;/*函數(shù)聲明*/*封裝數(shù)據(jù),只考慮英文情況*/PACK_DATA packData(unsigned uRow,unsigned uCol,unsigned uLabel,char * pContent);/*提取數(shù)據(jù),只考慮英文情況*/void unpackData(PACK_DATA data);/*封裝數(shù)據(jù),包含中英文情況*/PACK_DATA packData1(unsigned uRow,unsigned uCol,unsigned uLabel,char * pContent);/*提取數(shù)據(jù),包含中英文情況*/void unpackData1(PACK_DATA data);void main()PACK_DATA data;data=packData1(1,2,1,中);unpackData1(data);data=packData1(1,2,0,A);unpackData1(data);/*函數(shù)名稱:*packData()*參數(shù):*unsigned uRow -字符所在的行號*unsigned uCol -字符所在的列號*unsigned uLabel -中英文標志位*char * pContent -字符數(shù)據(jù)*返回值:* PACK_DATA -封裝好的PACK_DATA結構體*說明:*該函數(shù)用來封裝英文字符。*/PACK_DATA packData(unsigned uRow,unsigned uCol,unsigned uLabel,char * pContent)PACK_DATA data;data.uCol=uCol;data.uRow=uRow;data.uLabel=uLabel;data.uContent=pContent0;return data;/*函數(shù)名稱:*unpackData()*參數(shù):*PACK_DATA data
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年西北大學現(xiàn)代學院輔導員考試真題
- 2024年廣西百色工業(yè)投資發(fā)展集團有限公司招聘筆試真題
- 高二升高三數(shù)學高二數(shù)學暑期綜合測評卷(19題新高考新結構)(原卷版)
- 腦梗死溶栓取栓術后護理講課件
- 新鄉(xiāng)市重點中學2025屆英語八下期中達標檢測模擬試題含答案
- 特色小吃店合伙經營與市場拓展合同
- 統(tǒng)編版小升初六年級下學期語文期末考試試題(含答案)
- 脾動脈瘤術后護理講課件
- 餐廳員工勞動合同解除爭議調解規(guī)范
- 住宅出租補充協(xié)議范本
- 初中數(shù)學專題講座課件
- 【MOOC】人像攝影-中國傳媒大學 中國大學慕課MOOC答案
- 【MOOC】計算機組成原理-電子科技大學 中國大學慕課MOOC答案
- 【MOOC】電路分析AⅡ-西南交通大學 中國大學慕課MOOC答案
- 小學生數(shù)學邏輯推理題100道及答案解析
- 基本氣象要素
- 食品安全規(guī)章制度模板打印
- 2024年永平縣小升初全真數(shù)學模擬預測卷含解析
- 2002版《水利工程施工機械臺時費定額》
- 山東省菏澤市鄄城縣2023-2024學年七年級下學期7月期末英語試題
- 國家開放大學本科《會計實務專題》形考作業(yè)一至四試題及答案
評論
0/150
提交評論