정보처리기사

[정처기] 01-1. C언어 변수, 연산자, 출력 형식, 제어문 & 반복문 연습문제

gani00 2026. 6. 26. 17:22

C 언어 기초 문제 — 변수, 연산자, 출력, 제어문·반복문

범위: 지역·전역·정적변수, 자료형, printf, 연산자, if, switch, for, while, do while, break, continue
각 코드의 출력 결과는 공백과 줄바꿈까지 고려해서 작성한다.

정답은 드래그~


1. 출력 결과 추적

문제 1 — 정수 나눗셈과 나머지

다음 프로그램의 출력 결과를 쓰시오.

#include <stdio.h>

int main(void) {
    int a = 17;
    int b = 5;

    printf("%d %d", a / b, a % b);

    return 0;
}

 

답 : 3, 2


문제 2 — 문자와 문자열

다음 프로그램의 출력 결과를 쓰시오.

#include <stdio.h>

int main(void) {
    char grade = 'A';
    char name[] = "Kim";

    printf("%c %s", grade, name);

    return 0;
}

 

답 : A, Kim


문제 3 — 실수 출력 형식

다음 프로그램의 출력 결과를 쓰시오.

#include <stdio.h>

int main(void) {
    double value = 10.0 / 3.0;

    printf("%.2f", value);

    return 0;
}

 

답 : 3.33


문제 4 — 16진수 출력

다음 프로그램의 출력 결과를 쓰시오.

#include <stdio.h>

int main(void) {
    int num = 31;

    printf("%x", num);

    return 0;
}

 

답 : 1f (소

 

cf)

printf("%x", 31); // 1f
printf("%X", 31); // 1F

0x1F : 코드에 16진수 값을 직접 적는 표기
%x : 16진수 숫자만 출력
%#x : 0x까지 포함해서 출력

문자로 표현)


문제 5 — 전위·후위 증가 연산자

다음 프로그램의 출력 결과를 쓰시오.

#include <stdio.h>

int main(void) {
    int x = 3;
    int a = x++;
    int b = ++x;

    printf("%d %d %d", x, a, b);

    return 0;
}

 

답 : 5, 3, 5


문제 6 — 비교·논리 연산자

다음 프로그램의 출력 결과를 쓰시오.

#include <stdio.h>

int main(void) {
    int a = 5;
    int b = 0;
    int c = -3;

    printf("%d %d %d", a && b, a || b, !c);

    return 0;
}

 

답 : 0 1 0 (논리 연산의 결과는 0 또는 1)


문제 7 — 삼항 연산자

다음 프로그램의 출력 결과를 쓰시오.

#include <stdio.h>

int main(void) {
    int score = 59;
    char result = score >= 60 ? 'P' : 'F';

    printf("%c", result);

    return 0;
}

 

답 : F


문제 8 — 중괄호 생략

다음 프로그램의 출력 결과를 쓰시오.

#include <stdio.h>

int main(void) {
    int num = 0;

    if (num)
        printf("A");
        printf("B");

    return 0;
}

 

답 : B (중괄호 생략 상태)


문제 9 — 가까운 if와 연결되는 else

다음 프로그램의 출력 결과를 쓰시오.

#include <stdio.h>

int main(void) {
    int a = 2;

    if (a > 0)
        if (a > 3)
            printf("A");
        else
            printf("B");

    return 0;
}

 

답 : B


문제 10 — switch와 fall-through

다음 프로그램의 출력 결과를 쓰시오.

#include <stdio.h>

int main(void) {
    int num = 2;

    switch (num) {
        case 1:
            printf("ONE ");
            break;

        case 2:
            printf("TWO ");

        case 3:
            printf("THREE ");
            break;

        default:
            printf("DEFAULT ");
    }

    return 0;
}

 

답 : TWO THREE


문제 11 — switch의 default

다음 프로그램의 출력 결과를 쓰시오.

#include <stdio.h>

int main(void) {
    int num = 4;

    switch (num) {
        case 1:
            printf("A");
            break;

        case 2:
            printf("B");
            break;

        default:
            printf("C");
    }

    return 0;
}

 

답 : C


문제 12 — for 반복문

다음 프로그램의 출력 결과를 쓰시오.

#include <stdio.h>

int main(void) {
    int sum = 0;

    for (int i = 1; i <= 4; i++) {
        sum += i;
    }

    printf("%d", sum);

    return 0;
}

 

답 : 10 ( 1+2+3+4)


문제 13 — continue

다음 프로그램의 출력 결과를 쓰시오.

#include <stdio.h>

int main(void) {
    int sum = 0;

    for (int i = 0; i < 6; i++) {
        if (i % 2 == 0)
            continue;

        sum += i;
    }

    printf("%d", sum);

    return 0;
}

 

답 : 9 (1+3+5)


문제 14 — break

다음 프로그램의 출력 결과를 쓰시오.

#include <stdio.h>

int main(void) {
    int sum = 0;

    for (int i = 1; i <= 5; i++) {
        if (i == 4)
            break;

        sum += i;
    }

    printf("%d", sum);

    return 0;
}

 

답 : 6 (1+2+3)


문제 15 — while

다음 프로그램의 출력 결과를 쓰시오.

#include <stdio.h>

int main(void) {
    int i = 1;
    int result = 1;

    while (i <= 4) {
        result *= i;
        i++;
    }

    printf("%d", result);

    return 0;
}

 

답 : 24


문제 16 — do while

다음 프로그램의 출력 결과를 쓰시오.

#include <stdio.h>

int main(void) {
    int i = 5;

    do {
        printf("%d", i);
        i++;
    } while (i < 5);

    return 0;
}

 

답 : 5


문제 17 — 정적 지역변수

다음 프로그램의 출력 결과를 쓰시오.

#include <stdio.h>

void func(void) {
    static int x;

    x += 2;
    printf("%d ", x);
}

int main(void) {
    func();
    func();
    func();

    return 0;
}

 

답 : 2 4 6


문제 18 — 전역변수와 지역변수

다음 프로그램의 출력 결과를 쓰시오.

#include <stdio.h>

int x = 10;

void func(void) {
    int x = 20;

    printf("%d ", x);
}

int main(void) {
    func();
    printf("%d", x);

    return 0;
}

 

답 : 20 10


문제 19 — 반복문과 변수 변화

다음 프로그램의 출력 결과를 쓰시오.

#include <stdio.h>

int main(void) {
    int a = 1;
    int b = 2;

    for (int i = 0; i < 3; i++) {
        a += b;
        b++;
    }

    printf("%d %d", a, b);

    return 0;
}

 

답 : 10 5


문제 20 — while과 continue

다음 코드가 무한 반복되는 이유를 한 문장으로 설명하시오.

int i = 0;

while (i < 5) {
    if (i == 2) {
        continue;
    }

    i++;
}

 

답 : i가 2에서 증가하지 않아 무한 반복


2. 빈칸 채우기

문제 21 — 출력 형식 지정자

다음 코드의 빈칸에 들어갈 알맞은 형식 지정자를 쓰시오.

char grade = 'A';
char name[] = "Kim";
int age = 25;
double score = 95.5;

printf("%( ① ) %( ② ) %( ③ ) %.1( ④ )",
       grade, name, age, score);

 

c
s
d
f

문제 22 — 조건식 완성

정수 n이 10 이상이고 20 이하일 때 OK를 출력하도록 빈칸을 채우시오.

if (n >= 10 __( ① )__ n <= 20) {
    printf("OK");
}

 

답 : &&


문제 23 — 짝수만 출력하기

0부터 9까지 반복하면서 짝수만 출력하도록 빈칸을 채우시오.

for (int i = 0; i < 10; i++) {
    if (i % 2 __( ① )__ 0)
        __( ② )__;

    printf("%d ", i);
}

 

!=
continue

 


문제 24 — switch문 종료

다음 코드에서 case 1을 실행한 뒤 case 2로 이어서 실행되지 않도록 하는 키워드를 쓰시오.

switch (num) {
    case 1:
        printf("ONE");
        __( ① )__;

    case 2:
        printf("TWO");
}

 

답 : break


문제 25 — 정적변수

다음 설명의 괄호에 들어갈 알맞은 키워드를 쓰시오.

함수 내부에서 선언하지만, 함수가 종료된 뒤에도 값이 유지되도록 하려면 변수 앞에 ( )을 붙인다.

 

답 : static


3. O / X 문제

문제 26

지역변수는 초기화하지 않아도 자동으로 0으로 초기화된다.

 

답 : X wldurqustnsms wlrwjq chrlghk


문제 27

전역변수는 프로그램이 실행되는 동안 유지되며, 초기화하지 않으면 기본적으로 0으로 초기화된다.

 

답 : O


문제 28

continue는 반복문 전체를 즉시 종료하는 키워드다.

 

답 : X


문제 29

do while문은 조건이 처음부터 거짓이어도 본문을 최소 한 번 실행한다.

 

답 :  O


문제 30

switch문에서 일치하는 case가 없어도 default가 반드시 작성되어 있어야 하는 것은 아니다.

 

답 : O