Chapter3 복습문제

milpy·2022년 3월 31일
0

C 기초 플러스 6판

목록 보기
3/18

01

다음과 같은 종류의 데이터에는 어떤 데이터형을 사용해야 때로는 한 가지 이상의 데이터형이 적용 될 수도 있다.

예시

a. 서울시 인구 
b. DVD 영화 제작비
c. 이 장에서 가장 많이 사용한 글자
d. 이 장에 그 글자가 나타난 횟수

답안

a. long int | long long int
b. double | float
c. char
d. int

02

int형 대신 long형 변수를 사용하는 이유는 무엇인가?

16bit로 표현하지 못 하는 큰 수는 
C에서는 int의 크기를 '16bit이상'이라 명시하기 때문에 
16bit로 표현하지 못하는 정수는 '32bit이상'인 조건을 가진 
long형을 사용하여 표현하기 위함이다.

03

32비트 부호있는 정수를 얻기 위해서는 어떤 이식 가능한 데이터형들을 사용 할 수 있는가? 각각의 데이터형을 선택한 이유는 무엇인가?

int32_t 자료형을 사용할 것이다.
위 자료형은 정수형을 저장하는 공간을 32bit만큼 할당하는,
C언어의 규약이기때문에 다른 운영체제와 다른 크기를 사용하지 않는다.

04

다음과 같은 각 상수들에 대해 데이터형과 의미가 무엇인지 말하라.

예시

a. '\b'
b. 1066
c. 99.44
d. 0XAA
e. 2.0e30

답안

a. char
b. int
c. double
d. int
e. double

05

Dottie Cawm이 에러가 잔뜩 들어 있는 프로그램을 하나 작성했다. 어디가 잘못되었는지 꼬치꼬치 지적해 주어라.

예시 + 답안( 주석 '//' )

include <stdio.h> // include앞에 #을 붙여야 한다.

main // main의 리턴 타입과 인자값의 유무를 정하여야한다. 
{
 float g; h; // h의 자료형을 지정하지 않았다.
 float tax, rate;
 
 g = e21; // e표기법의 규칙을 따르지 않았다.
 tax = rate*g;
}

06

다음의 각 상수들에 대해 (선언문에서 사용할) 데이터형과 printf() 포맷 지정자를 써 넣어라.

예시 + 답안(데이터형, 지정자)

		상수				데이터형			지정자
a.	12					int					%d
b.	0X3					int					%X
c.	'C'					char				%c
d.	2.34E07				double				%E
e.	'\040'				char				%c
f.	7.0					double				%.1lf
g.	6L					long int			%ld
h.	6.0f				float				%f
i.	0x5.b6p12			double				%a

07

다음의 각 상수들에 대해 (선언문에서 사용할) 데이터형과 printf() 포맷 지장자를 써 넣어라 단, 16bit int형을 가정한다.

예시 + 답안(데이터형, 지정자)

		상수				데이터형			지정자
a.		012				int					%03d
b.		2.9e05L			long double			%Lf
c.		's'				char				%c
d.		100000			long int			%ld
e.		'\n'			char				%c
f.		20.0f			float				%.1f
g.		0x44			int					%x
h.		-40				int					%d

08

어떤 프로그램이 다음과 같은 선언들로 시작한다고 가정하라.

int imate = 2;
long shot = 53456;
char grade = 'A';
float log = 2.71828;

다음과 같은 printf()문에서 적장한 형 지정자를 채워라

예시

printf("%_등에 당첨될 확률은 %_분에 1이다.\n", imate, shot);
printf("%_의 성적은 %_ 학점이 아니다.\n", log, grade);

답안

printf("%d등에 당첨될 확률은 %lh분에 1이다.\n", imate, shot);
printf("%f의 성적은 %c 학점이 아니다.\n", log, grade);

09

ch를 char형 변수라고 가정하자. 캐리지 리턴 문자를 이스케이프 시퀀스, 10진수 값, 8진수 문자 상수, 16진수 문자 상수로 대입하는 문장을 각각 작성하라.(ASCII 코드값을 사용한다고 가정한다.)

ch = 10
ch = '\010'
ch = '\x10'

10

다음과 같이 작성된 프로그램에서 잘못된 곳을 수정하라. (C에서 /는 나눗셈을 의미한다)

예시

1	void main(int)			/이 프로그램은 완벽하다/
2	{
3	 cows, legs integer;
4	 printf("젖소들의 다리를 세어보니 모두 몇 개더냐?\n");
5	 scanf("%c", legs);
6	 cows = legs / 4;
7	 printf("그렇다면 젖소가 %f마리로구나.\n", cows)
8	}

답안

1	int변수의 변수명을 지정하지 않았다.
	( void main(int 변수명) )
    
3	cows, legs의 자료형을 올바르지 못하게 지정했다.
	(int cows, legs;)
    
5	scanf는 입력할 변수에 주소 연산자를 입력해야 한다.
	( scanf("%c", &legs); )
    
7	정수형 변수 int의 포맷지정자는 %d 이다.
	문장의 끝은 세미콜론(;)을 붙여야 한다.
	( printf("그렇다면 젖소가 %d마리로구나.\n", cows); )

11

다음과 같은 이스케이프 시퀸스가 나타나는 것은 각각 무엇인가?

예시 + 답안 ( 주석 '//' )

a. \n	// 새로운 줄로 이동
b. \\	// '\'문자 출력
c. \"	// '"'문자 출력
d. \t	// 탭(Tab)

0개의 댓글