TIL 18|成績処理プログラム

14343 ワード

💻 成績処理例

//성적처리 프로그램
# define _CRT_SECURE_NO_WARNINGS
# define NUM 30
#include <stdio.h>

double findAvg(int sdata[][2], int n);
int findMax(int sdata[][2], int n);
int findRank(int sdata[][2], int n, int sid);

int main(void)
{
	int n, sid;
	int scores[NUM][2];

	// 전체 학생 수 n 
	printf("전체 학생 수 입력 : ");
	scanf_s("%d", &n);

	// 학생들이 학번과 성적을 이차원배열에 입력, 
	printf("학번과 성적을 입력하세요 : ");
	for (int i = 0; i < n; i++) {
		scanf_s("%d %d", &scores[i][0], &scores[i][1]);
	}
	// 성적의 평균, 최고점을 출력
	printf("성적의 평균 : %.2f\n", findAvg(scores, n));
	printf("정적의 최고점 : %d\n", findMax(scores, n));

	// 학번을 입력받고 등수를 출력 
	printf("학번(sid)를 입력하세요 : ");
	scanf_s("%d", &sid);
	printf("%d번의 등수 : %d\n",sid, findRank(scores, n, sid));

	return 0;
}

double findAvg(int sdata [][2], int n)
{
	double Avg = 0;
	for (int i = 0; i < n; i++) {
		Avg += sdata[i][1];
	}
	Avg = Avg / n;
	return Avg;
}

int findMax(int sdata[][2], int n)
{
	int max;
	max = sdata[0][1];
	for (int i = 0; i < n; i++) {
		if (sdata[i][1] > max)
			max = sdata[i][1];
	}
	return max;
}

int findRank(int sdata[][2], int n, int sid)
{
	int jumsu, rank;
	for (int i = 0; i < n; i++) {
		if (sid == sdata[i][0]) {
			jumsu = sdata[i][1];
			break;
		}
	}

	rank = 0;
	for (int i = 0; i < n; i++) {
		if (sdata[i][1] > jumsu)
			rank += 1;
	}

	return rank + 1;
}