Phase 1 · C언어 입문

입력과 출력

지금까지는 코드 안에 직접 데이터를 넣었습니다. 이제부터는 사용자가 키보드로 값을 직접 입력할 수 있도록 만들어 봅니다. printf()와 scanf()를 통해 진정한 상호작용 프로그램의 기초를 다집니다.

예상 학습 시간 : 100분
난이도 : ★★☆☆☆ 기초
사전 지식 : Step 03 연산자와 계산
다음 단계 : 조건문
01

학습 목표

이번 단계를 완료하면 다음 내용을 수행할 수 있습니다.

1
표준 입력과 출력의 개념을 이해한다.
2
printf()를 이용하여 데이터를 출력한다.
3
scanf()를 이용하여 데이터를 입력받는다.
4
정수, 실수, 문자를 입력받을 수 있다.
5
자료형에 맞는 형식 지정자를 사용할 수 있다.
6
한 번에 여러 개의 데이터를 입력받을 수 있다.
7
변수의 주소와 & 연산자의 의미를 이해한다.
8
입력받은 데이터를 이용하여 대화형 프로그램을 만든다.
02

입력과 출력이란?

대부분의 프로그램은 아래와 같은 기본 흐름으로 동작합니다.

사용자 데이터 입력 (scanf)
↓
프로그램 연산 처리
↓
결과 출력 (printf)
03

출력 함수 printf()

C언어에서 화면에 데이터를 출력할 때는 printf() 함수를 사용합니다. 줄을 바꿀 때는 \n을 사용합니다.

⚙️ C
printf("안녕하세요.\n");
printf("C언어를 공부합니다.\n");

변수에 저장된 값을 출력할 수도 있습니다.

⚙️ C
#include <stdio.h>
int main() {
    int age = 20;
    printf("나이 : %d\n", age);
    return 0;
}
04

주요 출력 형식 지정자

자료형 형식 지정자 예
int%d100
char%c'A'
float%f3.14
double%lf3.141592
문자열%s"Hello"
05

사용자 입력 scanf()

프로그램이 사용자에게 키보드로 데이터를 입력받도록 만들어 보겠습니다.

⚙️ C
#include <stdio.h>
int main() {
    int age;
    printf("나이를 입력하세요 : ");
    scanf("%d", &age);
    
    printf("당신의 나이는 %d살입니다.\n", age);
    return 0;
}
▶ 실행 결과
나이를 입력하세요 : 25
당신의 나이는 25살입니다.
06

주소 연산자 &의 의미

& 연산자는 왜 쓸까요?

scanf("%d", &age);에서 &는 주소 연산자입니다.

scanf() 함수가 키보드로부터 값을 가져온 뒤, 그 값을 변수에 집어넣으려면 "그 변수가 메모리의 어디에 있는지(주소)"를 알아야 합니다. &age는 "age 변수가 있는 메모리 방 번호"를 알려주는 역할을 합니다.

07

정수, 실수, 문자 입력하기

실수(double) 입력

⚙️ C
double height;
printf("키를 입력하세요 : ");
scanf("%lf", &height);

문자(char) 입력

⚙️ C
char grade;
printf("등급을 입력하세요 : ");
scanf(" %c", &grade);
문자를 입력받을 때의 팁

scanf(" %c", &grade); 처럼 %c 앞에 공백 한 칸을 두세요. 이렇게 하면 이전에 엔터(Enter)를 치면서 남은 줄바꿈 문자나 공백을 무시하고 실제 문자만 정확히 받을 수 있습니다.

08

여러 개의 데이터 입력받기

한 번의 scanf()로 여러 값을 입력받을 수도 있습니다.

⚙️ C
int age;
double height;

printf("나이와 키를 입력하세요 : ");
scanf("%d %lf", &age, &height);

사용자는 25 175.5 처럼 공백을 두고 두 값을 입력하면 됩니다.

09

입력받은 데이터 계산하기

입력과 연산을 결합하면 훨씬 재미있는 대화형 프로그램이 만들어집니다.

⚙️ C
#include <stdio.h>
int main() {
    int a, b, result;
    
    printf("첫 번째 숫자 : ");
    scanf("%d", &a);
    printf("두 번째 숫자 : ");
    scanf("%d", &b);

    result = a + b;
    printf("두 숫자의 합 : %d\n", result);
    return 0;
}
10

실습 문제

🧪
Practice 01
자기소개 프로그램

사용자로부터 나이, 키, 몸무게를 입력받아 출력합니다.

⚙️ C
#include <stdio.h>
int main() {
    int age;
    double height, weight;

    printf("나이를 입력하세요 : ");
    scanf("%d", &age);
    printf("키를 입력하세요(cm) : ");
    scanf("%lf", &height);
    printf("몸무게를 입력하세요(kg) : ");
    scanf("%lf", &weight);

    printf("\n====================\n       나의 정보\n====================\n");
    printf("나이 : %d살\n", age);
    printf("키 : %.1lfcm\n", height);
    printf("몸무게 : %.1lfkg\n", weight);
    return 0;
}
🧪
Practice 02
평균 성적 계산기

세 과목의 점수를 입력받아 평균을 계산합니다.

⚙️ C
#include <stdio.h>
int main() {
    int korean, english, math;
    double average;

    printf("국어 점수 : "); scanf("%d", &korean);
    printf("영어 점수 : "); scanf("%d", &english);
    printf("수학 점수 : "); scanf("%d", &math);

    average = (korean + english + math) / 3.0;

    printf("\n===== 성적 결과 =====\n");
    printf("평균 : %.2lf점\n", average);
    return 0;
}
11

문자열 입력의 기초

문자열은 배열을 이용합니다. 문자열 입력에는 &를 쓰지 않습니다! (배열 이름 자체가 주소이기 때문인데, 나중에 자세히 배웁니다.)

⚙️ C
char name[20]; // 최대 19자의 문자를 담을 수 있는 공간

printf("이름을 입력하세요 : ");
scanf("%19s", name); // &를 붙이지 않습니다!

printf("안녕하세요, %s님!\n", name);
12

scanf()의 반환값

scanf()는 입력에 성공한 항목의 개수를 반환합니다. 이를 이용해 정상적인 입력인지 검사할 수 있습니다.

⚙️ C
int result = scanf("%d %d", &a, &b);
// 2개의 숫자가 정상적으로 입력되면 result는 2가 됩니다.
13

⚠️ 초보자가 자주 하는 실수

실수 1. & 기호를 빼먹는 경우

scanf("%d", age); (X) → scanf("%d", &age); (O)
프로그램이 강제 종료되거나 엉뚱한 결과가 나올 수 있습니다.

실수 2. 자료형과 형식 지정자 불일치

double 변수를 만들고 %d로 받는 경우처럼 불일치하면 안 됩니다.
double은 반드시 %lf로 받아야 합니다.

실수 3. scanf 안에 \n 넣기

scanf("%d\n", &age); (X) 처럼 끝에 \n을 넣으면 안 됩니다. 입력이 끝난 것으로 인식하지 못해 멈춰버리는 현상이 발생합니다.

14

STEP 04 최종 프로젝트

🚀 Mission

나만의 생활 계산 프로그램

사용자로부터 나이, 키, 몸무게, 3과목 성적을 모두 입력받아 결과를 통합해서 출력하는 프로그램을 만들어 보세요!

💡 출력 예시
================================
       생활 계산 프로그램
================================
나이를 입력하세요: 25
키를 입력하세요(cm): 175.5
(등등 데이터를 모두 입력받음)
...
================================
입력된 정보 결과
================================
나이: 25세
키: 175.5cm
총점: 270점
평균: 90.0점
...
15

STEP 04 완료 체크리스트

printf()를 사용하여 화면에 텍스트와 변수값을 출력할 수 있다.
scanf()를 사용하여 키보드 입력을 받을 수 있다.
%d, %f, %lf, %c, %s 형식 지정자를 구분하여 사용할 수 있다.
scanf()에서 & 연산자의 의미와 중요성을 이해한다.
한 번에 2개 이상의 값을 입력받을 수 있다.
사용자에게 값을 입력받아 사칙연산을 수행하고 결과를 출력할 수 있다.
프로그램의 3단계 구조 완성

이제 여러분은 입력 (scanf) → 처리 (연산) → 출력 (printf) 이라는 모든 프로그램의 근간이 되는 3단계 구조를 자유롭게 다룰 수 있게 되었습니다!

이전 : Step 03 Step 05 : 조건문