C·C++

[C언어] 2차원 배열을 사용한 성적 입출력 프로그램 2

삶과계란사이 2021. 2. 15. 15:09

[C언어] 2차원 배열을 사용한 성적 입출력 프로그램 2

 

1. 프로그램 설명

학생의 학번, 과목별 점수를 입력받아 각각의 2차원 배열에 저장한 후 출력하는 프로그램이다.

 

2. 소스코드

// 2차원 배열을 사용한 성적 입출력 프로그램 2

#include <stdio.h>   

int main(void)
{
	char id[100][10];   //학번
	int sub[100][3];   //과목(HTML,C 언어,총점)
	double avg[100];   //평균
	int count = 0;   //입력된 학생 수
	char key;

	for (int i = 0;; i++)   //무한반복
	{
		printf("%d번째 학생 학번: ", i + 1);
		scanf_s("%s", id[i], 9);   //학번 입력(입력 가능한 문자 수: 9)

		while (getchar() != '\n');   //버퍼 비우기

		printf("%d번째 학생 HTML 점수: ", i + 1);
		scanf_s("%d", &sub[i][0]);   //HTML 점수 입력

		printf("%d번째 학생 C 언어 점수: ", i + 1);
		scanf_s("%d", &sub[i][1]);   //C 언어 점수 입력

		sub[i][2] = sub[i][0] + sub[i][1];   //총점 저장
		avg[i] = (sub[i][0] + sub[i][1]) / 2;   //평균 저장

		count++;   //입력이 끝날 때마다 count 수 증가

		while (getchar() != '\n');   //버퍼 비우기

		printf("입력을 중지하려면 'Q'를 입력: ");
		scanf_s("%c", &key, sizeof(char));   //아무 키나 입력

		while (getchar() != '\n');   //버퍼 비우기

		if (key == 'Q')
			break;   //Q가 입력되면 for문 탈출
	}
	
	printf("\n입력 정보 출력\n");
	printf("==============================================================\n");
	printf("순번  학번        HTML        C언어        총점        평균\n");
	printf("--------------------------------------------------------------\n");

	for (int i = 0; i < count; i++)   //입력한 학생 수 만큼 출력
		printf("%d     %s          %d          %d          %d          %.1f\n", i + 1, id[i], sub[i][0], sub[i][1], sub[i][2], avg[i]);

	return 0;
}

 

3. 실행결과