解答:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
using namespace std;
struct student {
int id;
char name[10];
int score1;
int score2;
int score3;
double average_score;
};
int get_max(double* a, int count) {
int max = 0;
for(int i=0; i<=count; i++) {
if(a[i] > a[max]){
max = i;
}
}
return max;
}
void input(student* student_array) {
for(int i=0; i<=9; i++) {
scanf("%d %s %d %d %d", &(*(student_array+i)).id, (*(student_array+i)).name, &(*(student_array+i)).score1, &(*(student_array+i)).score2, &(*(student_array+i)).score3);
(*(student_array+i)).average_score = ((*(student_array+i)).score1 + (*(student_array+i)).score2 + (*(student_array+i)).score3) / 3;
}
}
void output(student* student_array) {
double score1_average;
double score2_average;
double score3_average;
double average[10];
for(int i=0; i<=9; i++) {
score1_average += (*(student_array+i)).score1;
score2_average += (*(student_array+i)).score2;
score3_average += (*(student_array+i)).score3;
average[i] = (*(student_array+i)).average_score;
}
score1_average /= 10;
score2_average /= 10;
score3_average /= 10;
printf("%.2f %.2f %.2f\n", score1_average, score2_average, score3_average);
int max = get_max(average, 10);
printf("%d %s %d %d %d\n", (*(student_array+max)).id, (*(student_array+max)).name, (*(student_array+max)).score1, (*(student_array+max)).score2, (*(student_array+max)).score3);
}
int main() {
student* student_array = (student*)malloc(sizeof(student)*10);
input(student_array);
output(student_array);
return 0;
}
不知道为什么有时候能过,有时候又错误50,要是能看到测试数据就好了。