메모장
C언어 복습3 (BMI 계산기) 본문
참고: 정덕 - <컴맹을 위한 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
정답


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'으로 된다(반올림한다)

'C언어 복습' 카테고리의 다른 글
C언어 복습 6 (오늘 날짜 표시) (0) | 2019.05.25 |
---|---|
C언어 복습 5 (연산자 우선순위 / 표로 대체) (0) | 2019.05.25 |
C언어 복습4 (숫자 비밀번호 검사) (0) | 2019.05.19 |
C언어 복습 2 (입력받은 수로 카운트 다운) (0) | 2019.05.04 |
C언어 복습 (시작하기) (0) | 2019.04.22 |