| 32 | (p32. [그림1-3]) 그림1-3]에서 링킹 후 실행파일을 의미하는 사각형 부분
hello.c ==> 그림1-3]에서 링킹 후 실행파일을 의미하는 사각형 부분
hello.exe | 2006-10-25 | 1 |
| 56 | ((p56) 음영박스 3번째 줄) 잘된예 | 잘못된예 _total#Money | _totalMoney ==> 잘된예 | 잘못된예 _totalMoney | _total#Money | 2006-10-25 | 1 |
| 82 | (p82) [예제 2-10] 9행) r2=2.1; ==> r2=2.1f; | 2006-10-25 | 1 |
| 82 | (p82) [예제 2-10] 8행) r1=3.14; ==> r1=3.14f; | 2006-10-25 | 1 |
| 82 | (p81) [예제 2-9] 8행) f=3.14; ==> f=3.14f; | 2006-10-25 | 1 |
| 102 | (p102. 연습문제2 11행) scanf("d", &sec); ==> scanf("%d", &sec); | 2006-10-25 | 1 |
| 102 | ((p102) 연습문제 2번 11, 16행) 11 행 : scanf("d",&sec); 16 행 : printf("d seconds = %d minute %d sec. ", sec, min,left) ==> 11행: scanf("%d",&sec); 16행: printf("%d seconds = %d minute %d sec. ", sec, min,left) | 2006-10-25 | 1 |
| 116 | (p116. [그림3-1] for문의 동작과정) 1번과 2번의 화살표 방향이 잘못되어 있음 ==> 1번과 2번 화살표 방향이 없어야 함 | 2006-10-25 | 1 |
| 117 | (p117) [예제 3-5] 10행) for (i=2; i<values/2; i++) ==> for (i=2; i<=values/2; i++) | 2006-10-25 | 1 |
| 128 | ((p.128) 예제 3-11) <홀수 팩토리얼만 빼고 출력하기> 2,4,6,8,10의 팩토리얼 결과값이 제대로 나오지 않는다. i가 홀수인 경우는 11번째 줄의 if (i % 2 == 1) 에 의해서 건너뛰게 되더라도 factorial 값에는 곱해줘야 실제 반환값이 맞는 값이 나오게 됩니다.13번째 줄 i++; 이 나오기 전에 factorial *= i 라고 써줘야 맞습니다. ==> 08 ... 09 while(i<=limit) 10 { 11 factorial *=i; <-17행의 factorial 계산을 11행으로 옮겨야함 12 if(i%2==1){ 13 .... | 2006-10-25 | 1 |
| 133 | ((p133) 연습문제 1번 소스 8행) 08 printf("3d[%x] = %c", i, i, i); ==> 08 printf("%3d[%x] = %c ", i, i, i); | 2006-10-25 | 1 |
| 134 | ((p134) 연습문제 2번 8~9행) 08 printf("nExpression :"); 09 scanf("i %c %", &v1, &op, &v2); ==> 08 printf(" Expression :"); 09 scanf("%i %c %i", &v1, &op, &v2); | 2006-10-25 | 1 |
| 149 | (p149) 소스 코드 3행과 6행) 3행 intadd(int a int b) 6행 returnn ==> 3행 int add(int a, int b) 6행 return | 2006-10-25 | 1 |
| 164 | ((p.164) 첫번째 문단 5째줄) 다시 말해 스택 영역은 동적할당을 위한 기억 장소로 활용되고, 힙 영역은 정적할당을 위한 용도로 사용되는 공간이다.
바로고침-> 스택영역은 정적할당을 하기위한 기억장소이며, 힙영역에 비하여 공간이 작다. 그래서 재귀함수같은 경우를 잘못 사용할시에는 스택 오버플로우가 나기도 한다. 힙영역은 동적할당을 하기위한 기억장소이며, malloc 함수등을 사용하여 힙영역을 사용할수 있다.
기억 클래스 쪽 부분좀 다시 검사해주셨으면 합니다. 내용이 좀 애매모호 하네요.. ==> 프로그램을 작성할 때 int a; float f; int b[30]; 과 같이 컴파일 시간(compile time)에 필요한 메모리의 양을 알려주는 할당을 정적 할당(Static Allocation)이라고 하며 일반적으로 해당 변수는 스택 영역에 위치한다. 스택영역은 이처럼 단순 정수 또는 실수형 변수와 같이 비교적 그 크기가 작은 변수를 할당하기 위해 사용되는 공간이다.
반면, 동적 할당(Dynamic Allocation)은 정적 할당과는 달리 프로그램이 실행되는 중에(Run Time) 필요한 만큼의 메모리를 할당하는 기법으로 동적 할당된 변수는 힙 영역에 위치한다. 동적 할당의 예로, 특정 파일의 내용 전부를 버퍼에 읽어 들여야 하는 경우를 생각해 볼 수 있다. 이 경우 텍스트 파일의 크기에 따라 버퍼의 크기가 달라지므로 필요한 메모리 양을 프로그램 작성 시 결정할 수 없다. 결국 이 같은 경우에는 동적할당 기법(malloc과 같은 동적할당 함수를 사용할 수 있다)에 의해 필요한 메모리를 할당받아야 하며 이렇게 할당된 메모리는 힙 영역에 위치하게 된다. 참고로, 일반적인 스택하나의 크기는 64K로 운영체제에 따라 다양한 크기를 갖는 힙(힙의 최대 크기는 요즘과 같은 32bit 머신에서는 2G까지도 가능하다)에 비해 상대적으로 작아서너무 많은 변수를 스택에 할당할 경우 스택 오버플로가 발생할 수 있다. | 2006-10-25 | 1 |
| 189 | (p.189) [예제 5-1] 11행) avg=sum/3; ==> avg=(float) sum/3.0f; | 2006-10-25 | 1 |
| 190 | ([예제 5-2] 프로그램 작성&결과 오류) sum 값을 초기화하지 않아 프로그램 결과값에 오류가 있습니다.
1) sum 값을 초기화하지 않았음 : 05 int i, sum; 2) 실행 결과 오류 : total = 2326, average = 232.000000 ==> 1) sum 값을 초기화함 : 05 int i, sum=0; 2) 실행 결과 정정 : toal = 870, average = 87.000000 | 2006-10-25 | 1 |
| 190 | (p.190) [예제 5-2] 5행과 11행) 5행 int i, sum; 11행 avg=sum/10; ==> 5행 int i, sum = 0; 11행 avg=(float) sum/10.0f; | 2006-10-25 | 1 |
| 194 | (p194. [그림5-2] 배열 원소의 참조) 배열의 첫째 원소를 가리키는 화살표 시작부분의 score가 score[0]로 잘못표시되어 있음
score[0] ==> score | 2006-10-25 | 1 |
| 216 | ((p216) [예제 5-6] 코드 1행) 01 nclude<stdio.h> ==> 01 #include<stdio.h> | 2006-10-25 | 1 |
| 226 | (p226) 소스박스 내 39행) 39 printf("%10s %10s %10d %10d %10d %10d₩"...); ==> ₩ ->
| 2006-10-25 | 1 |
| 235 | (p235) 위에서 9번째 줄) [그림 6-2]를 다시 한번 살펴보자. 포인터 변수 p는 메모리 번지 0x1001에 할당되어 있으며, 비록 char형이기는 하지만 그 크기는 2바이트(0x1001~0x1002)다. p가 가리키는 곳을 따라가 보면 ==> [그림 6-2]를 다시 한번 살펴보자. 포인터 변수 pi는 메모리 번지 0x1001에 할당되어 있으며, 비록 char형이기는 하지만 그 크기는 2바이트(0x1001~0x1002)다. pi가 가리키는 곳을 따라가 보면 | 2006-10-25 | 1 |
| 238 | ((p 238) [그림 6-5] 예제) int *pc; ==> int *pi | 2006-10-25 | 1 |
| 249 | (p249) 4번째 줄) 다차원 배열은 포인터 수식은 ==> 다차원 배열의 포인터 수식은 | 2006-10-25 | 1 |
| 260 | (p260. [그림6-16]) 그림 상단 부분이 약간 짤려져 있음 ==> 그림 상단 부분이 약간 짤려져 있음 | 2006-10-25 | 1 |
| 289 | (p289) [예제 7-1] 20행) sd.avg=(float)(sd.kor+sd.eng+sd.math)/3; ==> sd.avg=(float)(sd.kor+sd.eng+sd.math)/3.0f; | 2006-10-25 | 1 |
| 291 | (p291. [그림7-4] 구조체 변수가 포인터인 경우) sd = &psd; ==> psd = &sd; | 2006-10-25 | 1 |
| 295 | (p295) [예제 7-2] 23행) p->avg=(float)(p->kor+p->eng+p->math)/3; ==> p->avg=(float)(p->kor+p->eng+p->math)/3.0f; | 2006-10-25 | 1 |
| 297 | ((p.297) 첫번째 문단 후 그림 7-6) struct STUDENT { int no; char name[20]; char sex, tel[15], major[30]; struct SCORE { char date[20]; int kor, eng, math; float avg; } 요기 공백인데 변수이름 score;가 빠진듯 } st 1 = ...............이하 생략 ==> 누락된 score를 추가 합니다.
struct STUDENT { int no; char name[20]; char sex, tel[15], major[30]; struct SCORE { char date[20]; int kor, eng, math; float avg; } score; } st 1 = ...............이하 생략 | 2006-10-25 | 1 |
| 326 | (p326) [예제 8-2] 2~4행) 02 #define MAX_RATE 1.3 03 #define MID_RATE 1.2 04 #define MIN_RATE 1.1 ==> 02 #define MAX_RATE 1.3f 03 #define MID_RATE 1.2f 04 #define MIN_RATE 1.1f | 2006-10-25 | 1 |
| 341 | ((p.341) 박스 세번째칸 첫 줄) #ifdef 매크로명 으로 되어 있는데, #ifndef 매크로명이 맞음. ==> ifdef -> ifndef | 2006-10-25 | 1 |
| 342 | ((p.342) 두번째 문단 소스예제중) 메모리 사정에 따라 이후 예제
#if SYSTEM_EMEORY >= 512 #define MAX_PROCESS 100 #elif SYSTEM_EMEORY <= 512 <--요부분 이상 그냥 < 512일듯 #define MAX_PROCESS 50 #else #define MAX_PROCESS 10 <--else에 해당하는 부분이 있나요??? #endif .....이하 생략
예문 자체가 제가 이해를 못하겠는 512이면 어떻게 되는건지 크거나 작거나 그 이외인 else에 해당되는 경우가 있는지? ==> 다음과 같이 정정합니다.
#if SYSTEM_EMEORY >= 512 #define MAX_PROCESS 100 #elif SYSTEM_EMEORY < 512 #define MAX_PROCESS 50 #endif | 2006-10-25 | 1 |
| 354 | (p354. 연습문제 5번) PRINT(i, j) ==> PRINT(i * j) | 2006-10-25 | 1 |
| 399 | ((p.399) 7번째 줄) 3. 서식화된 파일 입출력함수의 설명 첫 줄(399쪽의 7째 줄)에서 현재는 "fscanf()와 printf() 함수는 입출력 대상이...."라고 되어 있으나 여기서 printf()가 아니라 fprintf()여야 맞다. ==> printf() -> fprintf() | 2006-10-25 | 1 |
| 404 | ((p.404) 예제 9-11중 12line) char name[20]; 요 변수 사용이 안되는 듯 구조체 안에 이미 선언이 되어 있는데 다시 또 선언을 ;;; ==> 선언만 해두고 사용 안하고 있는 변수이므로 삭제해도 됩니다. | 2006-10-25 | 1 |
| 408 | ((p.408) 예제 9-12중 2 , 3Line) 함수 원형 선언 void add(); void search(); ==> int add(); int search(); | 2006-10-25 | 1 |
| 423 | (p423. 연습문제 2번) 프로그램 조건이 누락 ==> [조건] -화면 디자인은 옆의 화면과 같아야 한다. (1)은 학생 자료의 입력을 할 수 있도록 insert_student() 함수를 만들어 놓고 호출되게 해야 한다. 입력된 자료는 반드시 파일의 끝에 추가되어야 한다.
(2)는 저장된 학생 데이터를 수정하기 위한 것으로 update_student()를 호출해야 한다. 수정할 학생의 번호와 함께 입력된 데이터는 기존 자료를 갱신해야 한다.
(3)은 delete_student()를 호출하며 학번을 입력하면 학생데이터를 파일에서 삭제해야 한다.
(4)는 search_student()를 호출하고 학번을 입력하면 해당 학생의 데이터만 화면에 보여주어야 한다.
(5)는 list_all()을 호출하고 한 줄에 한 명씩 모든 학생의 데이터를 화면에 출력한다. 이때, 한 화면을 넘어갈 경우는 멈추었다가 아무 키나 누르면 계속 진행하도록 해야 한다.
(6)을 누르면 모든 작업을 끝내고 종료해야 한다. 학생 데이터 파일의 이름은 student.dat 로 한다. 최대 입력 가능한 학생의 수는 100명으로 가정한다. 주석은 최대한 자세하게 기록해야 한다. | 2006-10-25 | 1 |
| 454 | ((p.454) 이진트리 코드) 1. 038 BINTREE *temp, *p 인데 038 BINTREE *p 로 바꿔야 하지 않을까요?
2. 120번째 줄부터 void in_order(BINTREE *tree) { if(tree != NULL){ post_order(tree->left); printf(" %d ", tree->data); post_order(tree->right); } } 이렇게 된것을 post -> in void in_order(BINTREE *tree) { if(tree != NULL){ in_order(tree->left); printf(" %d ", tree->data); in_order(tree->right); } } 로 해야 하지 않을까요? 제 말이 맞다면 실행 결과 그림도 잘못 된것 같습니다.
Pre-order : 100 50 30 80 150 120 200 450 In-order : 30 80 50 100 120 450 200 150 Post-order : 30 80 50 120 450 200 150 100 200 is exist...
880 is not exist...
3. 131 BINTREE *mytree, data; 을 131 BINTREE *mytree; 로 해야하지 않을까요? ==> [답변] 1. *temp는 선언만 해두고 사용하지 않으니까 지우는게 좋겠습니다.
2. in_order() 함수 내의 post_order()를 in_order()로 바꾸고 결과도 아래와 같이 정정합니다.
<수정후> Pre-order : 100 50 30 80 150 120 200 450 In-order : 30 50 80 100 120 150 200 450 Post-order : 30 80 50 120 450 200 150 100 200 is exist...
880 is not exist...
3. data는 선언만 해두고 사용하지 않으니까 지우는게 좋겠습니다. | 2006-10-25 | 1 |
| 480 | (p 480 [그림 11-12]) WORDRESS ==> WORDREGS | 2006-10-25 | 1 |
|