본문 바로가기
프로그래밍/알고리즘

C언어 프로그래밍 필기 문제

by 알용 2012. 4. 7.
반응형


1. 다음 중 컴파일과 컴파일러에 관한 설명으로 옳지 않은 것은?

  ① 프로그래밍 언어로 작성된 코드를 기계어로 번역해주는 과정이다.

  ② 컴파일 해주는 도구를 컴파일러라고 부른다.

  ③ 컴파일을 하게 되면 실행 프로그램(.exe)이 생성된다.

  ④ Microsoft Visual Studio 6.0에서 컴파일의 단축키는 Ctrl+F7 이다.

  ⑤ 확장자 .obj 파일은 기계어로 번역된 정보를 담고 있다.


정답은 3번, 컴파일을 하게 되면 exe 파일이 생성되는 것이 아니라 기계어로 번역된 정보를 담고 있는

파일인 obj 파일이 생성된다.


2. 다음 중 Compile Error 를 발생시키는 명령문은?

   (단, 정수형 변수 n, m이 선언되어 있다고 가정)

  ① printf("안녕하세요");

  ② printf("변수 n의 값은 %d", n);

  ③ scanf("%d", n);

  ④ printf("n + m 의 값은 %d", n+m);

  ⑤ printf("안녕하세요\n저는 홍길동입니다\n");


정답은 3번, scanf 함수로 값을 입력받을 때에는 저장할 변수 앞에 & 를 꼭 붙여줘야 한다.

(단, 포인터 변수나, 배열이 대상일 경우는 제외)


3. 연산자에 대한 설명으로 옳지 않은 것은?

  ① +  : 덧셈

  ② -  : 뺄셈

  ③ *  : 곱셈

  ④ /  : 나눗셈

  ⑤ % : 백분율


정답은 5번, % 연산자는 백분율이 아니라 나머지 연산자이다. a%b 연산을 하게 되면 a를 b로 나눈 나머지의 값이 반환된다.


4. 변수에 관한 설명으로 옳은 것은?

  ① 변수의 자료형(Data Type)에 관계없이 메모리(RAM)에 생성되는 공간의 크기는 같다.

  ② 변수를 선언할 때 값을 초기화하면 이후에 값을 변경할 수 없다.

  ③ 변수 선언은 어느 곳에나 해도 상관이 없다.

  ④ 정수 자료형은 int, 문자 자료형은 string, 실수 자료형은 double 이다.

  ⑤ 정수형 변수 두 개를 선언할 때 int a, b; 와 같은 문법 사용도 가능하다.


정답은 5번, 콤마(,) 연산자로 같은 자료형의 변수를 연이어 선언해줄 수 있다.


5. 서식문자와 제어문자에 관한 설명으로 옳지 않은 것은?

  ① %d 는 10진 정수에 해당하는 서식문자다.

  ② %lf 는 10진 실수에 해당하는 서식문자다.

  ③ 화면에 % 를 출력하기 위해서는 %% 를 써야 한다.

  ④ 화면에 \ 를 출력하기 위해서는 \/ 를 써야 한다.

  ⑤ 개행을 하기 위해서 제어문자 \n 을 사용해야 한다.


정답은 4번, \는 제어문자로써 \ 뒤에 영어소문자를 조합하여 명령을 내리게 되는데 \만 타이핑 했을 경우 컴파일러는 해당되는 제어문자를 찾지 못해 Compile Error 를 발생시킨다. 따라서, \ 를 출력하고 싶거든 \\ 를 타이핑 해야 한다.


6. 변수 n 의 값의 범위가 5 < n <= 9 인지 검사하는 if 문은?

  ① if( n >= 5 && n <= 9 )

  ② if( n > 5 && n < 9 )

  ③ if( n > 5 || n < 9 )

  ④ if( 5 < n <= 9 )

  ⑤ if( n > 5 && n <= 9 )


정답은 5번, && 는 논리연산자로써 그리고(and) 라는 뜻을 가지고 있는데, 좌변의 조건식과 우변의 조건식이 모두 참일 때 참, 두 변의 조건식 중 어느 것 하나라도 거짓이라면 거짓을 반환하는 연산자이다. 문제에서는 n 의 값이 5보다 크면서 9 이하여야 한다고 했으니 정답은 5번이 된다.


7. <보기>의 while문이 종료된 뒤 화면에 출력되는 변수 i의 값은?


  <보기>

#include <stdio.h>

void main()

{

        int i = 0;

        while( i > 0 )

                i++;

        printf("%d", i);

}

  

  ① 0

  ② 1

  ③ 998

  ④ 999

  ⑤ 1000


정답은 1번, 정수형 변수 i 에 0이라는 값을 넣어주고 난 뒤에 while 문으로 넘어가게 되는데, while 문 안에 있는 명령문을 수행하기 전 while 문이 동작할 것인지에 대한 여부를 결정하는 조건식을 검사한다. while 문의 조건에서 i 의 값이 0보다 클 때 해당 while 문 안에 있는 명령문을 수행하라고 되어 있는데 현재 i의 값은 0을 초과하지 않으니 반복문은 단 한번도 실행되지 못하고 넘어가버리게 된다. 따라서, 출력되는 값은 0이다.


8. <보기> 중 조건문의 종류만을 골라 바르게 짝지은 것은?


   <보기>

㉠ if     ㉡ while     ㉢ break     ㉣ int

㉤ printf ㉥ scanf     ㉦ switch     ㉧ double

   

  ① ㉠, ㉡

  ② ㉡, ㉣

  ③ ㉥, ㉦

  ④ ㉠, ㉦

  ⑤ ㉣, ㉧


정답은 4번,

㉠ = 조건문    ㉡ = 반복문    ㉢ = 제어문    ㉣ = 자료형

㉤ = 출력함수 ㉥ = 입력함수 ㉦ = 조건문    ㉧ = 자료형

따라서, 조건문만을 짝지은 것은 ㉠과 ㉦이다.


9. 다음은 정수를 입력받고 홀수인지 짝수인지 판별하는 프로그램이다.

   <보기>의 밑줄에 들어갈 조건식은?


  <보기>

#include <stdio.h>

void main()

{

        int num;

        scanf("%d", &num);

        if(           )

                printf("%d 는 짝수입니다", num);

        else

                printf("%d 는 홀수입니다“, num);

}

 

  ① num+1 == 2

  ② num*2 == num+2

  ③ num/2 == 0

  ④ num/2 != 0

  ⑤ num%2 == 0


정답은 5번, 어떤 수를 2로 나누었을 때의 나머지는 0과 1, 이 두가지 밖에 없다.

만약 2로 나누었을 때의 나머지가 0이라면 그 수는 짝수, 1이라면 홀수이다.

밑줄에 들어갈 조건식이 참일 때 짝수라고 출력해주고 있으니 올바른 조건식은 ⑤번이 된다.


10. <보기> 의 반복문이 종료된 후 화면에 출력되는 값은?


   <보기>

#include <stdio.h>

void main()

{

        int sum = 2;

        while( sum < 22 )

                sum*=2;

        printf("%d", sum);

}


  ① 12

  ② 16

  ③ 18

  ④ 28

  ⑤ 32


정답은 5번, 

sum이 2일 때, sum은 22보다 작으니 2배 증가 ㅡ> sum = 4

sum이 4일 때, sum은 22보다 작으니 2배 증가 ㅡ> sum = 8

sum이 8일 때, sum은 22보다 작으니 2배 증가 ㅡ> sum = 16

sum이 16일 때, sum은 22보다 작으니 2배 증가 ㅡ> sum = 32

sum이 32일 때, sum은 22보다 작지 않으니 반복문 탈출 ㅡ> sum = 32

반응형