01 다음의 식별자 중에서 잘못된 것은?
③ 1st_number
첫글자는 반드시 문자(A ~ Z 혹은 a ~ z)나 언더바(_)로 시작해야한다.
숫자는 허용되지 않는다.
02 다음 자료형을 최대값이 작은 것부터 나열하라.
- char : -128 ~ 127
- unsigned char : 0 ~ 255
- short : -32768 ~ 32767
- unsigned (int) : 0 ~ 4294967295
- int : -2147483648 ~ 2147483647
- long : -2147483648 ~ 2147483647
- float : ± (1.17549 × 10^38) ~ ± (3.40282 × 10^38)
- double : ± (2.22507 × 10^308) ~ ± (1.79769 × 10^308)
long의 경우엔 시스템의 비트에 따라 int와 같거나 더 넓은 범위를 표현할 수 있다.
03 다음 중 C에서 지원하는 자료형의 이름이 아니 것은?
③ byte
C에서는 바이트를 다룰 때 1바이트 크기의 char를 사용한다.
04 다음 중 정수 상수의 표기가 잘못된 것을 모두 골라보자.
② 0a2
0으로 시작되는 정수 상수는 8진수로 간주되긴하지만, a라는 문자가 들어갔기 때문에 잘못되었다.
⑤ 10,000
정수를 정의할 때 쉼표를 사용하지 않는다.
05 다음 중 실수 상수의 표기가 잘못된 것을 모두 골라보자.
③ 3exp8
C에선 exp를 사용하지 않고 e나 E를 사용한다.
06 다음 중 문자 상수의 표기가 잘못된 것을 모두 골라보자.
② '\010'
8진수 이스케이프 시퀀스인데, '\010'로 정의해야한다.
③ "a"
큰 따옴표로 묶여있기 때문에 문자 상수가 아니라 문자열이다.
④ '/Z'
작은 따옴표 안에 두 개의 문자가 들어있다.
07 다음의 정수 상수 중에서 하나의 상수만 값이 다르다. 값이 다른 상수는?
④ 010
나머지는 표현법이 다를 뿐 전부 10인데, ④는 8진수이므로 10진수로 변환하면 혼자 8이다.
08 다음의 상수의 자료형을 적어보자.
(a) int
(b) double
(c) float
(d) int
(e) char
09 다음 변수 이름이 올바른지 아니면 잘못되었는지를 지적하고 그 이유를 써라.
(a) O
(b) X. 특수 문자 #가 사용.
(c) X. 특수 문자 %가 사용.
(d) X. 변수명은 숫자로 시작할 수 없음.
10 다음의 상수를 지수표기법으로 변환하라.
(a) 3.141592 * 10^0
(b) 7.16532 * 10^2
11 부동 소수점형에 대한 설명 중 잘못된 것을 모두 골라보자.
① 일반적으로 정수 계산보다 빠르다.
복잡한 연산을 수행하기 때문에 더 느리다.
③ 정수 연산과는 달리 오버플로우는 발생하지 않는다.
너무 큰 값이 나오게 되면 INF(infintiy: 무한)으로 표현되며 오버플로우 발생.
⑤ float는 48비트로 실수를 표현한다.
32비트이다.
12 다음의 변수를 선언하는 문장 중에서 틀린 것을 모두 골라보자.
② int x = 10, short y = 6;
한 라인이 종료(세미콜론) 되기 전에 서로 다른 자료형을 혼합하여 선언하는 것은 허용되지 않는다.
int는 int끼리, short는 short끼리 선언해야한다.
⑥ unsigned short double x;
unsigned는 정수형에서 유효한 키워드이다.
정수형이면 double을 제거, 실수형이면 unsigned short를 제거하고 선언해야한다.
13 다음의 상수를 printf()를 이용해서 출력하는 경우의 올바른 형식 지정자를 쓰라.
(a) %e (혹은 %E)
지수 부분을 대문자냐 소문자냐 출력하는 차이일 뿐이다.
(b) %x (혹은 %X)
16진수에서 10부터 15까지는 a부터 f까지로 나타난다. 이 부분을 대소문자로 출력하는 것 외엔 동일하다.
(c) %c
Tab 문자로써, 탭 간격을 출력한다.
(d) %f
float을 사용할 때는 실수 뒤에 f나 F를 추가한다.
그렇기 때문에 해당 문자는 float이고, 이를 출력하기 위해선 %f 형식 지정자를 사용한다.
14 float f = 1.234; 문장을 컴파일하면 경고 메시지가 발생하는 이유는 무엇인가?
실수의 맨 뒤에 f나 F 문자가 없으면 double로 인식한다. 즉, float을 선언해놓고 double 값으로 초기화를 시도하기 때문에 경고 메시지가 발생한다.
컴파일러가 알아서 float 형태로 변환하여 초기화를 수행해주지만, 프로그래머의 의도가 double인지 float인지 알 수 없기 때문에 경고가 발생한다.
그러므로 double로 선언을 하던지, 맨 뒤에 f나 F를 추가해주어야한다.
15 다음의 코드에서 잘못된 부분을 모두 지적하고 올바르게 수정하라.
int x = 0, y = 0; // x와 y를 모두 0으로 초기화
x도 0으로 초기화하도록 수정.
char grade = 'A'; // 문자 A의 아스키 코드를 grade에 대입
큰따옴표는 문자열을 나타내는데 사용한다. 그래서 작은따옴표로 변경.
double rate = 1e10; // rate에 1x1010을 대입
C언어의 지수 표기법은 <숫자> + e + <지수> 이다. 그래서 앞에 숫자를 추가.
double profit = 75.0; // 실수형 변수 profit에 75.0을 대입
실수형엔 short double이라는 자료형이 없기 때문에 수정.
int salary = 2000000; // salary에 2,000,000을 대입
정수형 값을 대입할 땐 쉼표를 넣지 않는다.
16 다음 프로그램의 출력을 쓰라.
(a)
8진수=12
10진수=10
16진수=a
(b)
<Windows의 알람음>
예제 프로그램
100, X, 1.234500
'Drill > 프로그래밍언어' 카테고리의 다른 글
[프로그래밍언어]쉽게 풀어쓴 C언어 Express 4장 변수와 자료형 Programming (0) | 2024.11.19 |
---|---|
[프로그래밍언어]쉽게 풀어쓴 C언어 Express 3장 프로그램 구성요소 Programming (0) | 2024.11.16 |
[프로그래밍언어]쉽게 풀어쓴 C언어 Express 3장 프로그램 구성요소 Exercise (0) | 2024.11.15 |
[프로그래밍언어]쉽게 풀어쓴 C언어 Express 2장 프로그램 작성 과정 Programming (1) | 2024.11.12 |
[프로그래밍언어]쉽게 풀어쓴 C언어 Express 2장 프로그램 작성 과정 Exercise (1) | 2024.11.11 |