[카테고리:] <span>C언어 소스</span>

질문

개요
10명의 학생정보(이름, 키, 몸무게)
신체질량지수와 비만정도를 판단

세부 요구 사항
학생 정보는 구조체로 정의
신체질량지수(BMI) (BMI = 체중kg / 키m^2)
신체질량지수(BMI)는 소수 첫째자리에서 반올림
비만 정도 판별
비만(High) : BMI > 30
과체중(Over) : 25 ≦ BMI ≦ 30
정상(Normal) : 19 ≦ BMI ≦ 24
저체중(Low) : BMI < 19
학생 정보 입력 예
01 홍길동 120.8 30.9
⋮ ⋮ ⋮ ⋮ ⋮ ⋮

학생 정보 출력

******************************************************************
번호 이름 키(cm) 체중(kg) BMI 비만정도
******************************************************************
01 홍길동 120.8 30.9 21 정상
⋮ ⋮ ⋮ ⋮ ⋮ ⋮
******************************************************************
비만 : 3 과체중 : 2 정상 : 3 저체중 : 2

답변

//개요
  //10명의 학생정보(이름, 키, 몸무게)
  //신체질량지수와 비만정도를 판단

//세부 요구 사항
  //학생 정보는 구조체로 정의
  //신체질량지수(BMI) (BMI = 체중kg / 키m^2)
  //신체질량지수(BMI)는 소수 첫째자리에서 반올림
  //비만 정도 판별
    //비만(High) : BMI > 30
    //과체중(Over) : 25 ≦ BMI ≦ 30
    //정상(Normal) : 19 ≦ BMI ≦ 24
    //저체중(Low) : BMI < 19
  //학생 정보 입력 예
    //01 홍길동 120.8 30.9
    //⋮ ⋮ ⋮ ⋮ ⋮ ⋮ 
  //학생 정보 출력

    //    ******************************************************************
    //    번호    이름    키(cm)   체중(kg)   BMI   비만정도
    //    ******************************************************************
    //    01    홍길동   120.8    30.9      21     과체중    
    //    ⋮ ⋮ ⋮ ⋮ ⋮ ⋮    
    //    ******************************************************************
    //    비만 : 3   과체중 : 2   정상 : 3   저체중 : 2

#include <stdio.h>
#define MAX_NAME_LEN    20
typedef struct _Student Student; //Student 타입 이름 정의
struct _Student//구조체 정의
{
    int num;
    char name[MAX_NAME_LEN];
    double height;//키
    double weight;//몸무게
};

#define MAX_STUDENT 10
Student stues[MAX_STUDENT];

void InputDatas();
void PrintDatas();
int main()
{
    InputDatas();
    PrintDatas();
    return 0;
}
void InputDatas()
{
    int i = 0;
    printf("%d명의 학생 데이터를 입력하세요.\n",MAX_STUDENT);
    printf("입력 포멧: 번호 이름 키 몸무게\n");
    printf("예) 01 홍길동 120.8 30.9\n");
    for (i = 0; i < MAX_STUDENT; i++)
    {        
        scanf_s("%d %s %lf %lf", &stues[i].num,
            stues[i].name,MAX_NAME_LEN, &stues[i].height, &stues[i].weight);
    }
}
void PrintDatas()
{
    int i = 0;
    double BMI = 0;
    int h=0, o=0, n=0, l=0;
    printf("%-4s %-10s %-10s %-10s %-10s %s\n", 
        "번호", "이름", "키(cm)", "체중(kg)", "BMI", "비만정도");
    printf("******************************************************************\n");
    for (i = 0; i < MAX_STUDENT; i++)
    {
        //키는 m단위이고 제곱을 취했으므로 10000을 곱해주어야 합니다.
        BMI = stues[i].weight / (stues[i].height * stues[i].height)*10000;

        printf("%-04d %-10s %-10.1f %-10.1f %-10.f ", i, stues[i].name, 
            stues[i].height, stues[i].weight, BMI);
        if (BMI > 30)
        {
            h++;
            printf("비만\n");
        }
        else if (BMI >= 25)
        {
            o++;
            printf("과체중\n");
        }
        else if (BMI >= 19)
        {
            n++;
            printf("정상\n");
        }
        else
        {
            l++;
            printf("저체중\n");
        }        
    }
    printf("******************************************************************\n");
    printf("    비만 : %d   과체중 : %d   정상 : %d   저체중 : %d\n", h, o, n, l);
}
비만도 지수 BMI와 신체지수 측정 실행 화면
실행 화면

C언어 소스