C语言结构体和共用体实验报告Word格式文档下载.docx
- 文档编号:18278502
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:21
- 大小:18.94KB
C语言结构体和共用体实验报告Word格式文档下载.docx
《C语言结构体和共用体实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言结构体和共用体实验报告Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
voidinput(PRODUCT*pProduct);
voiddisplay(PPRODUCTpProduct);
voidmain()
inti;
PRODUCTkyeboard;
PRODUCTelec_device[3];
input(&
kyeboard);
for(i=0;
i<
3;
i++)
{
input(&
elec_device[i]);
}
display(&
display(&
}
*函数名称:
input()
*参数:
PRODUCT*pProduct-PRODUCT结构体指针,用来存放输入数据
*返回值:
无
*说明:
*该函数用来完成PRODUCT结构体数据的输入。
**************************************************************/
voidinput(PRODUCT*pProduct)
printf("
\n请输入商品的编号:
\n"
);
scanf("
%d"
&
pProduct->
iNumber);
请输入商品的名称:
%s"
pProduct->
strName);
请输入商品的价格:
%f"
fPrice);
请输入商品的折扣:
fDiscount);
/**************************************************************
display()
PRODUCTpProduct-PRODUCT结构体数据
*该函数用来完成PRODUCT结构体数据的显示。
voiddisplay(PPRODUCTpProduct)
\n商品的编号:
%d\n"
商品的名称:
%s\n"
商品的价格:
%.2f\n"
商品的折扣:
实验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中删除,并显示整个播放列表中的所有信息。
*表9-2
*歌曲编号歌曲名称歌手姓名歌曲长度
*1100落叶归根王力宏05:
16
*1101风吹麦浪李健04:
07
*1102往事随风齐秦04:
38
*1103天空王菲03:
42
typedefstruct_PLAY_LIST
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);
PLAY_LIST*pPlayList=NULL;
PLAY_LIST*pNewPlayList=NULL;
pPlayList=createList();
播放列表:
displayList(pPlayList);
\n播放列表插入曲目:
pNewPlayList=createList();
pPlayList=insertItem(pPlayList,pNewPlayList);
插入新的曲目之后的播放列表:
\n播放列表删除曲目:
pPlayList=deleteItem(pPlayList,1102);
删除编号为1102的曲目之后的播放列表:
createList()
PLAY_LIST*-返回创建好的播放列表链表
*该函数用来创建播放列表链表。
***************************************************************/
PLAY_LIST*createList()
intiResult=0;
PLAY_LIST*pListHead,*pTemp,*pNewList;
pTemp=pNewList=(PLAY_LIST*)malloc(sizeof(PLAY_LIST));
pNewList->
pNext=NULL;
pListHead=NULL;
创建新播放列表\n"
iResult=inputItem(pNewList);
if(iResult)
pListHead=pNewList;
while(iResult)
pNewList=(PLAY_LIST*)malloc(sizeof(PLAY_LIST));
pNewList->
iResult=inputItem(pNewList);
if(iResult)
{
pTemp->
pNext=pNewList;
pTemp=pNewList;
}
returnpListHead;
/***************************************************************
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)
returnpPlayList;
if(pNewPlayList)
returnpNewPlayList;
returnNULL;
pTemp=pPlayList;
if(pTemp->
iNumber>
pNewPlayList->
iNumber)
pNewPlayList->
pNext=pTemp;
returnpNewPlayList;
while
(1)
if(pTemp->
pNext==NULL)
pNext=pNewPlayList;
break;
pNext->
iNumber)
pNewPlayList->
pNext=pTemp->
pNext;
pTemp=pTemp->
returnpPlayList;
deleteItem()
*intiItemNumber-删除项目的编号
*该函数用来完成播放列表链表的项目删除。
PLAY_LIST*deleteItem(PLAY_LIST*pPlayList,intiItemNumber)
if(NULL==pPlayList)
iNumber==iItemNumber)
returnpTemp->
}
displayList()
PLAY_LIST*pPlayList-显示的播放列表链表
*该函数用来完成播放列表链表的内容显示。
voiddisplayList(PLAY_LIST*pPlayList)
PLAY_LIST*pTemp;
\n歌曲编号\t歌曲名称\t歌手姓名\t歌曲时间长度(mm:
ss)\n"
return;
while(pTemp)
printf("
%-8d\t%-8s\t%-8s\t%02d:
%02d\n"
iNumber,
strName,
strArtist,
sTime.iMinutes,
sTime.iSeconds);
inputItem()
int-正常返回1,不正常返回0
*该函数用来完成播放列表链表的内容输入。
intinputItem(PLAY_LIST*pPlayList)
请输入歌曲编号,编号小于0结束输入:
pPlayList->
if(pPlayList->
iNumber<
0)
return0;
请输入歌曲名称:
pPlayList->
请输入歌手姓名:
strArtist);
请输入歌曲时间长度(mm:
ss):
%d:
sTime.iMinutes,&
return1;
实验9-3
uniondata
intiData[2];
floatfData;
charstrData[4];
unsignedintuData;
}myUnion;
intiTemp;
charstrTemp;
floatfTemp;
unsignedintuTemp;
/*第一部分*/
第一部分\n"
myUnion.iData[0]=-1;
myUnion.iData[1]=1;
iTemp=myUnion.iData[0];
iTemp=%d\n"
iTemp);
/*iTemp的值是多少*/
uTemp=myUnion.uData;
uTemp=%u\n"
uTemp);
/*uTemp的值是多少*/
strTemp=myUnion.strData[0];
strTemp=%d(ASCII:
%C)\n"
strTemp,strTemp);
/*strTemp的值是多少*/
fTemp=myUnion.fData;
fTemp=%f\n\n"
fTemp);
/*fTemp的值是多少*/
/*第二部分*/
第二部分\n"
myUnion.strData[0]='
A'
;
myUnion.strData[1]='
B'
/*第三部分*/
第三部分\n"
myUnion.fData=0.1f;
实验9-4
*实验9.4
*
(1)在一个显示系统中,需要在任意位置显示一个中文或者英文字符,为此请根据表9-4设计一种数据结构。
*其中当label=0时,content的16位数据中低8位为英文字符,高8位的数据丢弃。
*当label=1时,content的16位数据为中文数据。
*
(2)建立2个函数,函数的原型如下:
*封装数据,即将中英文字符按照表9-4方式存储
*PACK_DATApackData(unsigneduRow,unsigneduCol,unsigneduLabel,char*pContent);
*将封装的数据提取出来,并安装要求显示在屏幕上
*voidunpackData(PACK_DATAdata);
*(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
/*声明结构体并定义结构体类型*/
typedefstruct_PACK_DATA
unsigneduRow:
unsigneduCol:
unsigneduLabel:
2;
unsi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 结构 共用 实验 报告