본문 바로가기
프로그래밍/C언어

[쉽게 풀어쓴 C언어 Express] 개정3판 6장 Exercise 풀이

by bluesky888 2022. 9. 27.
반응형

6장 '조건문' Exercise 풀이

 

 

 

5번 Solution(switch문은 if-else문으로, if-else문은 switch문으로 변경하라)

 

[문제 (a)]

if( x == -1 )
   num--;
else if( x == 1 )
   num++;
else
   num = 0;

[변경 코드]

switch(x)
{
   case -1:
      num--;
      break;
   case 1:
      num--;
      break;
   default:
      num = 0;
      break;
}

 

[문제 (b)]

switch(code)
{
   case 'X':
      x++;
      break;
   case 'Y':
      y++;
      break;
   default:
      x=y=0;
      break;
}

[변경 코드]

if( code == 'X' )
   x++;
else if( code == 'Y' )
   y++;
else
   x = y = 0;

 

 

 

6번 Solution(2개의 if문을 논리 연산자를 사용하여 하나의 if문으로 수정하라.)

 

[문제 (a)]

if( x > 10 )
   if( x <20 )
      printf("%d\n", x);

[변경 코드]

if( x > 10 && x < 20)
   printf("%d\n", x);

 

[문제 (b)]

if( x < 10 )
   printf("%d\n", x);
if( x > 20 )
   printf("%d\n", x);

[변경 코드]

if( x < 10 || x > 20 )
   printf("%d\n", x);

 

 

 

8번 Solution(다음 문장의 오류(문법적 오류, 논리적 오류)를 찾아 모두 수정하라.)

 

[문제 (a)]

if( age > 18 );
   printf("성인\n");
else
   printf("청소년\n";

[오류 수정]

if( age > 18 )            // if문은 세미콜론이 없어야 함
   printf("성인\n");
else
   printf("청소년\n");

 

[문제 (b)]

if( 0 <= age <= 18 )
   printf("청소년\n");

[오류 수정]

if ( age>= 0 && age <= 18 )     // if문장의 and는 && 사용
   printf("청소년\n");
else ...                        // if문은 else문장이 추가되어야 함

 

[문제 (c)]

if( x = 0 )
   printf("x는 0이다.\n");

[오류 수정]

if( x == 0 )                 // 서로 같다의 관계연산자는 ==이다.
   printf("x는 0이다.\n");
else ...                     // if문은 else 문장이 추가되어야 함.

 

[문제 (d)]

if( speed > 120 )
   printf("벌금 6만원\n");
else ( speed > 150 )
   printf("벌금 9만원\n");
else
   printf("OK\n");

[오류 수정]

if( speed > 150 )             // 속도위반이 큰 것부터 순서대로 하는 것이 논리적으로 맞다.
   printf("벌금 9만원\n");
else if( speed > 120 )        // if문과 else문 사이에 조건이 2개 이상일 경우 else if를 사용한다.
   printf("벌금 6만원\n");
else                          // else문은 1개여야 한다.
   printf("OK\n");

 

[문제 (e)]

if( score > 90 )
   printf("장학금\n");
   printf("우등\n");
else
   printf("좀더 노력하세요\n");

[오류 수정]

if( score > 90 )
{                         // 여러개의 문장이 실행되어야 하는 복합문은 중괄호를 사용한다.
   printf("장학금\n");
   printf("우등\n");
}
else
   printf("좀더 노력하세요\n");

 

[문제 (f)]

if( x > 0 )
if( y > 0 )
   printf("x와 y는 모두 양수\n");
else
   printf("x가 양수가 아님.\n");

[오류 수정]

if( x > 0 )
{                  // "x가 양수가 아님"은 x > 0의 else 문장이기 때문에 가운데 문장은 중괄호를 해준다.
   if( y > 0 )
      printf("x와 y는 모두 양수\n");
}
else
   printf("x가 양수가 아님.\n");

 

[문제 (g)]

if( age > 0 | age <= 18 )
   printf("청소년\n");

[오류 수정]

if( age > && age <= 18 )   // 0보다 크고 18이하의 조건이므로 and 연산자 &&를 사용한다.
   printf("청소년\n");

 

[문제 (h)]

int tiger=3;
switch(animal)
{
   case tiger:
   ...
}

[오류 수정]

int tiger=3;
switch(animal)
{
   case 3:   // case에는 정수형이 들어가야 하고, 변수 이름을 사용할 수 없다.
   ...
}

 

반응형

댓글