




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验九参考程序实验91/*实验9.1*(1)为某商店的商品设计合适的结构体 (PRODUCT)。每一种商品包含编号(number)、* 名称(name)、价格(price)、折扣(discount)4项信息,根据表9-1,为这些信息选择合适的数据类型。*(2)建立2个函数,以实现对商品的操作。input函数实现商品的输入;* display函数显示商品信息。要求这2个函数都以商品的结构体(PRODUCT)指针为参数。*(3)在主函数中为商品键盘定义一个结构体变量(keyboard),利用input函数实现键盘信息的输入;* 定义一个结构体数组(elec_device3),利用input函数实现冰箱、空调、电视信息的输入;* 最后利用display函数显示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);/*函数名称:display()*参数:PRODUCT pProduct -PRODUCT结构体数据*返回值:无*说明:*该函数用来完成PRODUCT结构体数据的显示。*/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),* 该链表的每一个节点包括:歌曲编号(number)、歌曲名称(name)、歌手姓名(artist)、歌曲长度(time),见表9-2。*(2)建立4个函数,以实现对播放列表操作。函数的原型如下:* 创建播放列表 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)在主函数中定义一个链表playList。* A)利用函数createList创建播放列表playList,并在其节点上依次存储编号为1100、1102、1103的3首歌曲,* 并调用displayList函数显示此时整个播放列表中的所有信息。* B)调用insertItem函数将编号为1101的歌曲添加到playList中,并显示整个播放列表中的所有信息。* C)调用deleteItem函数将编号为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);/*函数名称:createList()*参数:无*返回值:PLAY_LIST* -返回创建好的播放列表链表*说明:*该函数用来创建播放列表链表。*/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(创建新播放列表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;/*函数名称:insertItem()*参数:PLAY_LIST* pPlayList -操作的播放列表链表* PLAY_LIST* pNewPlayList -插入的新项目*返回值:PLAY_LIST* -返回操作后的播放列表链表*说明:*该函数用来完成播放列表链表的新项目插入。*/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;/*函数名称:deleteItem()*参数:PLAY_LIST* pPlayList -操作的播放列表链表* int iItemNumber -删除项目的编号*返回值:PLAY_LIST* -返回操作后的播放列表链表*说明:*该函数用来完成播放列表链表的项目删除。*/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;/*函数名称:displayList()*参数:PLAY_LIST* pPlayList -显示的播放列表链表*返回值:无*说明:*该函数用来完成播放列表链表的内容显示。*/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;/*函数名称:inputItem()*参数:PLAY_LIST* pPlayList -操作的播放列表链表*返回值:int -正常返回1,不正常返回0*说明:*该函数用来完成播放列表链表的内容输入。*/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)在一个显示系统中,需要在任意位置显示一个中文或者英文字符,为此请根据表9-4设计一种数据结构。* 其中当label=0时,content的16位数据中低8位为英文字符,高8位的数据丢弃。* 当label=1时,content的16位数据为中文数据。*(2)建立2个函数,函数的原型如下:* 封装数据,即将中英文字符按照表9-4方式存储* PACK_DATA packData(unsigned uRow,unsigned uCol,unsigned uLabel,char * pContent); * 将封装的数据提取出来,并安装要求显示在屏幕上* void unpackData(PACK_DATA data);*(3)只考虑字符(content)为英文的情况。在主函数中,调用函数packData,将信息(在第2行第3列显示英文字符X)封装好;* 然后调用函数unpackData 将上一步封装好的数据提取并显示出来。*(4)考虑字符(content)可能是英文也可能是中文的情况。* 在主函数中,2次调用函数packData,将信息1(在第2行第3列显示英文字符X)和信息2(在第3行第4列显示中文字符“中”)封装好;* 然后2次调用函数unpackData 将上一步封装好的数据提取并显示出来。* 表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;/*函数声明*/*封装数据,只考虑英文情况*/PACK_DATA packData(unsigned uRow,unsigned uCol,unsigned uLabel,char * pContent);/*提取数据,只考虑英文情况*/void unpackData(PACK_DATA data);/*封装数据,包含中英文情况*/PACK_DATA packData1(unsigned uRow,unsigned uCol,unsigned uLabel,char * pContent);/*提取数据,包含中英文情况*/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);/*函数名称:*packData()*参数:*unsigned uRow -字符所在的行号*unsigned uCol -字符所在的列号*unsigned uLabel -中英文标志位*char * pContent -字符数据*返回值:* PACK_DATA -封装好的PACK_DATA结构体*说明:*该函数用来封装英文字符。*/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;/*函数名称:*unpackData()*参数:*PACK_DATA data
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课题申报书教师建议
- 夫妻财产分割合同协议模板
- 项目进展跟踪系统的必要性试题及答案
- 项目管理资格考试的应考心态与复习技巧分享试题及答案
- 注册会计师公司价值管理试题及答案
- 课题申报书数学
- 提升财务知识的途径计划
- 项目管理优先级排序试题及答案
- 新年职业素养提升计划
- 2025年资本市场基础试题及答案
- 中考英语专项练习-语法填空20篇(含解析)
- 国家森林公园景区信息化建设规划方案
- 2025年江苏安东控股集团有限公司招聘笔试参考题库含答案解析
- 大学生应征入伍学费补偿申请表
- 《海尔集团应收账款管理制度现状及存在的问题探析(数据图表论文)》10000字
- 2024年四川省甘孜州阿坝州中考英语试卷真题(含答案解析)
- 2024年学校总务主任述职报告德能勤绩廉
- 2025年烧烤店创业计划书
- 人教版七年级下册生物期中考试试卷及答案
- 光伏强条执行计划
- 《立体裁剪电子教案》课件
评论
0/150
提交评论