结构体实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 定义一个结构体,如下:
struct Student
{
int num;
char name[20];
int score[3];
}; 结构体中个元素分别为学号,姓名和一个记录三门课程成绩的数组。
1)在主函数中初始化一个结构体变量,然后输出该结构体变量各元素的值。
2)定义两个函数Input()和Output(),分别完成为结构体变量初始化和输出结构体变量的值的功能,其中初始化要求从键盘终端输入数据。
答案1
#include
struct Student
{
int num;
char name[20];
int score[3];
};
void main()
{
struct Student s;
scanf("%s",);
scanf("%d",&(s.num));
for(i=0;i<3;i++)
{
scanf("%d",&(s.score[i]));
}
printf("%s\n",);
printf("%d\n",s.num);
for(i=0;i<3;i++)
{
printf("\n%d ",s.score[i]);
}
}
#include
struct Student
{
int num;
char name[20];
int score[3];
};
void main()
{
void Output(struct Student* stu);
void Input(struct Student* stu);
struct Student *p,s;
p=&s;
Input(p);
Output(p);
}
void Input( struct Student* stu)
{
int i;
printf("学号:");
scanf("%d",&(stu->num));
printf("\n姓名:");
scanf("%s",stu->name);
printf("\n三门课程成绩:");
for(i=0;i<3;i++)
{
scanf("%d",&(stu->score[i]));
}
}
void Output(struct Student* stu)
{
int i;
printf("学号:");
printf("%d",stu->num);
printf("\n姓名:");
printf("%s",stu->name);
printf("\n三门课程成绩:");
for(i=0;i<3;i++)
{
printf("%d ",stu->score[i]);
}
}
2. 基于上面结构体类型,
struct Student
{
int num;
char name[20];
int score[3];
float avg;
};定义一个结构体数组,struct Student s_info[3],用来管理三个学生的信息,初始化该数组后,做如下计算:
1)计算出每个学生三门课程的总的平均成绩。
2)找出总分最高的学生,并输出学生的学号、姓名、3门课程的成绩和平均成绩。
答案:
#include
struct Student
{
int num;
char name[20];
int score[3];
float avg;
};
void main()
{
void average_best(struct Student stu[],int n);
struct Student s[3]={{511,"令狐冲",95,86,74},{512,"黄蓉",100,87,93},{515,"小龙女",88,83,65}};
average_best(s,3);
}
void average_best(struct Student stu[],int n)
{
int i,j,sum=0,avg,max=0,tag;
for(i=0;i { sum=0; for(j=0;j<3;j++) sum+=stu[i].score[j]; stu[i].avg=sum/3.0; if(max { max=sum; tag=i; } } printf("总分最高的学生的信息为\n学号:%d\n姓名:%s\n三门课程成绩:%d %d %d\n 平均成绩:%5.2f\n",stu[tag].num,stu[tag].name,stu[tag].score[0],stu[tag].score[1],stu[tag].score[2],stu[ tag].avg); }