C-C++/쉽게 풀어 쓴 C 언어 EXPRESS

[쉽게 풀어 쓴 C 언어 EXPRESS] 7장 정리 & Exercise(이론) 답

최옥구 2023. 1. 12. 23:00
반응형

책의 7장의 전체적인 부분을 요약했습니다. 개인 공부 겸 책으로 공부하시는 분들이 리뷰 느낌으로 한번 더 보시면 좋을 것 같아서 작성하였습니다. 


  • 반복문은 복사 붙여넣기를 대체할 수 있는 프로그래밍에서 주요한 제어문 중 하나이다. 
  • while 문은 주어진 조건이 만족되는 동안 문장들을 반복 실행하는 문장 구조이다.
  • 무한루프는 의도하지 않았다는 전제 하에 발생하는 치명적인 오류로 프로그램 실행 전에, 반복이 정상적으로 종료되는지 확인해야 한다.
  • if 문은 조건에 따라 1번만 실행 딱 한번만 실행되지만, while 문은 여러번 반복된다.
  • while 문의 조건식에서는 0이 아닌 모든 값은 참이다. 
  • do...while 문은 반복 문장을 한번 실행하고, 조건문을 검사한다. 가령, 숫자 추측 게임의 경우, 처음에 숫자를 랜덤하게 만들고, do..while 문으로 추측 숫자의 입력과 범위를 알려주고, 만약에 맞춘다면 반복문을 종료한다.
  • for 문은 정해진 횟수만큼 사용하는 반복 구조이다. for 문은 초기식, 조건식, 증감식의 3 부분으로 구성된다. 
  • for 문 안에 부분은 생략 될 수도 있다. 가령 for( ; ; )같은 경우 초기화, 반복 조건, 증감 수식 모두가 없기 때문에 루프가 무한히 반복된다. 
  • 중첩 조건문처럼, 반복문도 반복문 안에 또 다른 반복문 작성이 가능하다. 이를 중첩 반복문이라고 칭한다. 여기서 주의해야할 점은 반목문에서 사용된 조건 변수가 중첩된 반복문에서 똑같이 사용되면 안된다. 의도하지 않은 경우 반복이 제대로 시행되지 않는다. 가령 중첩 for 문을 작성했다고 했을 때, 첫 for문에는 i 변수를 두번째 for 문에는 j 변수를 사용해야한다.
  • break는 루프를 빠져나오는 키워드이고, continue는 아래의 수식들은 모두 생략하고 다시 반복을 시작한다.
  • goto 문은 break와 continue로는 처리하기 힘든 반복 탈출을 이루고자 할 때 사용하면 좋다. 

1. 다음 중 틀린 문장을 지적하고 올바르게 수정하라. 

1번 : 0이 아니라면 모두 참이다.

2번 : 정답

3번 : do...while문은 한번은 수행이 된다.

4번 : 전부 비어있어도 상관 없다.

5번 : 정답

2. 다음은 무한 반복을 구현한 소스이다. 올바르게 구현된 것을 모두 골라보자 - 1번, 4번

 

3. 다음의 프로그램을 실행시키면 "Hello World!"는 몇 번이나 출력되는가 - 3번 / 6, 7, 8

 

4. 다음의 프로그램에서 생성되는 출력 결과는 무엇인가?

(A) 0 \n 3 \n 6 \n 9

(B) 0 \n 3 \n 6 \n 9 

(C) 0 \n 2 \n 4 \n 6 \n 8

(D) 10 \n 9  \n  8  \n 7  \n  6  \n  5 \n 4 \n 3 \n 2 \n 1 \n 0

(E) ****** 6개

(F) 54321

 

5. 동일한 결과를 생성하도록 for 루프는 while 루프로, while 루프는 for 루프로 변환하라.

int i;
for(i = 10; i >= 0; i--){
	printf("%d", i);
}

//while 문으로 변경

int i = 10;
while(i >= 0){
	printf("%d", i);
    i--;
}
int i = 10;
while (i >= 0){
	printf("%d\n", i);
    i -= 3;
}

// for 문으로 변경

for(int i = 10; i <= 0; i--){
	printf("%d\n", i);
    i -= 3;
}

 

6. 다음 코드가 실행을 완료했하였을 변수 i의 최종값은 얼마인가? - (A) 8 (B) 11

 

7. 다음의 코드에서 잘못된 점이 있으면 지적하고 올바르게 수정하라. 논리적인 오류도 포함된다.

int i = 0;
while(i >= 10){
	printf("i의 값\n", i);
    i++;
}

//***********************

int i = 0;
while(i >= 10){		// while 옆에 세미콜론 빠져야 함.
	printf("i의 값\n", i);
    i++;
}

//***********************

int i;
for(i = 0; i < 10; i++){ 	// i--로 하면 무한 반복이됨 따라서 i++로 해야함.
	printf("i = %d\n", i);
}

//***********************

float x;
for(x = 0.1; x <= 1.0; x += 0,1){ 	// != 보다는 <=, >= 로 쓰는것이 바람직 함.
	printf("%f\n", i);
}

//***********************

int i;
for(i = 0; i < 10; i++){	 // i의 초기값을 정해주어야 함.
	printf("i = %d\n", i);
}

 

8. 다음과 같은 코드에서 break 문이나 contiue 문을 사용하지 않고 동일한 결과를 내도록 수정하여 보라.

int i;
for(i = 0; i < 5; i++)
	printf("%d\n" , i);
for(i = 6; i < 10; i++)
	printf("%d\n" , i);
    
//***********************

int i;
for(i = 0; i < 10; i++)
	if(i != 5)
    	printf("%d\n. i);

 

9. 다음의 수학식을 계산하는 코드를 작성하라. 

int total = 0;
for(int i = 1; i <= 30; i++){
	total += i * i + 1;
printf("%d", total);

//*****************************

int total = 0;
for(int i = 10; i <= 30; i++)
	total += i;
for(int j = 0 j <= 5; j++)
	total += j;
printf("%d", total);
반응형