https://acmicpc.net/problem/1546
#include <stdio.h>
int main(void) {
int subjects = 0;
int scores[1000];
int max = -1;
int i = 0;
double new_scores[1000];
double average = 0.0;
scanf("%d", &subjects);
for (i = 0; i < subjects; i++) {
scanf("%d", &scores[i]);
if (scores[i] > max) max = scores[i];
}
for (i = 0; i < subjects; i++) {
new_scores[i] = (double)scores[i] / max * 100.0;
average += new_scores[i];
}
average /= (double)subjects;
printf("%f", average);
return 0;
}
이 문제는 과목 수와 각 과목의 점수를 입력받고, 과목 중 최고 점수를 M이라고 두고 모든 점수를 점수 * M / 100으로 연산하고 그 점수로 평균을 구하는 문제이다.
subjects라는 변수를 만들어 과목 수를 입력받고, 입력받은 과목 수에 기반하여 scores에 점수를 입력받는다. 그리고 최고 점수를 구하기 위해 max 변수를 -1로 초기화하고, 점수를 입력 받을 때마다 max보다 입력받은 점수가 더 크면 max를 입력받은 점수로 바꾸어 최고점수를 구한다. 입력이 끝나면 점수 하나하나에 연산을 적용하여 new_scores라는 배열에 저장함과 동시에 평균값을 구하기 위해 average에 모든 새로운 점수를 더하고, 연산이 끝나면 average값을 과목 수로 나누어 평균값을 구하고 출력한다.