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 : 조건문