用C语言编写程序,完成以下功能: (1) 有5个学生,每个学生的数据包括学号、姓名、3门课的成绩
用C语言编写程序,完成以下功能:(1)有5个学生,每个学生的数据包括学号、姓名、3门课的成绩(2)用一个函数input从键盘输入5个学生的数据(3)用一个函数averag...
用C语言编写程序,完成以下功能:
(1) 有5个学生,每个学生的数据包括学号、姓名、3门课的成绩
(2) 用一个函数input从键盘输入5个学生的数据
(3) 用一个函数average求总平均分
(4) 用一个函数max找出总分最高学生的数据
(5) 输出3门课总平均成绩,以及最高分学生的数据
用结构体回答。
就是输出3门课总平均成绩,然后还要输出最高分学生的数据(学号、姓名、3门课的成绩) 展开
(1) 有5个学生,每个学生的数据包括学号、姓名、3门课的成绩
(2) 用一个函数input从键盘输入5个学生的数据
(3) 用一个函数average求总平均分
(4) 用一个函数max找出总分最高学生的数据
(5) 输出3门课总平均成绩,以及最高分学生的数据
用结构体回答。
就是输出3门课总平均成绩,然后还要输出最高分学生的数据(学号、姓名、3门课的成绩) 展开
3个回答
展开全部
#include <stdio.h>
#define STUDENT 2
typedef struct tagSTU
{
char name[11] ;
char stunum[11] ;
float score1,score2,score3 ;
float total,aver ;
} STU;
void input(STU *stu, int num) //stu为学生数组的首地址,num为数组长度
{
int i ;
printf("请输入%d个学生的基本情况: \n",num) ;
printf("姓名 学号 成绩一 成绩二 成绩三\n") ;
for(i=0; i<num; i++)
{
scanf("%s%s%f%f%f",&stu[i].name,&stu[i].stunum,&stu[i].score1,
&stu[i].score2,&stu[i].score3) ;
}
}
float average(STU *stu, int num) //stu为学生数组的首地址,num为数组长度,返回总平均成绩
{
int i ;
float avertotal = 0 ;
for(i=0; i<num; i++)
{
stu[i].total = 0 ;
stu[i].total = stu[i].score1+stu[i].score2+stu[i].score3 ;
stu[i].aver = stu[i].total/3 ;
avertotal += stu[i].aver ;
}
return avertotal/num ;
}
void max(STU *stu, int num, STU *stuRev, int *stuRevNum) //stu为学生数组的首地址,num为数组长度
//stuRev表示要接收的数组,stuRevNum表示最终接收的个数,即最高成绩同学的个数(有可能不止一个同学)
{
STU temp[5] ;
float maxtotal = 0 ;
int i ,temp_index=0 ;
for(i=0; i<num; i++)
{
if(stu[i].total>maxtotal)
{
maxtotal = stu[i].total ;
temp[0] = stu[i] ;
temp_index = 0 ;
}
else if(stu[i].total==maxtotal)
{
temp[++temp_index] = stu[i] ;
}
}
for(i=0;i<=temp_index;i++)
{
stuRev[i] = temp[i] ;
}
*stuRevNum = temp_index+1 ;
}
void main()
{
STU stu[STUDENT] ;
STU stumax[STUDENT] ;
int stumax_num, i ;
float avertotal ;
input(stu,STUDENT) ;
avertotal = average(stu,STUDENT) ;
max(stu,STUDENT,stumax,&stumax_num) ;
//输出结果
printf("3门课总平均成绩: %4.2f\n",avertotal) ;
printf("最高分同学有%d个: \n",stumax_num) ;
printf("姓名 学号 成绩一 成绩二 成绩三 \n") ;
for(i=0; i<stumax_num; i++)
{
printf("%4s %4s %-4.2f %-4.2f %-4.2f\n",stumax[i].name,stumax[i].stunum,
stumax[i].score1,stumax[i].score2,stumax[i].score3) ;
}
}
#define STUDENT 2
typedef struct tagSTU
{
char name[11] ;
char stunum[11] ;
float score1,score2,score3 ;
float total,aver ;
} STU;
void input(STU *stu, int num) //stu为学生数组的首地址,num为数组长度
{
int i ;
printf("请输入%d个学生的基本情况: \n",num) ;
printf("姓名 学号 成绩一 成绩二 成绩三\n") ;
for(i=0; i<num; i++)
{
scanf("%s%s%f%f%f",&stu[i].name,&stu[i].stunum,&stu[i].score1,
&stu[i].score2,&stu[i].score3) ;
}
}
float average(STU *stu, int num) //stu为学生数组的首地址,num为数组长度,返回总平均成绩
{
int i ;
float avertotal = 0 ;
for(i=0; i<num; i++)
{
stu[i].total = 0 ;
stu[i].total = stu[i].score1+stu[i].score2+stu[i].score3 ;
stu[i].aver = stu[i].total/3 ;
avertotal += stu[i].aver ;
}
return avertotal/num ;
}
void max(STU *stu, int num, STU *stuRev, int *stuRevNum) //stu为学生数组的首地址,num为数组长度
//stuRev表示要接收的数组,stuRevNum表示最终接收的个数,即最高成绩同学的个数(有可能不止一个同学)
{
STU temp[5] ;
float maxtotal = 0 ;
int i ,temp_index=0 ;
for(i=0; i<num; i++)
{
if(stu[i].total>maxtotal)
{
maxtotal = stu[i].total ;
temp[0] = stu[i] ;
temp_index = 0 ;
}
else if(stu[i].total==maxtotal)
{
temp[++temp_index] = stu[i] ;
}
}
for(i=0;i<=temp_index;i++)
{
stuRev[i] = temp[i] ;
}
*stuRevNum = temp_index+1 ;
}
void main()
{
STU stu[STUDENT] ;
STU stumax[STUDENT] ;
int stumax_num, i ;
float avertotal ;
input(stu,STUDENT) ;
avertotal = average(stu,STUDENT) ;
max(stu,STUDENT,stumax,&stumax_num) ;
//输出结果
printf("3门课总平均成绩: %4.2f\n",avertotal) ;
printf("最高分同学有%d个: \n",stumax_num) ;
printf("姓名 学号 成绩一 成绩二 成绩三 \n") ;
for(i=0; i<stumax_num; i++)
{
printf("%4s %4s %-4.2f %-4.2f %-4.2f\n",stumax[i].name,stumax[i].stunum,
stumax[i].score1,stumax[i].score2,stumax[i].score3) ;
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询