Uploaded by 김재연

C언어 답지

advertisement
『IT CookBook, C언어 for Beginner(개정판)』
연습문제 해답
초안작성: 2014.08.16
한빛아카데미㈜
[1장 연습문제]
1. (1) 코딩
(2) 컴파일
(3) 링크
(4) 빌드
(5) 실행
(6) *.c , *.cpp
2.
3.
#include <stdio.h>
int main()
{
printf ("%d \n\n\n", 100-99);
}
[2장 연습문제]
1. 500,400,900
2. scanf_s(), &
3. a, b, result
4. 1 + 2 + 3 = 6
5.
6.
#include <stdio.h>
int main()
{
int a, b, c, d;
int result;
printf("첫 번째 계산할
scanf_s("%d", &a);
printf("두 번째 계산할
scanf_s("%d", &b);
printf("세 번째 계산할
scanf_s("%d", &c);
printf("네 번째 계산할
scanf_s("%d", &d);
값을 입력하세요 ==> ");
값을 입력하세요 ==> ");
값을 입력하세요 ==> ");
값을 입력하세요 ==> ");
result = a + b - c * d;
printf(" %d + %d - %d * %d
}
=
%d \n", a, b, c, d, result);
[3장 연습문제]
1. (1) 정수, 실수
(2) %d, %x, %o
2. %d, %d, %f
3. (1) 291
(2) 4A
(3) char a[6];
4. (1) \a
(2) \b
(3) \n
(4) \r
(5) \t
5. (1) f111, 111+222, 333
(2) 0123.450
(3) 123.00
6. 123.0
7. ③ ④
8.
#include <stdio.h>
int main()
{
int data;
printf("16진수를 입력하세요 : ");
scanf_s("%X", &data);
printf("입력한 16진수는 10진수로 %d 입니다.\n", data);
}
9. (1)
(2)
[4장 연습문제]
1. %
2. 23
3. +=, -=, *=, /=, %=
4. (1) 괄호
(2) 캐스트, (float), (int)
(3) ++, -(4) ( a > 10 ) && ( a < 20 )
(5) 곱한, 나눈
5.
6. (1) 2
(2) 0
(3) 0100
(4) 1101
(5) 0000
7. (1) 100
(2) 0, 1, 0, 1, 0, 20
8.
#include <stdio.h>
int main()
{
int time;
int hour, min , sec;
printf(" ## 계산할 초는 ? ");
scanf_s("%d", &time);
hour = time / (60 * 60); // 1시간 = 1분(60초) * 60
time = time % (60 * 60);
min = time / 60; // 1분 = 60초
sec = time % 60;
printf("\n 시간은 ==> %d 시간 \n", hour);
printf(" 분은
==> %d 분 \n", min);
printf(" 초는
==> %d 초 \n", sec);
}
9.
10. 10행 수정
if (a = 100)  if (a == 100)
[5장 연습문제]
1. (1) 아무것도 출력 안됨
(2) if문 수행2if문 수행3
2. (1) if, else
(2) 블록({})
(3) switch, case
3. (1) O
(2) X
(3) X
4. (1) 2다
(2) 1이다. 2다. 3이다.
5.
#include <stdio.h>
int main()
{
int a;
printf("처리할 수를 입력하세요 : ");
scanf_s("%d", &a);
if( a > 0 )
printf
else if (a <
printf
else
printf
}
6.
("입력한 수는 + 입니다.\n");
0)
("입력한 수는 - 입니다.\n");
("입력한 수는 0 입니다.\n");
#include <stdio.h>
int main()
{
int a=100;
if (a < 200)
{
printf(" a가 200보다 ");
printf(" 작습니다.\n");
}
else
printf (" a가 200보다 큽니다.");
}
[6장 연습문제]
1. 초깃값, 조건식, 증감식, 반복할 문장
2. (1) 10회 (2) 11회 (3) 0회 (4) 10회 (5) 11회
3. (1) 15 회 (2) 24 회
4. (1) X (2) X (3) O
5. (1) X (2) X (3) O (4) O (5) O (6) O (7) O
6. for( ; ; )
7. (1) i<=9 또는 i<10 (2) i++ 또는 ++i 또는 i=i+1
8. 6행 : int odd_hap = 0;
7행 : int even_hap = 0;
9. i%3==0 || i%7==0
[7장 연습문제]
1. 조건식, 초기값, 증감식
2. (1) X (2) X (3) X (4) X (5) X (6) X
3. (1) goto (2) break (3) return (4) continue
4. (1) i=0 (2) i<10 (3) i++
5. 12번
6. i%5==0 || i%8==0
[8장 연습문제]
1. bb[0], bb[1], bb[2], bb[3]
2. 1000, 0, 999
3. ① ④
4. ④
5. (1) 바 (2) 다 (3) 가
(4) 나 (5) 라
6. (1) X (2) X (3) X (4) O (5) X (6) X
7. 50개
8. int cc[5][9][10];
9.
(6) 마 (7) 사
#include <stdio.h>
int main()
{
int aa[4];
int hap=0, kop=1;
int i;
i=0;
while (i<=3 )
{
printf("%d번째 숫자를 입력하세요 : ", i+1 );
scanf_s("%d", &aa[i]);
i++;
}
i=0;
while (i<=3 )
{
hap = hap + aa[i];
kop = kop * aa[i];
i++;
}
printf(" 합계 ==> %d \n", hap);
printf(" 곱셈 ==> %d \n", kop);
}
10. 원래 코드 13~16행
for (i=0 ; i<4 ; i++)
printf("bb[%d]==>%d\t", i, bb[i] );
printf("\n");
aa[2]는 0으로 초기화, bb[3]은 예상할 수 없는 값
11. (1) cc (2) int 또는 cc[0]
12. (1) gets_s (2) gets_s
(3) strcat_s (4) strcat_s (5) strlen (6) strlen (7) strcmp
13.
#include <stdio.h>
int main()
{
int aa[3][4];
int i, k;
int val=1;
i=0;
while(i<3)
{
k=0;
while(k<4){
aa[i][k] = val;
val++;
k++;
}
i++;
}
}
[9장 연습문제]
1. (1) 스택(Stack)
(2) 증가, 감소 (3) 10, 0
2. (1) 1byte (2) 4byte (3) 4byte (4) 4byte
3. (1) 1개 (2) 1개
(3) 3개
4. (1) X (2) O (3) O (4) X (5) X (6) X (7) X (8) X (9) O
5. 104번지
6. (1)과 (4), (2)와 (3)
7. 문자형 포인터에 정수형 변수의 주소를 넣었다.
8. 24행을 if ( *(p+i) < *(p+k) )로 수정
9.
#include <stdio.h>
int main()
{
int s[10] ;
int tmp;
int i, k;
int *p;
p = s;
for(i=0; i<10; i++)
{
printf("s[%d] 데이터: ", i);
scanf_s("%d", (p+i));
}
printf("정렬 전 배열 s ==> ");
-- 이후로는 동일함---
10. case 2 부분에 한 줄 추가
case 2:
if (top <= 0)
{
printf("빠져나갈 자동차가 없음\n");
}
else{
top --;
printf(" %c 자동차가 터널에서 빠짐\n", stack[top]);
stack[top] = ' ';
carName-- ;
}
break;
11. 각각 4byte 씩 동일하게 할당됨
12. 10행 : q = *p;  q = p;
13.
#include <stdio.h>
#include <string.h>
int main()
{
char s[20];
char *p=s;
int i;
printf("글자를 입력(20자 미만) : ");
scanf_s("%s",p, 20);
for( i=strlen(s)-1 ; i>=0 ; i--)
printf("%c", *(p+i));
printf("\n");
}
[10장 연습문제]
1. 프로토타입
2. ① v1의 데이터 형식이 없음
② 함수는 int인데 return 값은 char임
3. (1) 다 (2) 나 (3) 가
4. (1) 나 (2) 가 (3) 다
5. 200
6. 110
7.
#include <stdio.h>
int diff(char a, char b)
{
if (a > b)
return a - b;
else
return b - a;
}
int main()
{
char ch1, ch2;
printf("두 문자를 입력 : ");
scanf_s("%c %c", &ch1,1, &ch2, 1);
printf("두 문자의 차이 ==> %d\n", diff(ch1, ch2));
}
8. diff(&ch1,&ch2)
9.
int swap(char *a, char *b)
{
char imsi;
imsi = *a;
*a = *b;
*b = imsi;
}
10. void func1(int);
[11장 연습문제]
1. scanf_s(), printf()
2. (1) 다 (2) 라 (3) 사
(4) 가 (5) 아
(6) 마 (7) 바 (8) 나
3. 10, a, 12
4. (1) ) getch(), getche(), getchar() (2) fscanf_s(), fprintf()
5. 1 3  4  2
6. (1) 나 (2) 다 (3) 가
(4) 라
7. (1) ch = getche(); (2) break;
(3) s[i]
8. (1) pass1[i] = getch(); (2) pass2[i] = getch(); (3) strncmp(pass1, pass2, 4)
9.
#include <stdio.h>
void main()
{
char str[200];
FILE *rfp;
FILE *wfp;
int i;
fopen_s(&rfp, "c:\\windows\\win.ini", "r");
fopen_s(&wfp, "c:\\temp\\win2.ini", "w");
for(i=1; ;i++)
{
fgets(str,200,rfp);
if (feof(rfp))
break;
fprintf(wfp,"%3d행 : %s",i,str);
}
fclose(rfp);
fclose(wfp);
}
[12장 연습문제]
1. (1) X (2) O (3) X (4) O (5) X (6) O
2. (2)
3. (1) 1000 (2) 1004 (3) 1000 (4) 1004
4. (1) malloc(), calloc(), realloc() (2) 포인터배열
5. (3)
6.
#include <stdio.h>
#include <malloc.h>
int main()
{
float* p;
int i;
float hap=0, kop=1;
int cnt;
printf(" 입력할 개수는 ? ");
scanf_s("%d", &cnt);
p = (float*) malloc(sizeof(float) * cnt);
for(i=0 ; i<cnt ; i++)
{
printf(" %d 번째 숫자 : ", i+1);
scanf_s("%f", p+i);
}
for(i=0 ; i<cnt ; i++)
{
hap = hap + *(p+i);
kop = kop * *(p+i);
}
printf("입력숫자 합 ==> %f\n", hap);
printf("입력숫자 곱 ==> %f\n", kop);
free(p);
}
7. 8행 : p = (char) calloc(sizeof(char) * 3 );  p = (char*) calloc(sizeof(char) * 3 );
8. (1) p[i] = (char*) malloc( (sizeof(char) * size) + 1 );
(2) printf(" %d 행 :%d 글자\n", i+1, strlen(p[i]));
[13장 연습문제]
1. (1) 가
(2) 나
(3) 다
2. (1) X
(2) X
(3) X
(4) X
3. s[1].jumsu
4. p->jumsu
5. union, struct, enum
6.
struct student {
char name[10];
int age;
char tel[13];
float salary;
};
7. sun : -5 , mon : -4, tue : -3, wed : -2, thu : -1, fri : 0, sat : 10
8. (1) p = &s
(2) p->name
(3) &p->avg
9. (1)
(2)
[14장 연습문제]
1. void 또는 int main(int argc, char* argv[])
2. 2
3. (1) 헤더파일
(2) <>, ""
4. (1) 나
(2) 가
(3) 라
(4) 다
5.
#include <stdio.h>
void gugu()
{
static int dan=0;
int i;
dan++;
for (i=2; i<=9; i++)
{
printf("%2dx%2d=%2d ", i, dan, dan*i );
}
printf("\n");
}
int main()
{
int i;
for(i=2; i<10 ; i++)
printf("**%d 단** ",i);
printf("\n");
for(i=0; i<8 ; i++)
gugu();
}
6. main.c 소스의 int a=100;을 main() 함수의 밖으로 빼야 한다.
7. 2행 : #define 3.14 PI 
6행~ 7행 : 한 줄로 표현
const int a;
a = 100;
 const int a=100;
#include<stdio.h>
#define PI 3.14
int main()
{
const int a=100;
}
#define PI 3.14
Download