C·C++
[C언어] 2차원 배열을 사용한 성적 입출력 프로그램 1
삶과계란사이
2021. 2. 15. 14:57
[C언어] 2차원 배열을 사용한 성적 입출력 프로그램 1
1. 프로그램 설명
학생의 학번, 이름, 과목별 점수를 입력받아 각각의 2차원 배열에 저장한 후 최고점자, 최하점자와 함께 출력하는 프로그램이다.
2. 소스코드
// 2차원 배열을 사용한 성적 입출력 프로그램
#include <stdio.h>
int main(void)
{
char id[100][10], name[100][10], key; //학번,이름,key
int sub[100][4], max = 0, min = 300; //과목(HTML,C 언어,Java,총점),최고점,최하점
double aver[100]; //평균
int maxIndex = 0, minIndex = 0; //최고점,최하점을 저장한 배열의 인덱스
int count = 0; // 입력한 학생 수
for (int i = 0;; i++) //무한반복
{
printf("학번을 입력하세요.: ");
scanf_s("%s", id[i], 9); //학번 입력 (9 의미: 저장 가능한 문자수)
while (getchar() != '\n'); //버퍼 비우기
printf("이름을 입력하세요.: ");
scanf_s("%s", name[i], 9); //이름 입력
while (getchar() != '\n'); //버퍼 비우기
printf("HTML 점수를 입력하세요.: ");
scanf_s("%d", &sub[i][0]); //HTML 점수 입력
printf("C 언어 점수를 입력하세요.: ");
scanf_s("%d", &sub[i][1]); //C 언어 점수 입력
printf("Java 점수를 입력하세요.: ");
scanf_s("%d", &sub[i][2]); //Java 점수 입력
sub[i][3] = sub[i][0] + sub[i][1] + sub[i][2]; //총점 저장
aver[i] = (sub[i][0] + sub[i][1] + sub[i][2]) / 3; //평균 저장
if (sub[i][3] > max) {
max = sub[i][3]; //최고점 저장
maxIndex = i; //최고점이 저장된 i값을 maxIndex에 저장
}
if (sub[i][3] < min) {
min = sub[i][3]; //최하점 저장
minIndex = i; //최하점이 저장된 i값을 minIndex에 저장
}
count++; // 입력이 끝날 때마다 count값 증가
printf("계속하려면 아무 키나 입력하세요.: ");
scanf_s(" %c", &key); //아무 키나 입력
printf("---------------------------------------\n");
while (getchar() != '\n'); //버퍼 비우기
if (key == 'F' || key == 'f')
break; //key에 F나 f를 입력 받으면 for문 탈출
}
printf("\n==================================================================\n");
printf("학번 이름 HTML C언어 Java 총점 평균\n");
printf("------------------------------------------------------------------\n");
for (int i = 0; i < count; i++) //입력된 성적을 입력된 학생 수만큼 출력
printf("%s %s %d %d %d %d %.1f\n", id[i], name[i], sub[i][0], sub[i][1], sub[i][2], sub[i][3], aver[i]);
printf("==================================================================\n");
printf("<최고점자> 학번 이름 HTML C언어 Java 총점 평균\n");
printf("------------------------------------------------------------------\n");
printf(" %s %s %d %d %d %d %.1f\n", id[maxIndex], name[maxIndex], sub[maxIndex][0], sub[maxIndex][1], sub[maxIndex][2], sub[maxIndex][3], aver[maxIndex]); //최고점자의 정보가 들어있는 인덱스 출력
printf("==================================================================\n");
printf("<최하점자> 학번 이름 HTML C언어 Java 총점 평균\n");
printf("------------------------------------------------------------------\n");
printf(" %s %s %d %d %d %d %.1f\n", id[minIndex], name[minIndex], sub[minIndex][0], sub[minIndex][1], sub[minIndex][2], sub[minIndex][3], aver[minIndex]); //최하점자의 정보가 들어있는 인덱스 출력
return 0;
}
3. 실행결과