实验九参考程序实验 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#include <stdio .h> typedef struct _PRODUCTint iNumber;char strName[32];float fPrice;float fDiscount; * 编号 名称价格 折扣 *1010键盘 89.50 0.85 *1021冰箱 1024.00 0.95 *1022 空调 2058.500.90 *1023 电视 3001.88 0.95*************************************************************** */}PRODUCT,*PPRODUCT;void input(PRODUCT *pProduct);void display(PPRODUCT pProduct);void main(){int i ;PRODUCT kyeboard;PRODUCT elec_device[3];input(&kyeboard);for ( i =0; i <3; i ++){ input(&elec_device[ i ]);}display(&kyeboard);for ( i =0; i <3; i ++){ display(&elec_device[ i ]);}}I****************************************************************函数名称:input()参数:PRODUCT *pProduct -PRODUCT 结构体指针,用来存放输入数据* 返回值:无** 说明:*该函数用来完成PRODUCT吉构体数据的输入**************************************************************/void input(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);}I**************************************************************函数名称:display()参数:PRODUCT pProduct -PRODUCT 结构体数据printf ( " 商品的价格:%.2f\n" ,pProduct->fPrice);printf ( " 商品的折扣:%.2f\n" ,pProduct->fDiscount);}实验9-/***************************************************************** 实验9.2†返回值:无** 说明:*该函数用来完成PRODUCT吉构体数据的显示。
*****************************************************************/void display(PPRODUCT pProduct){printf ( "\n 商品的编号:%d\n" ,pProduct->iNumber);printf ( " 商品的名称:%s\n" ,pProduct->strName);* (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);* 显示整个播放列表中的所有信息voiddisplayIList(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:161101 风吹麦浪李健04:071102 往事随风齐秦04:381103 天空王菲03:42***************************************************************#include <stdio .h>typedef struct _PLAY_LIST{int iNumber;char strName[64];char strArtist[32];struct _TIME{int 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 voidiItemNumber);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* 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()I***************************************************************参数:PLAY_LIST* pPlayList - PLAY_LIST* pNewPlayList - 操作的播放列表链表插入的新项目* 返回值:PLAY_LIST* - 返回操作后的播放列表链表** 说明:* 该函数用来完成播放列表链表的新项目插入。