实验报告_13结构体
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
课程高级程序设计姓名陈雅清学号 105012009104 班级双师一班专业数学与应用数学评分
题
目
实验13 结构体与共用体日期6月9日
实验步骤
定义一个球员结构体,struct player_list. 球员结构体由姓名和地址组成,其中姓名由名和姓氏组成。
现要求在主函数中输入多个姓名和地址信息,并存储在球员结构体数组中,同时编写一子函数供主函数调用,该子函数能依据球员名字中的姓(last_name)来输出对应的姓名和地址信息,该函数的原型可以为
void search(struct player_list[ ],int n, char *last_name)。
测试数据:
Name Adress
Kobe Bryant Los Angeles USA
Paul Pierce Boston USA
Kevin Garnet Boston USA
LeBron James Cleveland USA
Shanon Bryant Houston USA
当从终端输入”Bryant”,则程序输出
Name Adress
Kobe Bryant Los Angeles USA
Shnon Bryant Houston USA
当输入 James时,则程序输出
Name Adress
LeBron James Cleveland USA
当输入 Jodan 时,则程序输出
No satisfied records!
程序如下:
#include<stdio.h>
#include<string.h>
struct player_list
{
char first_name[20];
char last_name[20];
char adress[30];
};
void search(struct player_list players[],int n,char *name) {
printf(" Name Adress\n");
for(int i=0;i<n;i++)
{
if(strcmp(name,players[i].last_name)==0)
printf("%s %s %20s\n",
players[i].first_name,players[i].last_name,
players[i].adress);
}
}
void main()
{
void search(struct player_list players[],int n,
char *name);
int n,i,j;
char last_name[20];
char *name=last_name;
struct player_list players[50];
printf("请输入运动员数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("first_name & last_name:\n");
scanf("%s %s",&players[i].first_name,
&players[i].last_name);
printf("adress:\n");
scanf("%s %s",&players[i].adress);
}
while(1>0)
{
printf("是否继续查找信息?(Y--1/N--0):");
scanf("%d",&j);
if(j==1)
{
printf("请输入last_name:");
scanf("%s",last_name);
search(players,n,name);
}
else break;
}
}
运行结果:
问题及解决方案Questions & solutions:
1、此题主要是运用了结构体来解决问题以此函数void
search(struct player_list players[],int n,char *name)
为原型;
2、然后在主函数中调用此函数来进行输入和输出数据以及对
last_name的筛选,并将信息输出;
3、但是我在编程过程中遇到了输出时却不能如数输出如:
就是输出问题这部分有点问题;
4、要是这个地址的输出还是跟name的输出一样的话有点麻烦,
还要将地址分割成好几段一一输出,所以开始我用了嵌套进行编译;
5、但是我不知道是不是有结构体嵌套这种形式,在struct
player_list多嵌套进去了一个struct player-list adress 对地址在分割,但是不能达到效果,而且增加了编译的难度;
6、所以我就只能将这个直接输出了,要不就是将地址如:
Los Angeles USA要连着才能完全输出、头晕了,所以进不想再纠结了。
这个到后来才发现在输入的时候是有分隔的但是在输出是由于scanf的这种形式只能对应输出首地址。