티스토리 뷰
신체 발육 검사 프로그램을 만듭니다.
24개월까지 아이의 키를 단계별로 입력하여 표준키와 비교한 후 단계별 키의 차이와 차이의 평균을 출력합니다.
표준키는 다음 기준을 사용하고 전처리 단계에서 매크로명의 정의에 따라 선택되도록 조건부 컴파일로 작성합니다.
- 남자 아이 3단계 발육 표준 키 : 49.4 74.8 85.0
- 남자 아이 5단계 발육 표준 키 : 49.4 66.3 74.8 79.9 85.0
- 여자 아이 3단계 발육 표준 키 : 50.1 76.0 86.2
- 여자 아이 5단계 발육 표준 키 : 50.1 67.6 76.0 81.2 86.2
실행 결과는 다음과 같습니다.
//남자 아이 3단계 - 매크로명 MALE이 정의되고 매크로명 LEVEL이 3일 때
단계별 키 입력(3단계) : 50 70 92
단계별 표준키와 차이 : 0.6 -4.8 7.0
차이 평균 : 0.9
//여자 아이 5단계 - 매크로명 FEMALE이 정의되고 매크로명 LEVEL이 5일 때
단계별 키 입력(5단계) : 50 65 70 85 92
단계별 표준키와 차이 : -0.1 -2.6 -6.0 3.8 5.8
차이 평균 : 0.2
다음은 제가 작성한 코드입니다.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define FEMALE 1
#define LEVEL 5
#ifdef MALE
#if LEVEL == 3
double standardHeight[3] = {49.4, 74.8, 85.0};
double height[3];
#elif LEVEL == 5;
double standardHeight[5] = {49.4, 66.3, 74.8, 79.9, 85.0};
double height[5];
#endif
#elif defined FEMALE
#if LEVEL == 3
double standardHeight[3] = {50.1, 76.0, 86.2};
double height[3];
#elif LEVEL == 5
double standardHeight[5] = {50.1, 67.6, 76.0, 81.2, 86.2};
double height[5];
#endif
#endif
int main(void)
{
printf("단계별 키 입력(%d단계) : ", LEVEL);
for (int i = 0; i < LEVEL; i++)
{
scanf("%lf", height + i);
}
printf("단계별 표준키와 차이 : ");
double sum = 0.0;
for (int i = 0; i < LEVEL; i++)
{
height[i] -= standardHeight[i];
printf("%7.1lf", height[i]);
sum += height[i];
}
printf("\n차이 평균 : ");
printf("%.1lf\n", sum / LEVEL);
return 0;
}
실행결과는 문제의 것과 같습니다.
#define FEMALE 1
#define LEVEL 5
이 부분의 FEMALE과 LEVEL의 치환값을 직접 바꿔주면서 프로그램을 실행했습니다.
#ifdef MALE
#if LEVEL == 3
double standardHeight[3] = {49.4, 74.8, 85.0};
double height[3];
#elif LEVEL == 5;
double standardHeight[5] = {49.4, 66.3, 74.8, 79.9, 85.0};
double height[5];
#endif
#elif defined FEMALE
#if LEVEL == 3
double standardHeight[3] = {50.1, 76.0, 86.2};
double height[3];
#elif LEVEL == 5
double standardHeight[5] = {50.1, 67.6, 76.0, 81.2, 86.2};
double height[5];
#endif
#endif
조건부 전처리 지시자 안에 이중으로 조건부 전처리 지시자를 사용했습니다.
코드를 해석하기는 다소 난해합니다.
조건부 전처리 지시자가 과연 if 조건문처럼 이중 조건문으로도 활용할 수 있을까 궁금해서 한 번 해봤습니다.
'공부 일지 > C언어 공부 일지' 카테고리의 다른 글
전처리와 분할 컴파일 실전문제3 (0) | 2021.02.06 |
---|---|
전처리와 분할 컴파일 실전문제1 (0) | 2021.02.05 |
분할 컴파일 (0) | 2021.02.05 |
전처리와 분할 컴파일 (0) | 2021.02.04 |
파일 입출력 실전문제3 (0) | 2021.02.04 |