Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

메모장

C언어 복습3 (BMI 계산기) 본문

C언어 복습

C언어 복습3 (BMI 계산기)

Captic 2019. 5. 12. 16:39

참고: 정덕 - <컴맹을 위한 C언어>

♨ 개인적 해석이 다분한 글임으로, 인지하지 못한 오류가 있을 수 있습니다 

 

▣ 실수를 표현하는 방식

 1. 고정소수점: 평소 실수 표현 (예-16.5/ 0.075)

 2. 부동소수점: X*r^3등으로 표현하는 것(수학의 그것

   =>컴퓨터는 2번의 방식을 따르므로 실수형 변수 만들기는 " float 변수; "로 설정한다.

   ※ 깨알 상식: (숫자1)e^(숫자2) = (숫자1) × 10^(숫자2)

 

▣ float = int 4바이트를 차지 -> 0 또는 1이 들어갈 수 있는 공간이 32비트로 한정

       -> 표현 가능한 수의 제한이 있다. -> float의 한계를 극복하기 위해 "double" 등장

 

▣ double

  - float의 2배 (8바이트)

  - float과 double 모두, 변수를 초기화 할때 소수점이 있어야 한다( float k=17.3 // double number=193.0)

  - 솔직히 정수로 해도 실수(~.0)로 변환 된다 = 암시적 형 변환 or 자동 형 변환

  - 수동적으로 실수를 정수화 할 수 있다 = 명시적 형 변환 or 강제 형 변환(type casting)

     예) int a=100; float b=(float)a;

     변환하고 싶은 데이터(a) 앞에 "(자료형- 실수형이면 float, 정수형이면 int)"을 쓰면 된다

  - 실수의 정수화 시 소수점 아래 숫자는 잘린다

    -> 정밀한 숫자를 요구 한다? : double // 메모리를 절약하고 싶다? : float

 

▣ BMI 계산기 만들기

 1) scanf 함수로 키, 몸무게 입력

 2) 사칙연산 연산자 활용 -> BMI값 계산 (BMI = 몸무게/키^2)

 3) BMI값 printf로 출력 " %f ", " %lf " -> %f: float에 사용, 4바이트 실수

                                                     %fl: double에 사용, 8바이트 실수

    -> 출력할 때(printf) %f, %lf 관계 X

        BUT! 입력 받을 때(scanf)는 only float = %f , double = %lf

 

정답

...더보기
2초 후에

 

BMI 값이 출력된다

 

 

1. sleep(정수)

- unistd.h 헤더파일 참고

- sleep에 입력한 정수만큼의 초가 흐를 동안 잠시 멈춘 후 sleep 이후 코드를 진행한다

 

※ unistd.h는 원래 리눅스용 헤더이지만, VS에는 io.h 라는 헤더가 unistd.h 역할을 한다.

   VS에서는 unistd.h -> io.h로 사용 가능 (확인해보기 귀찮아서 Dev-C++사용;) 

 

2. %.2lf ? (LF이다 숫자 21 ㄴㄴ)

- lf또는 f 앞에 .(점) 과 숫자(예 2)가 온다면 소수점 아래 해당 숫자(0.01)까지 출력하라는 뜻

예) float a = 0.123456;    printf(%.5f, a);   라고 한다면

     실제 출력은 '0.12346'으로 된다(반올림한다)

 

사실이다