집에 에어컨을 틀어놓고 미숫가루 커피 마시면서 혼공단 작성하니까, 밖에 나가야 할 이유를 모르겠고 집순이 생활에 너무나도 만족 중인 하루하루입니다…. 정보처리기사 시험이 일주일 정도 남았는데 프로그래밍 언어 과목 공부에 도움이 되는 것 같습니다.👍 먼저 과제부터 인증하고 뒤에 궁금했던 내용이나 더 찾아본 내용을 작성하도록 하겠습니다.
✅ ch03 확인 문제
Ⅰ 다음과 같이 변수가 선언되어 있을 때, scanf 함수의 사용법이 옳은 것을 고르세요.
|
|
- scanf("%d", &ch); ❌ ➡️ scanf("%c", &ch);
- scanf("%d", &sh); ❌ ➡️ scanf("%hd", &sh);
- scanf("%d%f", &in, &ft); ⭕
- scanf("%f", &db); ❌ ➡️ scanf("%lf", &db);
Ⅱ 다음 프로그램이 완성되도록 빈칸에 알맞은 내용을 적으세요.
|
|
정답: fruit
, &cnt
실행결과
Ⅲ 키보드로 문자를 입력해 아스키 코드 값을 출력하는 프로그램이 완성되도록 빈칸에 알맞은 코드를 적으세요.
(어떤 문자가 입력될지는 실행할 때 결정합니다)
|
|
정답
|
|
실행결과
✅ ch04 확인 문제
여기서는 헷갈리는 부분도 좀 있었고 정답과는 다른 부분이 좀 있었습니다.
정답과는 약간 다르지만 실행결과는 모두 잘 출력이 되어서 같은 문제임에도 불구하고
다양한 답이 나올 수 있다는 사실을 다시 한 번 깨닫게 되었습니다.
Ⅰ short형과 long형의 자료형 크기를 비교해 크기가 큰 자료형이 무엇인지 출력하는 프로그램이 완성되도록 빈칸을 채우세요.
|
|
실행결과
Ⅱ 야구경기장의 좌석 수가 70개고 입장객 수가 65명일 때 입장률을 표시하는 프로그램이 완성되도록 빈칸을 채우세요.
|
|
실행결과
Ⅲ 3.76시간은 몇 시간, 몇 분, 몇 초인지 출력하는 프로그램이 완성되도록 빈칸을 채우세요.
|
|
실행결과
✅ 도전 실전 예제
⚖️ 체중관리 프로그램
체중(kg)과 키(cm)를 입력해 BMI(신체질량지수)를 구한 후 BMI의 값이 20.0 이상 25.0 미만이면 표준입니다를 출력하고 그렇지 않으면 체중관리가 필요합니다를 출력합니다.
BMI는 표준체중, 저체중, 과체중을 판별하는 수치로 몸무게를 키의 제곱으로 나누어 구합니다. 이때 키는 미터(m)단위로 계산합니다.
정답
|
|
책에서는 몸무게 입력값이 정수로 표현되어 있지만, 실수로 입력될 수도 있다고 생각하여 모든 변수의 값을 double로 정의했습니다.
실행결과
✅ 추가 학습
* C 언어의 정수 자료형
데이터 타입 | 크기(byte) | 값의 저장 범위 |
---|---|---|
short | 2 | -32768 ~ 32767 |
int | 4 | -2147483648 ~ 2147483647 |
long | 4 | -2147483648 ~ 2147483647 |
long long | 8 | -2^63 ~ 2^63 - 1 |
long long 타입이 익숙하길래 어디서 봤지 하다가,
백준 25314번을 풀면서 이런 자료형도 있구나 했었던 게 생각이 났습니다.
그리고 int
와 long
의 크기, 저장 범위가 동일하면 왜 따로 분리를 한 것인지 궁금증이 생겨서 찾아보았는데,
컴퓨터 역사와 관련이 있다는 사실을 알게 되었습니다.
8bit, 16bit CPU가 대부분이던 시대에서 32bit, 64bit 아키텍처가 개발됨에따라
int 자료형의 크기가 다양하게 늘어나게 되었습니다.
그래서 int의 크기가 long보다 커지는 경우가 생기게 되었고, 64bit 아키텍처에서 4byte로 int의 크기를 고정하게 되어서
int의 크기는 4byte이다- 라고 표현하는 것 뿐입니다.
long의 크기는 32bit에서는 모두 4byte이지만 대부분의 64bit에서는 8byte가 됩니다. (windows 제외)
* 콤마 연산자
- 한 번에 여러 개의 수식을 차례로 나열해야 할 때 사용합니다.
- 왼쪽부터 오른쪽으로 연산을 수행, 가장 오른쪽의 피연산자가 최종 결괏값이 됩니다.
|
|
++a, ++b가 순차적으로 실행되고 res 변수에는 맨 오른쪽 b에서 1을 더한 값이 저장됩니다.
* 비트 연산자
구분 | 연산자 | 연산 기능 |
---|---|---|
비트 논리 연산자 | & | 두 비트가 모두 1인 경우에만 1로 계산한다 |
^ | 두 비트가 서로 다른 경우만 1로 계산한다 | |
| | 두 비트 중에서 하나라도 참이면 1로 계산한다 | |
~ | 1을 0으로 바꾸고 0을 1로 바꾼다(부호 포함) | |
비트 이동 연산자 | « | 비트를 왼쪽으로 이동시킨다 |
>> | 비트를 오른쪽으로 이동시킨다 |
콤마 연산자와 비트 연산자는 완전히 처음 본 내용이라 다시 한 번 정리했습니다.
✅ 마치며
데이터 타입과 연산자는 언어를 배울 때 처음으로 만나는 내용인데, 다른 언어와 비교해가며 공부하기 좋았습니다. 아무것도 모르는 상태에서 C로 프로그래머스 0단계를 풀다가 sizeof 연산자를 사용한 적이 있는데, 그때는 이게 함수인지 연산자인지 생각해보지도 않고 무작정 사용했던 기억이 납니다. 그저 손에만 익숙했던 내용을 확실히 이해하게 된 시간이었습니다.
+ 캔트비블루 상사화도 좋아요 🎧
참고한 글 🔗 [C언어] int 와 long 은 무엇이 다를까?