定义一个二维数组储存5位学生4科考试成绩,计算并输出每位同学的平均成绩和平均成绩最高的学生姓名和成绩

2025-03-01 01:36:22
推荐回答(4个)
回答1:

程序如下:

#include

#include

struct student

{

   char name[20];

   float score[4];

   float average;

}grade[5];

void main()

{

 //输入5位同学的姓名和4门功课的成绩

 int i=0,j=0;

 float  num=0.0;

    float high;

 char studentname[20];

 for(i=0;i<5;i++)

 {

  printf("输入第%d位同学的姓名和四门功课的成绩\n",i+1);

   //输入姓名

  printf("姓名:");

  scanf("%s",grade[i].name); 

  getchar();//接收回车字符或者空格

       //输入4门功课的成绩

       for(j=0;j<4;j++) 

    {

     printf("第%d门功课的成绩:",j+1);

     scanf("%f",&grade[i].score[j]);

     getchar();

    }

 }

 //计算每个同学的平均成绩

 for(i=0;i<5;i++)//5个人

 {

  num=0;//计算每个同学的平均成绩后,num重新初始化为0,再来计算其他同学的成绩

  for(j=0;j<4;j++)//4门功课

   //求总分

   num+=grade[i].score[j];

        //计算平均成绩

  grade[i].average=num/4;

 }

    //求平均成绩最好的同学的信息

 high=grade[0].average;

 for(i=1;i<5;i++)

  if(grade[i].average>high)

  {

   high=grade[i].average;

   strcpy(studentname,grade[i].name);

  }

  //输出每位同学的平均成绩信息

  printf("\n");

  printf("每位同学的姓名和平均成绩如下:\n");

  for(i=0;i<5;i++)

  {

   printf("姓名:%s,平均成绩:%f\n",grade[i].name,grade[i].average);

  }

  //输出最好的成绩

  printf("\n");

  printf("平均成绩最好的同学姓名:%s,平均成绩:%f\n",studentname,high);

  getchar();//待输入回车后退出

}

运行情况如下:

回答2:

string[5][]={(学生1,4成绩),(学生2,4成绩)};
之后要用 itoa对成绩进行处理就行了

回答3:

#include
#define N 5
struct student
{
char name[20];
float socre[4];
}stu[N];
void main()
{
float i=0,j,max=0,num=0,flag=0;
for(;i<5;i++)
{
printf("请输入第%d个同学的姓名:",i+1);
fflush(stdin);
gets(stu[i].name);
printf("输入第%d个学生的四科成绩:",+i+1);
for(j=0;j<4;j++)
scanf("%f",&stu[i].socre[j]);
}

for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
num += stu[i].socre[j];
}
printf("%s同学的平均成绩是%f:",stu[i].name,num/4);

if(num/4 > max)
flag = i;
}

printf("平均分最高的是:%s\n",stu[flag].name);
printf("四科成绩分别是:");
for(i=0;i<4;i++)
printf("%.2f\t",stu[flag].socre[i]);
printf("\n");
}

我这编译器可能出了一点问题,但大体的思路应该是这样的,嗯,有时间的话,你自己调试一下吧

回答4:

#include
main()
{
float sum[10],ave[10],a[10][5] ;
int i,j;
for(i=0;i<10;i++)
for(j=0;j<5;j++)
scanf("%f",&a[i][j]);

for(i=0;i<10;i++)
{ sum[i]=0;
for(j=0;j<5;j++)
sum[i]=sum[i]+a[i][j];
ave[i]=sum[i]/5;
}
for(i=0;i<10;i++)
printf("%f %f\n",sum[i],ave[i]);
}