要求(1)每个学生的平均分。
(2)每门课程的平均分。
(3)找出最高分数所对应的学生
要求(1)每个学生的平均分。
(2)每门课程的平均分。
(3)找出最高分数所对应的学生
#include <stdio.h>
struct students
{
char name[15];
float English;
float Math;
float dili;
float shengwu;
float yuwen;
}Member[10];
void averagescore(float score[])
{
for(int i=0;i<10;i++)
printf("第%d个学生的平均分是:%.2f\n",i+1,score[i]);
}
void Max(float score[])
{
float Max1=0;
int M;
for(int i=0;i<10;i++)
if(score[i]>Max1)
{
Max1=score[i];
M=i;
}
printf("最高分的学生姓名是:%s\n",Member[M].name);
}
int main()
{
float average[10],English=0,Math=0,shengwu=0,dili=0,yuwen=0;
for(int i=0;i<10;i++)
{
printf("第%d个学生的姓名:",i+1);
scanf("%s",Member[i].name);
printf("English:");
scanf("%f",&Member[i].English);
English+=Member[i].English;
printf("Math:");
scanf("%f",&Member[i].Math);
Math+=Member[i].Math;
printf("dili:");
scanf("%f",&Member[i].dili);
dili+=Member[i].dili;
printf("Shengwu:");
scanf("%f",&Member[i].shengwu);
shengwu+=Member[i].shengwu;
printf("Yuwen:");
scanf("%f",&Member[i].yuwen);
yuwen+=Member[i].yuwen;
average[i]=(Member[i].English+Member[i].Math+Member[i].dili+Member[i].shengwu+Member[i].yuwen)/3;
}
start:int shuzi=0;
printf(" =---------------------功能选项---------------------=\n");
printf(" 1.每个学生的平均分\n");
printf(" 2.每门课程的平均分\n");
printf(" 3.分数最高的学生:\n");
printf("请输入选项:");
scanf("%d",&shuzi);
switch(shuzi)
{
case 1:
averagescore(average);
break;
case 2:
printf("英语平均分是:%f\n数学评分是:%f\n地理平均分是:%f\n生物平均分:%f\n语文平均分是:%f\n",English/10,Math/10,dili/10,shengwu/10,yuwen/10);
break;
case 3:
Max(average);
break;
default:
printf("输入错误!请重新输入:\n");
}
goto start;
}
有什么不合适的地方追问,我加入个输入成绩的过程!然后以下就是那三项功能!
用结构体实现一个学生的信息,包括姓名和五门课的成绩,然后就实现两个函数 一个找最大值 一个求平均值的函数。
这是我以前写给别人的。
你可以借鉴一下,这是5个学生3门课程的情况,
你可以稍作修改。功能是全的:c语言
代码:
#include<stdio.h>
#include <stdlib.h>
struct student { char name[20]; int kor; int eng; int mat; int tol; double ave; };
void main() { student stu[5]={ {"lisa",80,90,100,0,0.0}, {"chuck",95,70,75,0,0.0}, {"Jim",75,70,95,0,0.0}, {"joe",65,85,55,0,0.0}, {"david",80,75,95,0,0.0} };
int i; //求每个人总分和平均分 for(i=0;i<5;i++) { stu[i].tol=stu[i].kor+stu[i].eng+stu[i].mat; stu[i].ave=(double)stu[i].tol/3; } //结果输出 printf("Result Output:\n"); printf("name\tkor\teng\tmat\ttol\tave\n"); for(i=0;i<5;i++) { printf("%s\t%d\t%d\t%d\t%d\t%f\n",stu[i].name,stu[i].kor,stu[i].eng,stu[i].mat,stu[i].tol,stu[i].ave);} //求这些人中平均分最高和最低的 double X=stu[0].ave,Y=stu[0].ave; int max=0,min=0;//记录First和last的学生序号 for(i=1;i<5;i++) { if(X<=stu[i].ave){X=stu[i].ave; max=i;} if(Y>=stu[i].ave){Y=stu[i].ave; min=i;} } //结果输出 printf("first:%s\n",stu[max].name); printf("last:%s\n",stu[min].name);
}
执行结果: