按要求定义结构体数据类型,包括num(学号),name(姓名),score5,aver(5门课平均成绩),和sum(5门课总成绩),要求将下面功能都编写成独立的函数。
定义结构体数据类型
typedef struct student{
int num;
char name[10];
int score[5];
int sum;
float avg;
} stu;
你题目的解答代码如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct student{
int num;
char name[10];
int score[5];
int sum;
float avg;
} stu;
void input(stu a[],int n)
{
int i,t;
for(i=0;i<n;i++)
{
t = scanf("%d%s%d%d%d%d%d",&a[i].num,a[i].name,&a[i].score[0],&a[i].score[1],&a[i].score[2],&a[i].score[3],&a[i].score[4]);
if (t!=7)
{
printf("输入错误,重新输入:\n");
i--;
setbuf(stdin, NULL);
}
}
}
void calc(stu a[],int n)
{
int i,j;
for(i=0;i<n;i++)
{
int sum = 0;
for (j=0; j<5; ++j)
{
sum += a[i].score[j];
}
a[i].avg = sum/5.0;
a[i].sum = sum;
}
printf(" 学号 姓名 成绩1 成绩2 成绩3 成绩4 成绩5 总成绩 平均成绩\n") ;
for(i=0;i<n;i++)
{
printf("%5d %10s %5d %5d %5d %5d %5d %6d %8.2f\n",a[i].num,a[i].name,a[i].score[0],a[i].score[1],a[i].score[2],a[i].score[3],a[i].score[4],a[i].sum,a[i].avg);
}
}
void maxscore(stu a[],int n)
{
int i,max=0;
for(i=0;i<n;i++)
{
if (a[max].sum<a[i].sum)
max = i;
}
printf("最高总分:%d 最高平均分:%.2f\n",a[max].sum,a[max].avg);
}
void sou(stu a[],int n)
{
int i,j=0,num;
printf("请输入学号:");
scanf("%d", &num);
for(i=0;i<n;i++)
{
if (num==a[i].num)
{
printf("学号:%d 姓名:%s 总分:%d\n",a[i].num,a[i].name,a[i].sum);
return;
}
}
printf("没有找到\n");
}
void main()
{
int i,j,k,n;
scanf("%d", &n);
stu a[n], buf;
input(a,n);
calc(a,n);
maxscore(a,n);
sou(a,n);
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!