C语言结构体和共用体实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1实验九参考程序实验9-1/*****************************************************************实验9.1**(1)为某商店的商品设计合适的结构体(PRODUCT)。每一种商品包含编号(number)、*名称(name)、价格(price)、折扣(discount)4项信息,根据表9-1,为这些信息选择合适的数据类型。*(2)建立2个函数,以实现对商品的操作。input函数实现商品的输入;*display函数显示商品信息。要求这2个函数都以商品的结构体(PRODUCT)指针为参数。*(3)在主函数中为商品键盘定义一个结构体变量(keyboard),利用input函数实现键盘信息的输入;*定义一个结构体数组(elec_device[3]),利用input函数实现冰箱、空调、电视信息的输入;*最后利用display函数显示4种商品的信息。**表9-1**编号名称价格折扣*1010键盘89.500.85*1021冰箱1024.000.95*1022空调2058.500.90*1023电视3001.880.95*****************************************************************/#includestdio.htypedefstruct_PRODUCT2{intiNumber;charstrName[32];floatfPrice;floatfDiscount;}PRODUCT,*PPRODUCT;voidinput(PRODUCT*pProduct);voiddisplay(PPRODUCTpProduct);voidmain(){inti;PRODUCTkyeboard;PRODUCTelec_device[3];input(&kyeboard);for(i=0;i3;i++){input(&elec_device[i]);}display(&kyeboard);for(i=0;i3;i++){display(&elec_device[i]);}}/******************************************************************函数名称:input()**参数:PRODUCT*pProduct-PRODUCT结构体指针,用来存放输入数据***返回值:无**说明:*该函数用来完成PRODUCT结构体数据的输入。3*****************************************************************/voidinput(PRODUCT*pProduct){printf(\n请输入商品的编号:\n);scanf(%d,&pProduct-iNumber);printf(请输入商品的名称:\n);scanf(%s,pProduct-strName);printf(请输入商品的价格:\n);scanf(%f,&pProduct-fPrice);printf(请输入商品的折扣:\n);scanf(%f,&pProduct-fDiscount);}/****************************************************************函数名称:display()**参数:PRODUCTpProduct-PRODUCT结构体数据***返回值:无**说明:*该函数用来完成PRODUCT结构体数据的显示。*****************************************************************/voiddisplay(PPRODUCTpProduct){printf(\n商品的编号:%d\n,pProduct-iNumber);printf(商品的名称:%s\n,pProduct-strName);4printf(商品的价格:%.2f\n,pProduct-fPrice);printf(商品的折扣:%.2f\n,pProduct-fDiscount);}实验9-2/*****************************************************************实验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,intiItemNumber);*显示整个播放列表中的所有信息voiddisplayIList(PLAY_LIST*pPlayList);*(3)在主函数中定义一个链表playList。*A)利用函数createList创建播放列表playList,并在其节点上依次存储编号为1100、1102、1103的3首歌曲,*并调用displayList函数显示此时整个播放列表中的所有信息。*B)调用insertItem函数将编号为1101的歌曲添加到playList中,并显示整个播放列表中的所有信息。*C)调用deleteItem函数将编号为1102的歌曲从playList中删除,并显示整个播放列表中的所有信息。*5**表9-2**歌曲编号歌曲名称歌手姓名歌曲长度*1100落叶归根王力宏05:16*1101风吹麦浪李健04:07*1102往事随风齐秦04:38*1103天空王菲03:42*****************************************************************/#includestdio.htypedefstruct_PLAY_LIST{intiNumber;charstrName[64];charstrArtist[32];struct_TIME{intiMinutes;intiSeconds;}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,intiItemNumber);voiddisplayList(PLAY_LIST*pPlayList);intinputItem(PLAY_LIST*pPlayList);voidmain(){PLAY_LIST*pPlayList=NULL;PLAY_LIST*pNewPlayList=NULL;6pPlayList=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*-返回创建好的播放列表链表**说明:*该函数用来创建播放列表链表。******************************************************************/7PLAY_LIST*createList(){intiResult=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;}}returnpListHead;}/*****************************************************************函数名称:insertItem()*8*参数: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)returnpPlayList;if(pNewPlayList)returnpNewPlayList;returnNULL;}pTemp=pPlayList;if(pTemp-iNumberpNewPlayList-iNumber){pNewPlayList-pNext=pTemp;returnpNewPlayList;}while(1){if(pTemp-pNext==NULL){pTemp-pNext=pNewPlayList;9break;}if(pTemp-pNext-iNumberpNewPlayList-iNumber){pNewPlayList-pNext=pTemp-pNext;pTemp-pNext=pNewPlayList;break;}pTemp=pTemp-pNext;}returnpPlayList;}/******************************************************************函数名称:deleteItem()**参数:PLAY_LIST*pPlayList-操作的播放列表链表*intiItemNumber-删除项目的编号****返回值:PLAY_LIST*-返回操作后的播放列表链表**说明:*该函数用来完成播放列表链表的项目删除

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功