옴클
학습문제집문제제출이력게시판그룹휴식리더보드

© 2026 옴클. All rights reserved.

이용약관개인정보처리방침

    C언어 문법

    문제집 360문제
    1. 1진법
    2. 2출력문8문제
    3. 3입력문13문제
    4. 변수와 자료형
    5. 연산자
    6. 조건문
    7. 반복문
    8. 중첩 반복
    9. 배열
    10. 문자열
    11. 2차원 배열
    12. 함수
    13. 포인터
    14. 구조체
    15. 매크로
    16. 메모리 동적할당

    직접 해보세요

    c
    1. 학습
    2. /
    3. C언어 문법
    4. /
    5. 입력문

    입력문

    레슨 3 · C언어 문법

    입력문이란?

    프로그램이 사용자에게서 값을 받아오는 것을 입력이라고 해요. C언어에서는 scanf() 함수를 사용해서 키보드로 입력받아요.

    scanf는 **"scan formatted"**의 줄임말이에요.


    숫자와 문자를 출력하는 방법: 서식 지정자

    문자열은 그대로 출력할 수 있지만, 숫자나 문자처럼 값이 바뀌는 데이터를 출력하려면 printf에게 "이 자리에는 정수가 들어갈 거야" 처럼 미리 알려줘야 해요. 이때 사용하는 것이 **서식 지정자(format specifier)**예요. %로 시작하는 특별한 기호예요.

    서식 지정자의미예시
    %d정수(integer)1, -5, 100
    %f실수(float)3.14, -0.5
    %c문자(character)'A', 'z'
    %s문자열(string)"Hello"

    정수 출력 (%d)

    c
    #include <stdio.h>
    
    int main() {
        printf("나이: %d살\n", 13);
        printf("점수: %d점\n", 95);
        printf("온도: %d도\n", -5);
        return 0;
    }

    실행 결과:

    text
    나이: 13살
    점수: 95점
    온도: -5도
    

    실수 출력 (%f)

    c
    #include <stdio.h>
    
    int main() {
        printf("원주율: %f\n", 3.14);
        printf("키: %f cm\n", 165.5);
        return 0;
    }

    실행 결과:

    text
    원주율: 3.140000
    키: 165.500000
    

    %f는 기본적으로 소수점 아래 6자리까지 출력해요.

    소수점 자리 조절 (%.2f)

    c
    #include <stdio.h>
    
    int main() {
        printf("원주율: %.2f\n", 3.14159);
        printf("점수: %.1f점\n", 87.6);
        return 0;
    }

    실행 결과:

    text
    원주율: 3.14
    점수: 87.6점
    

    %.2f는 소수점 아래 2자리까지만 출력해요.

    문자 출력 (%c)

    c
    #include <stdio.h>
    
    int main() {
        printf("성적: %c\n", 'A');
        printf("알파벳: %c\n", 'z');
        return 0;
    }

    실행 결과:

    text
    성적: A
    알파벳: z
    

    문자열 출력 (%s)

    c
    #include <stdio.h>
    
    int main() {
        printf("이름: %s\n", "홍길동");
        printf("학교: %s\n", "한국 중학교");
        return 0;
    }

    실행 결과:

    text
    이름: 홍길동
    학교: 한국 중학교
    

    여러 값을 한 번에 출력하기

    c
    #include <stdio.h>
    
    int main() {
        printf("%d년 %d월 %d일\n", 2025, 4, 17);
        printf("이름: %s, 나이: %d살\n", "홍길동", 13);
        return 0;
    }

    실행 결과:

    text
    2025년 4월 17일
    이름: 홍길동, 나이: 13살
    

    출력 폭 지정

    숫자를 일정한 칸 수에 맞춰 출력할 수 있어요.

    오른쪽 정렬 (%5d)

    c
    #include <stdio.h>
    
    int main() {
        printf("%5d\n", 1);
        printf("%5d\n", 23);
        printf("%5d\n", 456);
        return 0;
    }

    실행 결과:

    text
        1
       23
      456
    

    숫자가 5칸에 맞게 오른쪽으로 정렬돼요.

    왼쪽 정렬 (%-5d)

    c
    #include <stdio.h>
    
    int main() {
        printf("%-5d|\n", 1);
        printf("%-5d|\n", 23);
        printf("%-5d|\n", 456);
        return 0;
    }

    실행 결과:

    text
    1    |
    23   |
    456  |
    

    -를 붙이면 왼쪽으로 정렬돼요.


    scanf()를 쓰려면 변수가 필요해요

    입력받은 값을 저장할 그릇이 필요해요. 이 그릇을 **변수(variable)**라고 불러요.

    c
    int num;   // 정수를 담을 변수 선언

    변수에 대한 자세한 내용은 다음 레슨 변수와 자료형에서 배워요. 지금은 int 이름; 으로 정수를 담는 그릇을 만든다고 기억하세요!


    scanf() 기본 사용법

    c
    #include <stdio.h>
    
    int main() {
        int num;
        printf("숫자를 입력하세요: ");
        scanf("%d", &num);
        printf("입력한 숫자: %d\n", num);
        return 0;
    }

    실행 예시 (키보드로 42 입력):

    text
    숫자를 입력하세요: 42
    입력한 숫자: 42
    

    scanf도 printf와 똑같은 서식 지정자(%d, %f, %c, %s)를 사용해서 "어떤 형태의 값을 입력받을지" 알려줘요.


    & (앰퍼샌드)가 뭔가요?

    scanf에서 변수 앞에 &를 꼭 붙여야 해요.

    c
    scanf("%d", &num);  // 올바름
    scanf("%d", num);   // 틀림

    &는 **"이 변수가 메모리에 저장된 위치"**를 알려주는 기호예요. 마치 우편 주소처럼, "이 주소의 그릇에 값을 넣어줘!"라고 알려주는 거예요.

    나중에 포인터 단원에서 더 자세히 배울 거예요. 지금은 "scanf를 쓸 때는 &를 붙인다"고 기억하세요!


    정수 입력받기

    c
    #include <stdio.h>
    
    int main() {
        int age;
        printf("나이를 입력하세요: ");
        scanf("%d", &age);
        printf("나는 %d살이에요.\n", age);
        return 0;
    }

    실행 예시 (13 입력):

    text
    나이를 입력하세요: 13
    나는 13살이에요.
    

    두 정수 입력받기

    여러 변수를 한 번에 입력받을 수 있어요. 입력할 때는 빈칸(space) 또는 엔터로 구분해요.

    c
    #include <stdio.h>
    
    int main() {
        int a, b;
        printf("두 정수를 입력하세요: ");
        scanf("%d %d", &a, &b);
        printf("%d + %d = %d\n", a, b, a + b);
        return 0;
    }

    실행 예시 (3 5 입력):

    text
    두 정수를 입력하세요: 3 5
    3 + 5 = 8
    

    완전한 예제: 두 수의 합과 차

    c
    #include <stdio.h>
    
    int main() {
        int a, b;
    
        printf("첫 번째 수: ");
        scanf("%d", &a);
    
        printf("두 번째 수: ");
        scanf("%d", &b);
    
        printf("%d + %d = %d\n", a, b, a + b);
        printf("%d - %d = %d\n", a, b, a - b);
    
        return 0;
    }

    실행 예시:

    text
    첫 번째 수: 10
    두 번째 수: 3
    10 + 3 = 13
    10 - 3 = 7
    

    printf와 scanf 비교

    printfscanf
    역할화면에 출력키보드에서 입력
    서식 지정자%d, %f, %c, %s 사용%d, %f, %c, %s 사용
    변수 앞에 &필요 없음필요함

    자주 하는 실수

    & 빼먹기

    c
    int num;
    scanf("%d", num);   // 위험! 프로그램이 이상하게 동작해요
    scanf("%d", &num);  // 올바른 방법

    선언 없이 사용하기

    c
    scanf("%d", &num);  // num을 먼저 선언해야 해요
    int num;
    scanf("%d", &num);  // 선언 후 사용

    정리

    • printf로 화면에 출력할 때는 서식 지정자(%d, %f, %c, %s)로 값의 형태를 지정해요
    • %5d, %-5d 처럼 출력 폭과 정렬도 지정할 수 있어요
    • scanf("%d", &변수) — 정수 입력
    • 변수 앞에 &를 꼭 붙여야 해요
    • 여러 값: scanf("%d %d", &a, &b)
    • 값을 담으려면 먼저 변수를 선언해야 해요 (int 이름;)

    다음 레슨 변수와 자료형에서 int 외에 소수(float), 문자(char) 등 다양한 종류의 변수를 배워요!

    코드를 직접 실행해보고 싶나요?

    로그인하면 코드 에디터를 사용하고 진도를 저장할 수 있어요.