책 내용 질문하기
578쪽 3번, 4번
도서
2020 시나공 정보처리기사 필기 : NCS 기반 전면 개편 [기본서]
페이지
578
조회수
424
작성일
2020-08-02
작성자
탈퇴*원

 

1. 578쪽 / 3번문제

 

타 답변 확인 후 질문드립니다.

 

그렇다면 

 

 

 #include<stdio.h>

main()

{

int a = 10;

if (a == 10 )

printf("a는");

printf("%d입니다.", a);

else

printf("a는");

printf("%d이 아닙니다." , a);

}

 

 

 

 #include<stdio.h>

main()

{

int a = 10;

if (a == 10 ) {

printf("a는");

printf("%d입니다.", a); 

}

else {

printf("a는");

printf("%d이 아닙니다." , a); 

}}

 

  

 

기존 중괄호는 그대로 두고

 

if (a == 10) 과

 

else 시작에 중괄호를 하나씩 추가하여 이중 중괄호를 만들어주면 참일까요?

 

 

 

 

 

 

2. 578쪽 / 4번문제

 

 

제가 가지고 있는 시나공 문제집에는

 

해설이

 

 C언어에서는 값이 같은지 비교할 때는 관계 연산자 ==를 사용해야 합니다.

'if (a=200)'처럼 대입연산자 =을 이용하면 a에 200이 저장되고, 200은 참이므로 'a=300;'을 수행합니다.

 

라고 쓰여있고, 정답은 3번으로 기재되어 있는데요

 

 

 

정답 오자인가요??

 

정답은 4번이고

 

a = 200 이 아니니까 (else)

정답은 출력값 400인가요?

 

 

답변
2020-08-03 11:14:31

안녕하세요 길벗수험서 운영팀입니다.

 

[1]

예, 정답입니다.

 

[2]

? 어느 부분에 오해가 있는지 이해하지 못했습니다.

먼저 a=200은 a가 200인지 비교하는 식이 아닌 a에 200을 치환한다는 대입연산자를 사용한 식입니다. (해당 코드는 오류가 발생하지 않습니다.)

 

즉, if(a=200) 은 a에 200을 저장하고, if(a)가 되는 것이죠.

문제는 C에서는 0은 거짓, 0외의 숫자는 모두 참으로 인식한다는 것입니다.

a에는 200이 저장되어 있으니 if(a)의 결과는 참(true)이 되겠죠.

따라서 다음 줄 a=300을 수행하게 됩니다.

a=300 수행 후, if문을 벗어나 printf문을 수행하게 되면

a의 값 300이 화면에 출력되게 되겠죠.

 

행복한 하루되세요 :)

  • 관리자
    2020-08-03 11:14:31

    안녕하세요 길벗수험서 운영팀입니다.

     

    [1]

    예, 정답입니다.

     

    [2]

    ? 어느 부분에 오해가 있는지 이해하지 못했습니다.

    먼저 a=200은 a가 200인지 비교하는 식이 아닌 a에 200을 치환한다는 대입연산자를 사용한 식입니다. (해당 코드는 오류가 발생하지 않습니다.)

     

    즉, if(a=200) 은 a에 200을 저장하고, if(a)가 되는 것이죠.

    문제는 C에서는 0은 거짓, 0외의 숫자는 모두 참으로 인식한다는 것입니다.

    a에는 200이 저장되어 있으니 if(a)의 결과는 참(true)이 되겠죠.

    따라서 다음 줄 a=300을 수행하게 됩니다.

    a=300 수행 후, if문을 벗어나 printf문을 수행하게 되면

    a의 값 300이 화면에 출력되게 되겠죠.

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.