结构体和共用体 参考答案
- 格式:doc
- 大小:33.00 KB
- 文档页数:8
-
. z. 实验八构造体及其应用
班级:**:**: 成绩:
一. 实验目的
1、掌握构造体数据类型的定义和使用。
2、掌握构造体数组的定义和使用。
3、掌握链表的根本概念,熟练掌握单链表的创立、插入、删除和遍历操作。
二. 使用的设备和仪器:
计算机+Windows *P +Visual C++6.0
三. 实验内容及要求
1、定义一个描述时间的构造体类型Time〔包括时、分、秒〕,然后定义一个该构造体类型的变量,按24小时制输入时间信息,然后按12小时制输出〔区分AM和PM〕。
例如,输入的时间是22:10:30;输出:PM 10:10:30。
2、定义描述学生信息〔**、**、成绩〕的构造体数组。
1〕定义输入学生信息的函数Input;
2〕定义输出学生信息的函数Output;
3〕定义按**进展查找的函数Search,假设找到,则输出该学生的信息;如果没找到,则输出"该学生不存在〞。
3、建立一个由3个学生〔包括**、**、成绩〕组成的静态链表,然后,输出该链表中各结点的数据。
4、动态建立一个学生信息〔包括**、**、成绩〕的链表,**输入-1时表示完毕,然后输出该链表中各结点的数据。
选作题:
5、在第2题的根底上修改函数Search,假设找到,则返回该学生的信息;否则,返回
一个内容为空的构造变量。
6、有N个候选人,每个选民只能投一票,要求编写一个模拟10个选民进展投票的程
序,先后输入被选人的名字,最后按照选票由高到低输出投票结果。
7、在第3题的根底上,定义一个链表查找函数,对所输入的**进展查找,如果找到,则输出该学生的信息;如果没找到,则输出"该学生不存在〞。
四. 实验步骤
1、 程序代码:
*include
struct Time -
. z. {
int h,m,s;
};
void Input(Time *pt);
void Output12(Time t);
void main()
{
Time t;
Input(&t);
Output12(t);
}
void Input(Time *pt)
{
printf("Input hour:minute:second:");
scanf("%d:%d:%d",&pt->h,&pt->m,&pt->s);
}
void Output12(Time t)
{
printf("The Time is:");
if(t.h<12)
printf("AM %d:%d:%d\n",t.h,t.m,t.s);
else
printf("PM %d:%d:%d\n",t.h-12,t.m,t.s);
}
运行结果:
2、 程序代码:
*include
*include
*define N 3
struct Student
{
char num[10];
char name[10];
double score;
};
void Input(Student *p)
{
int i;
for(i=0;i
scanf("%s%s%lf",(p+i)->num,(p+i)->name,&(p+i)->score );
}
void Output(Student *p)
{
int i; -
. z. for(i=0;i
printf("num=%s name=%s score=%lf\n",(p+i)->num,(p+i)->name,(p+i)->score );
}
void Search(Student *p,char *nm)
{
for(int i=0;i
{
if(strcmp((p+i)->num,nm)==0)
{
printf("num=%s name=%s
score=%lf\n",(p+i)->num,(p+i)->name,(p+i)->score );
break;
}
}
if(i==N)
printf("该学生不存在!\n");
}
void main()
{
Student stu[N];
printf("请输入%d个学生的信息〔**、**、成绩〕:\n",N);
Input(stu);
printf("学生的信息为:\n");
Output(stu);
char nm[10];
printf("请输入要查找的学生的**:");
scanf("%s",nm);
printf("查找结果:\n");
Search(stu,nm);
}
运行结果:
3、 程序代码:
*include
*define N 3
struct student
{
char num[10];
char name[10];
double score;
student *ne*t;
};
void main()
{
student stu1={"001","zhangsan",89},stu2={"002","lisi",99},stu3={"004","wangwu",70}; -
. z. student *head,*p;
head=&stu1;
stu1.ne*t=&stu2;
stu2.ne*t=&stu3;
stu3.ne*t=NULL;
p=head;
while(p!=NULL)
{
printf("num:%s,name:%s,socre:%.2lf\n",p->num,p->name,p->score);
p=p->ne*t;
}
}
运行结果:
4、程序代码:
*include
*include
*include
*define N 3
struct student
{
char num[10];
char name[10];
double score;
student *ne*t;
};
void main()
{
student *head,*p,*s;
head=NULL;
printf("请输入学生信息,包括**和**〔**输入-1,表示完毕〕:\n");
s=(student*)malloc(sizeof(student));
scanf("%s%s%d",s->num,s->name,&s->score);
s->ne*t=NULL;
while(strcmp(s->num,"-1")!=0)
{
if(head==NULL)
head=s;
else
p->ne*t=s;
p=s;
s=(student*)malloc(sizeof(student));
scanf("%s%s%d",s->num,s->name,&s->score);
s->ne*t=NULL;
} -
. z. p=head;
while(p!=NULL)
{
printf("%s,%s,%d\n",p->num,p->name,p->score);
p=p->ne*t;
}
free(s);
}
运行结果:
选做题:
5、 程序代码:
*include
*include
*define N 3
struct Student
{
char num[10];
char name[10];
double score;
};
void Input(Student *p)
{
int i;
for(i=0;i
scanf("%s%s%lf",(p+i)->num,(p+i)->name,&(p+i)->score );
}
void Output(Student *p)
{
int i;
for(i=0;i
printf("num=%s name=%s score=%lf\n",(p+i)->num,(p+i)->name,(p+i)->score );
}
Student Search(Student *p,char *nm)
{
Student ept_stu={",",0};
for(int i=0;i
{
if(strcmp((p+i)->num,nm)==0)
return *(p+i);
}
return ept_stu;
}
void main()
{