처음 시작하는 블로그.
블로그 첫 글은 2학기 실기수행평가 1~8번 중 1번 문제.
1. 학생들의 점수를 입력받고, 점수대별로 해당 학생수만큼 '*'가 표시되는 프로그램을 작성하시오.
조건 1. 음수값이 입력되면 입력을 종료한다. 조건 2. 점수는 0~100 사이의 값들만 들어온다고 가정한다. |
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int n=0, max=0, min=100;
int score[5] = { 0 };
char m[][10] = { "90점 이상", "80점 대", "70점 대", "60점 대", "60점 미만" };
printf("점수 입력 : ");
while(1){
scanf("%d", &n);
if (n < 0) { break; }
switch (n / 10) {
case 10: case 9: score[0]++; break;
case 8: score[1]++; break;
case 7: score[2]++; break;
case 6: score[3]++; break;
default: score[4]++; break;
}
if (n > max) { max = n; }
if (n < min) { min = n; }
}
for (int i = 0; i < sizeof(score) / sizeof(int); i++) {
printf("%s : ", m[i]);
for (int j = 0; j < score[i]; j++) {
printf("*");
}
printf("\n");
}
printf("최고점수 : %d\n", max);
printf("최저점수 : %d\n", min);
}//58 74 85 95 81 89 91 60 55 69 -10
1) 헤더 작성(매크로 정의&include)
#define _CRT_SECURE_NO_WARNINGS //매크로 정의(scanf 사용)
#include <stdio.h> //전처리기(출력함수 사용)
- #define _CRT_SECURE_NO_WARNINGS
scnaf를 사용하였는데 이 매크로 정의를 하지 않으면 이러한 에러가 나타난다.
error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
- #include <stdio.h>
include는 '포함하다'라는 의미로 '전처리기'라고 한다. 이 전처리기를 사용하여 <stdio.h>라는 헤더파일을 불러와 이 소스파일에 포함하겠다라는 뜻이다.
<stdio.h>는 헤더파일로 이 헤더파일 안에는 파일입출력/콘솔화면 입출력/파일구조체/문자입출력 등 다양한 입력 및 출력에 관련된 기능들이 들어있다.
이걸로 인해 우리가 사용하는 printf() 등의 출력함수를 사용할 수 있다.
2) 변수 선언
main함수 작성 후
int n=0, max=0, min=100; //n 입력받은 점수를 저장할 변수
//max, min 최고, 최저점수를 저장할 변수
int score[5]={ 0 }; //점수대별 학생수를 셀 배열변수
char m[][10] = { "90점 이상", "80점 대", "70점 대", "60점 대", "60점 미만" };//출력을 위하여 변수로 지정
3) 입력 및 계산
printf("점수 입력 : "); //출력
출력을 위해 printf() 작성 후
while(1){ //사용자가 원하는 만큼 점수를 입력받기 위해 반복
scanf("%d", &n); //변수 n에 점수 입력
if (n < 0) { break; } //만약 n이 0보다 작으면 break;
switch (n / 10) { //n을 입력받고 n을 10으로 나눈 수가
case 10: case 9: score[0]++; break; //10 또는 9이면 score[0]을 1 증가 //90점 이상
case 8: score[1]++; break; //8이면 score[0]을 1 증가 //80점 대
case 7: score[2]++; break; //7이면 score[0]을 1 증가 //70점 대
case 6: score[3]++; break; //6이면 score[0]을 1 증가 //60점 대
default: score[4]++; break; //그 이외의 수이면 score[0]을 1 증가 //60점 미만
}
if (n > max) { max = n; }; //만약 n이 max보다 크면 max에 n 대입
if (n < min) { min = n; } //만약 n이 min보다 작으면 min에 n 대입
}
4) 출력
for (int i = 0; i < sizeof(score) / sizeof(int); i++) { //sizeof(score) : int형 4bytes * score 배열의 방 개수 5
//크기 20 // 20 / 4 == 5 //5번 반복
printf("%s : ", m[i]); //문자로 지정해둔 배열함수를 통해 점수대 출력
for (int j = 0; j < score[i]; j++) { //score[i] : 점수대별 학생수만큼 반복
printf("*"); //학생수만큼 '*' 출력
}
printf("\n"); //줄바꿈
}
printf("최고점수 : %d\n", max); //최고점수 출력
printf("최저점수 : %d\n", min); //최저점수 출력
이걸로 수행평가 1번 문제 끝~
'C언어' 카테고리의 다른 글
C언어_문자열 입력받아 거꾸로 출력 #수행4 (0) | 2020.04.14 |
---|---|
C언어_2진수 10진수 변환 #수행3 (0) | 2019.02.27 |
C언어_화폐단위별 화폐의 개수 #수행2 (0) | 2019.02.13 |
댓글