일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 정수와유리수
- html/css
- 텍스트마이닝
- numpy/pandas
- 영어공부
- 중학1-1
- 정보처리기사필기
- 자바
- 혼공머신
- 파이썬라이브러리
- 자바 실습
- CSS
- 정보처리기사실기
- 데이터분석
- SQL
- 데이터입출력구현
- JSP/Servlet
- 코딩테스트
- 파이썬
- 컴퓨터구조
- pandas
- 머신러닝
- 딥러닝
- 데이터베이스
- 컴퓨터비전
- 중학수학
- C++
- 연습문제
- 운영체제
- CNN
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
데이터 처리 3 : 단원 연습문제 풀기 본문
3장의 연습문제를 풀어볼 시간이 되었다. 얼마나 잘 학습했는지 테스트도 하며 문제를 풀어보자!
문제를 푸는 것보다 문제의 본문을 쓰는 것이 더 귀찮기는 하다. 그래도 제대로 공부하려면 이런 것도 시간을 투자하며 감수해야 한다.
이번에 블로그에 학습일지를 남기면서 내가 얼마나 한글도 영문도 타자가 오타가 많은지 알게 되었다. 조만간 타자연습도 시작해야 할 것 같다~
연습문제 풀기
1. C++은 왜 여러 개의 정수형을 제공하는가?
서로 다른 크기의 메모리를 사용해야 불필요한 공간을 절약할 수 있다.
메모리를 절약할 수 있고 충분한 저장 용량이 확보된다. 또한 특정 데이터형을 사용하면 계산 속도가 한층 빨라질 수 있다.
2. 다음 서술과 일치하는 변수들을 선언하라.
- 값이 80인 short형 정수
- 값이 42,110인 unsigned int형 정수
- 값이 3,000,000,000인 정수
short num1 = 80;
unsigned int num2 = 42110;
int num2 = 3000000000;
- 정수라고 해서 int로 선언했는데 이 수는 long long 형의 크기라고 한다. 해당 수가 어떤 범위에 들어가는지 알기 위해서 어디까지 포함되는지 어느 정도 암기하고 있어야 할 것 같다.
- 코딩테스트에서도 이런 문제가 나오면 자주 틀리곤 했었다.
3. 정수형의 한계를 벗어나지 않도록 C++가 제공하는 안전장치는 무엇인가?
한계를 벗어난다는 말이 무슨 말인지 잘 감이 잡히지 않는다. 여러 가지의 자료형을 제공하는 것일까?
- C++은 사용자를 보호하는 안전 장치를 제공하지 않는다. 정수값의 한계가 얼마인지 알려면 climits 헤더 파일을 살펴봐야 한다.
4. 33L과 33의 차이는 무엇인가?
33L은 long형이고, 33은 int형 상수이다.
5. 다음 두 구문은 같은 것인가?
char grade = 65;
char grade = 'A';
서로 같은 구문이다. 65를 정수와 문자로 표현한 것이다.
- 서로 같지 않다고 한다. 첫번째 문장은 아스키 코드를 사용하는 시스템에서만 grade에 A라는 문자를 저장한다. 두번째 문장은 어떠한 시스템에서도 grade에 A라는 문자를 저장할 수 있다.
- 65는 int형 상수이고, 'A'는 char형 상수이다.
6. 코드 88에 해당하는 문자를 C++에게 어떻게 알려줄 수 있는가? 최소한 두 가지 방법으로 보여라.
char c = 88;
char ch = 'X';
이 문제는 정답과 완전히 빗겨갔다. 이 수를 출력하라는 말이었는데 난 88을 나타내기만 하면 되는 줄 알았다. 한국말이 참 어려운 것 같다.
char c = 88;
cout << c << endl; // cout은 char형을 문자로 출력한다
cout.put(char(88)); // put()은 char형을 문자로 출력한다
cout << char(88) << endl; // char형으로 데이터 변환
이렇게 데에터를 출력하는 방법은 3가지가 있다.
7. long형 값을 float형에 대입하면 우수리 버림에러가 발생할 수 있다. long형 값을 double형에 대입하면 어떤 일이 발생할까? 또는 long long형 값을 double에 대입하면 어떤 일이 발생할까?
소수점이 날라가고 버려진다.
- 답은 두 데이터형이 얼마나 크냐에 달려있다. long형이 4바이트면 데이터 손실이 일어나지 않는다. 4바이트는 10자리 수까지 저장할 수 있다. double형은 유효 숫자를 13자리까지 허용하므로 long형을 double형에 대입할 때 우수리 버림이 일어나지 않는다.
- 반면 long long형은 19자리수까지 도달할 수 있어 double에게 보증된 13자리 범위를 초과한다.
8. 다음과 같은 수식의 값을 C++ 방식으로 계산하라.
a. 8 * 9 + 2
b. 6 * 3 / 4
c. 3 / 4 * 6
d. 6.0 * 3 / 4
e. 15 % 4
a. 72 + 2 = 74
b. 6 3 = 18, 18 / 4 = 4
c. 3 / 4 = 0, 0 6 = 0
d. 6.0 * 3 = 18.0, 18.0 / 4 = 4.5
e. 15 % 4 = 3
#include <iostream>
int main()
{
using namespace std;
cout << 8 * 9 + 2 << endl;
cout << 6 * 3 / 4 << endl;
cout << 3 / 4 * 6 << endl;
cout << 6.0 * 3 / 4 << endl;
cout << 15 % 4 << endl;
}
9. x1과 x2는 두 개의 double형 변수이다. 이 변수들을 정수로써 서로 더하여 정수형 변수에 대입하려 한다. 적절한 C++ 구문을 작성하라.
double x1;
double x2;
int a = (int)x1 + (int)x2;
난 이렇게 썼는데 실제 답은 조금 달랐다.
double x1;
double x2;
int pos = (int)x1 + (int)x2;
int pos = int(x1) + int(x2);
int pos = (int)(x1 + x2);
int pos = int(x1 + x2);
둘 중의 하나를 사용하면 되는데 아래 문장은 int를 double로 전환하는 것이다.
학습을 마치고
마지막 문제는 auto에 관한 건데 지금 굳이 공부하지 않아도 될 것 같아 건너뛰었다.
9문제를 푸는데 1시간 반은 걸린 것 같다. 그래도 무척 뿌듯하고 기쁘다. 이제 C++이 무엇인지 조금은 알 것 같다.
내가 작성한 모든 코드들이 색깔이 지정되지 않고 모두 검은색으로 표기되어 이걸 어떻게 고쳐야 하는지 찾아보고 수정하느라 시간이 많이 소모되었다. 그래도 방법을 찾았다!
'프로그래밍 언어 > C++' 카테고리의 다른 글
복합 데이터형 2 : string 클래스 (0) | 2024.08.25 |
---|---|
복합 데이터형 1 : 배열과 문자열 (0) | 2024.08.25 |
데이터 처리 2 : 부동 소수점수와 C++ 산술 연산자 (0) | 2024.08.25 |
데이터 처리 1 : 간단한 변수와 const 제한자 (0) | 2024.08.25 |
C++ 시작하기 3 : 단원 연습문제 풀기 (1) | 2024.08.25 |