Recent Posts
Recent Comments
라떼는말이야
[C 기초] 학점 계산 프로그램 본문
반응형
www.notion.so/1-6ea63a079d3f49d9ac34fd3c77d12b5b
✔︎ 문제 1. 학점을 계산해보자!
1. 미션 제목 학점을 계산해보자!
www.notion.so
1. 미션 제목 학점을 계산해보자!
2. 지시문
- 학생의 점수로 학점을 구하는 프로그램을 작성하시오.
- 키보드에서 입력받은 성적 (0 ~ 100 점) 의 유효성을 체크
- 학점은 배열을 이용하여 초기화 (아래 “학점 테이블” 참조)
- 학점은 “학점” 과 같이 계산하는데, 반드시 “학점 테이블”을 사용하여 계산하고 학점도 “학점 테이블”의 내용을 출력
- 성적을 입력하여 계속 학점을 구하며 특별한 문자인 “-1” 을 입력하면 프로그램을 종료
Table 1 - 학점
Table 2 - 학점 테이블
유효성 체크: 0 <= 성적 <= 100
- “120” 입력 -> 성적을 올바르게 입력하세요! (0 ~ 100)
Figure 1 출력 결과
3. 핵심 개념#배열 #표준입력 #표준출력 #분기문 #반복문 #break #무한반복문
4. 부가 설명- 표준입출력:
- https://www.tutorialspoint.com/cprogramming/c_input_output.htm
- break: https://www.tutorialspoint.com/cprogramming/c_break_statement.htm
나의 풀이
#include<stdio.h>
#include<string.h>
#include<stdlib.h> // 동적메모리할당(malloc)을 위한 라이브러리
const int NUMBER_OF_GRADES = 9;
const char* GRADES[NUMBER_OF_GRADES] = {"A+", "A", "B+", "B", "C+", "C", "D+", "D", "F"};
const int SCORES[NUMBER_OF_GRADES] = {95, 90, 85, 80, 75, 70, 65, 60, 0};
void showTable(void);
char* getGrade(int score);
int main(void) {
// 초기 안내 문구 출력
printf("*** 학점 프로그램 ***\n");
printf("종료를 원하면 \"-1\" 를 입력\n\n");
// 학점 테이블 출력
showTable();
int score = 0;
while (1) {
printf("성적을 입력하세요 (0 ~ 100) : ");
scanf("%d", &score);
// 입력 된 점수가 -1 이면 프로그램 종료
if(score == -1) {
printf("학점 프로그램을 종료합니다.\n");
return 0;
}
// 입력 된 점수가 0 ~ 100 사이에 없으면 경고 후 다시 입력 받음
if(score > 100 || score < 0) {
//printf("** %d 성적을 올바를게 입력하세요. 범위는 0 ~ 100 입니다.\n", score);
printf("\"%d\"입력 -> 성적을 올바르게 입력하세요! (0 ~ 100)\n\n", score);
continue;
}
// 점수가 정상적으로 입력되었다면 학점 출력
char* grade = getGrade(score);
printf(">> 학점은 %s 입니다.\n\n", grade);
}
}
void showTable(void) {
printf("[학점 테이블]\n");
printf("┌───────────────────────────────────────────────────────────────────────────────┐\n");
printf("│점수\t");
for(int i = 0 ; i < NUMBER_OF_GRADES; i++) {
printf("│%d\t", SCORES[i]);
}
printf("│\n├───────────────────────────────────────────────────────────────────────────────┤\n");
printf("│학점\t");
for(int i = 0 ; i < NUMBER_OF_GRADES; i++) {
printf("│%s\t", GRADES[i]);
}
printf("│\n");
printf("└───────────────────────────────────────────────────────────────────────────────┘\n\n");
}
char* getGrade(int score) {
char* grade="";
for(int i = 0 ; i < NUMBER_OF_GRADES; i++) {
if(score >= SCORES[i]) {
grade = malloc(sizeof(char)*strlen(GRADES[i]));
strcpy(grade, GRADES[i]);
break;
}
}
return grade;
}
구현한 기능
- 학점 테이블을 출력하는 함수를 따로 작성해 재사용 가능하도록 설계
- 테이블 형태로 출력하여 가독성이 좋게 함
- 계속하여 성적 조회 가능
- 성적에 -1 입력 시 프로그램 종료
- 성적을 잘못 입력한 경우 입력된 값을 표시하고 사용자에게 알림
출력 결과
반응형
'알고리즘 > CS50' 카테고리의 다른 글
[C] 숫자 애너그램 찾기 (다양한 정렬 알고리즘) (0) | 2021.03.08 |
---|---|
[C] 버블 정렬 (0) | 2021.03.07 |
[C] Queue 만들기 쉬운 버전 (0) | 2021.03.06 |
[C] 누락된 숫자 찾아내기 (0) | 2021.03.05 |
[C 기초] 채점 프로그램 만들기 (0) | 2021.03.03 |
[C 기초] 오늘의 메뉴 출력 (0) | 2021.03.02 |
[C 기초] 원금과 이자의 합계 출력하는 함수 (0) | 2021.03.01 |
[C 기초] 재고 관리 프로그램 (0) | 2021.02.28 |
Comments