柠檬Ccc 发表于 2021-12-24 13:49:16

结构体

【问题描述】编写一个输入函数,输入若干个学生的个人信息(包括学号、姓名、三门课的成绩);一个统计函数,统计每个学生的平均分并输出结果(包括学号、姓名和平均分);一个统计函数,统计每门课程的平均分,并输出统计结果,在主函数中调用输入函数输入信息,再分别调用统计每个学生平均分和每门课程平均分的函数。
【输入形式】第一行输入学生数n,后面依次输入每个学生的信息,每个学生一行
【输出形式】每位学生的平均分(每位学生一行)和每门课程(每门课程一行)平均分,保留两位小数, 数据之间以空格分开。
【样例输入】
2
101李明 67 86 91
102张丽 77 81 79
【样例输出】
101 李明 81.33
102 张丽 79.00
72.00 83.50 85.00

傻眼貓咪 发表于 2021-12-24 14:24:25

#include <stdio.h>

typedef struct{
    float a, b, c;
}results;

typedef struct{
    int id;
    char name;
    results res;
}students;

void input(students arr[], int n){
    for(int i = 0; i < n; i++){
      scanf("%d%s%f%f%f", &arr.id, arr.name, &arr.res.a, &arr.res.b, &arr.res.c);
    }
}

void output(students arr[], int n){
    float a, b, c = a = b = 0;
    for(int i = 0; i < n; i++){
      a += arr.res.a;
      b += arr.res.b;
      c += arr.res.c;
      printf("%d %s %.2f\n", arr.id, arr.name, (arr.res.a + arr.res.b + arr.res.c) / 3);
    }
    printf("%.2f %.2f %.2f", a/n, b/n, c/n);
}

int main()
{
    int n;
    scanf("%d", &n);
    students arr;
    input(arr, n);
    output(arr, n);
    return 0;
}
页: [1]
查看完整版本: 结构体