C语言结构体和共用体实验报告Word文档格式.docx
- 文档编号:17578696
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:23
- 大小:22.08KB
C语言结构体和共用体实验报告Word文档格式.docx
《C语言结构体和共用体实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言结构体和共用体实验报告Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
PRODUCTkyeboard;
PRODUCTelec_device[3];
input(&kyeboard);
for(i=0;
i〈3;
i++)
{
input(&
elec_device[i]);
}
display(&kyeboard);
display(&elec_device[i]);
}
}
/****************************************************************
*
*函数名称:
input()
*参数:
PRODUCT*pProduct-PRODUCT结构体指针,用来存放输入数据
*返回值:
无
*说明:
*该函数用来完成PRODUCT结构体数据的输入.
**************************************************************/
voidinput(PRODUCT*pProduct)
{
printf(”\n请输入商品的编号:
\n”);
scanf(”%d”,&
pProduct->
iNumber);
printf("
请输入商品的名称:
\n"
);
scanf("
%s”,pProduct->
strName);
printf(”请输入商品的价格:
scanf(”%f"
&pProduct-〉fPrice);
printf(”请输入商品的折扣:
scanf(”%f”,&
pProduct—〉fDiscount);
/**************************************************************
*函数名称:
display()
*参数:
PRODUCTpProduct-PRODUCT结构体数据
*返回值:
*说明:
*该函数用来完成PRODUCT结构体数据的显示。
****************************************************************/
voiddisplay(PPRODUCTpProduct)
printf(”\n商品的编号:
%d\n"
pProduct-〉iNumber);
printf(”商品的名称:
%s\n”,pProduct-〉strName);
printf(”商品的价格:
%。
2f\n”,pProduct-〉fPrice);
商品的折扣:
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中删除,并显示整个播放列表中的所有信息。
*表9—2
*歌曲编号歌曲名称歌手姓名歌曲长度
*1100落叶归根王力宏05:
16
*1101风吹麦浪李健04:
07
*1102往事随风齐秦04:
38
*1103天空王菲03:
42
****************************************************************/
#include〈stdio.h>
typedefstruct_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);
PLAY_LIST*pPlayList=NULL;
PLAY_LIST*pNewPlayList=NULL;
pPlayList=createList();
printf(”播放列表:
);
displayList(pPlayList);
\n播放列表插入曲目:
pNewPlayList=createList();
pPlayList=insertItem(pPlayList,pNewPlayList);
printf(”插入新的曲目之后的播放列表:
displayList(pPlayList);
\n播放列表删除曲目:
pPlayList=deleteItem(pPlayList,1102);
printf(”删除编号为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—〉pNext=NULL;
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)
{
pTemp->
pNext=pNewPlayList;
break;
}
if(pTemp-〉pNext->
iNumber>
pNewPlayList—>
iNumber)
pNewPlayList->
pNext=pTemp—>
pNext;
pTemp—〉pNext=pNewPlayList;
break;
pTemp=pTemp->
pNext;
returnpPlayList;
/****************************************************************
deleteItem()
PLAY_LIST*pPlayList-操作的播放列表链表
*intiItemNumber-删除项目的编号
PLAY_LIST*-返回操作后的播放列表链表
*该函数用来完成播放列表链表的项目删除.
****************************************************************/
PLAY_LIST*deleteItem(PLAY_LIST*pPlayList,intiItemNumber)
PLAY_LIST*pTemp;
if(NULL==pPlayList)
returnNULL;
pTemp=pPlayList;
if(pTemp—〉iNumber==iItemNumber)
returnpTemp—>
if(pTemp—>
pNext==NULL)
if(pTemp-〉pNext-〉iNumber==iItemNumber)
pTemp-〉pNext=pTemp->
pNext—〉pNext;
}
pTemp=pTemp-〉pNext;
/****************************************************************
*函数名称:
displayList()
PLAY_LIST*pPlayList-显示的播放列表链表
*该函数用来完成播放列表链表的内容显示.
****************************************************************/
voiddisplayList(PLAY_LIST*pPlayList)
PLAY_LIST*pTemp;
printf(”\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()
PLAY_LIST*pPlayList—操作的播放列表链表
int-正常返回1,不正常返回0
*该函数用来完成播放列表链表的内容输入。
****************************************************************/
intinputItem(PLAY_LIST*pPlayList)
printf(”请输入歌曲编号,编号小于0结束输入:
\n”);
%d”,&pPlayList—>
iNumber);
if(pPlayList—>
iNumber〈0)
return0;
请输入歌曲名称:
scanf(”%s"
,pPlayList-〉strName);
printf(”请输入歌手姓名:
%s"
,pPlayList—>
strArtist);
请输入歌曲时间长度(mm:
ss):
scanf(”%d:
%d”,&
pPlayList-〉sTime。
iMinutes,&
pPlayList—〉sTime。
return1;
实验9-3
stdio.h>
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'
;
strData[1]='
B’;
iTemp=myUnion。
iData[0];
printf(”iTemp=%d\n”,iTemp);
uTemp=myUnion.uData;
printf(”uTemp=%u\n"
,uTemp);
/*uTemp的值是多少*/
strTemp=myUnion。
strData[0];
printf(”strTemp=%d(ASCII:
%C)\n”,strTemp,strTemp);
/*strTemp的值是多少*/
fTemp=myUnion。
fData;
printf(”fTemp=%f\n\n"
,fTemp);
/*fTemp的值是多少*/
/*第三部分*/
printf(”第三部分\n”);
myUnion.fData=0.1f;
iTemp=%d\n"
iTemp);
/*iTemp的值是多少*/
uData;
uTemp);
strTemp=%d(ASCII:
strTemp,strTemp);
fTemp=myUnion.fData;
fTemp=%f\n\n”,fTemp);
/*fTemp的值是多少*/
实验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
****************************************************************/
#include〈stdio.h〉
/*声明结构体并定义结构体类型*/
typedefstruct_PACK_DATA
unsigneduRow:
3;
unsigneduCol:
unsigneduLabel:
2;
unsi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 结构 共用 实验 报告