《算法笔记》codeup_100000572_E

解答:

#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,要是能看到测试数据就好了。

发布了36 篇原创文章 · 获赞 3 · 访问量 1240

猜你喜欢

转载自blog.csdn.net/Zen_Ivan/article/details/105346737
今日推荐