编写程序有5个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输输入5名学生数据,要求输出3门课程总平均成绩,以及最高分的学生数据(包括学号、姓名、3门课程平均成绩、平均分数)

1A1009080
2B908570
3C6679

95

4D807599
5E976071

 

#include<stdio.h>
struct student{
  int id;
  char name[10];
  float score[3];
}stu[5];
int main()
{
  float sum[5]={0};
  float avg[5];
  float max;
  float sum1=0;
  int i,j,a,size,n,m;
  for(i=0;i<5;i++){
    scanf("%d%s",&stu[i].id,&stu[i].name);
    for(j=0;j<3;j++){
      scanf("%f",&stu[i].score[j]);
    }
  }
  for(i=0;i<5;i++){
    for(j=0;j<3;j++){
      sum[i]+=stu[i].score[j];
    }
    avg[i]=sum[i]/3;
  }
  for(i=0;i<5;i++){
    sum1+=sum[i];
  }
  max=sum[0];
  for(n=0;n<5;n++){
    if(max<sum[n]){
      max=sum[n];
    }
  }
 for(m=0;m<5;m++){
  if(max==sum[m]){
   break;
  }
 }
  printf("NO. name score1 score2 score3 average\n");
  for(i=0;i<5;i++){
    printf("%d %s %0.2f %0.2f %0.2f %0.2f\n",stu[i].id,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],avg[i]);
  }
  printf("average=%0.2f\n",sum1/15);
  printf("The highest score is : student %d,%s\n",stu[m].id,stu[m].name);
  printf("his scores are:%6.2f,%6.2f,%6.2f,average:%0.2f.",stu[m].score[0],stu[m].score[1],stu[m].score[2],avg[m]);
  return 0;
}

 

 

  • 10
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是使用 C 语言编写的解决方案: ```c #include <stdio.h> #include <string.h> #define NUM_STUDENTS 10 #define NUM_SUBJECTS 3 struct student { int id; char name[20]; float grades[NUM_SUBJECTS]; float avg_grade; }; int main() { struct student students[NUM_STUDENTS]; float subject_totals[NUM_SUBJECTS] = {0}; float highest_grade = 0; int highest_grade_index = 0; // 获取学生数据 for (int i = 0; i < NUM_STUDENTS; i++) { printf("请输入第 %d 个学生学号姓名成绩:\n", i+1); scanf("%d %s %f %f %f", &students[i].id, students[i].name, &students[i].grades[0], &students[i].grades[1], &students[i].grades[2]); // 计算学生平均成绩 students[i].avg_grade = (students[i].grades[0] + students[i].grades[1] + students[i].grades[2]) / NUM_SUBJECTS; // 更新每课程成绩 for (int j = 0; j < NUM_SUBJECTS; j++) { subject_totals[j] += students[i].grades[j]; } // 查找最高分学生 if (students[i].avg_grade > highest_grade) { highest_grade = students[i].avg_grade; highest_grade_index = i; } } // 计算课程平均成绩 float subject_averages[NUM_SUBJECTS]; for (int i = 0; i < NUM_SUBJECTS; i++) { subject_averages[i] = subject_totals[i] / NUM_STUDENTS; } // 输出课程平均成绩 printf("三门课程平均成绩分别为:%.2f %.2f %.2f\n", subject_averages[0], subject_averages[1], subject_averages[2]); // 输出最高分学生信息 printf("最高分学生信息为:\n"); printf("学号:%d\n", students[highest_grade_index].id); printf("姓名:%s\n", students[highest_grade_index].name); printf("成绩:%.2f %.2f %.2f\n", students[highest_grade_index].grades[0], students[highest_grade_index].grades[1], students[highest_grade_index].grades[2]); printf("平均分:%.2f\n", students[highest_grade_index].avg_grade); return 0; } ``` 这个程序定义了一个 `student` 结构体,用于存储每个学生学号姓名成绩。程序首先从键盘读入每个学生数据,然后计算每个学生平均成绩和每课程成绩。接着,程序计算课程平均成绩,并输出。最后,程序查找最高分学生,并输出学生的信息。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值