레슨 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" |
#include <stdio.h>
int main() {
printf("나이: %d살\n", 13);
printf("점수: %d점\n", 95);
printf("온도: %d도\n", -5);
return 0;
}실행 결과:
나이: 13살
점수: 95점
온도: -5도
#include <stdio.h>
int main() {
printf("원주율: %f\n", 3.14);
printf("키: %f cm\n", 165.5);
return 0;
}실행 결과:
원주율: 3.140000
키: 165.500000
%f는 기본적으로 소수점 아래 6자리까지 출력해요.
#include <stdio.h>
int main() {
printf("원주율: %.2f\n", 3.14159);
printf("점수: %.1f점\n", 87.6);
return 0;
}실행 결과:
원주율: 3.14
점수: 87.6점
%.2f는 소수점 아래 2자리까지만 출력해요.
#include <stdio.h>
int main() {
printf("성적: %c\n", 'A');
printf("알파벳: %c\n", 'z');
return 0;
}실행 결과:
성적: A
알파벳: z
#include <stdio.h>
int main() {
printf("이름: %s\n", "홍길동");
printf("학교: %s\n", "한국 중학교");
return 0;
}실행 결과:
이름: 홍길동
학교: 한국 중학교
#include <stdio.h>
int main() {
printf("%d년 %d월 %d일\n", 2025, 4, 17);
printf("이름: %s, 나이: %d살\n", "홍길동", 13);
return 0;
}실행 결과:
2025년 4월 17일
이름: 홍길동, 나이: 13살
숫자를 일정한 칸 수에 맞춰 출력할 수 있어요.
#include <stdio.h>
int main() {
printf("%5d\n", 1);
printf("%5d\n", 23);
printf("%5d\n", 456);
return 0;
}실행 결과:
1
23
456
숫자가 5칸에 맞게 오른쪽으로 정렬돼요.
#include <stdio.h>
int main() {
printf("%-5d|\n", 1);
printf("%-5d|\n", 23);
printf("%-5d|\n", 456);
return 0;
}실행 결과:
1 |
23 |
456 |
-를 붙이면 왼쪽으로 정렬돼요.
입력받은 값을 저장할 그릇이 필요해요. 이 그릇을 **변수(variable)**라고 불러요.
int num; // 정수를 담을 변수 선언변수에 대한 자세한 내용은 다음 레슨 변수와 자료형에서 배워요. 지금은
int 이름;으로 정수를 담는 그릇을 만든다고 기억하세요!
#include <stdio.h>
int main() {
int num;
printf("숫자를 입력하세요: ");
scanf("%d", &num);
printf("입력한 숫자: %d\n", num);
return 0;
}실행 예시 (키보드로 42 입력):
숫자를 입력하세요: 42
입력한 숫자: 42
scanf도 printf와 똑같은 서식 지정자(%d, %f, %c, %s)를 사용해서 "어떤 형태의 값을 입력받을지" 알려줘요.
scanf에서 변수 앞에 &를 꼭 붙여야 해요.
scanf("%d", &num); // 올바름
scanf("%d", num); // 틀림&는 **"이 변수가 메모리에 저장된 위치"**를 알려주는 기호예요.
마치 우편 주소처럼, "이 주소의 그릇에 값을 넣어줘!"라고 알려주는 거예요.
나중에 포인터 단원에서 더 자세히 배울 거예요. 지금은 "scanf를 쓸 때는 &를 붙인다"고 기억하세요!
#include <stdio.h>
int main() {
int age;
printf("나이를 입력하세요: ");
scanf("%d", &age);
printf("나는 %d살이에요.\n", age);
return 0;
}실행 예시 (13 입력):
나이를 입력하세요: 13
나는 13살이에요.
여러 변수를 한 번에 입력받을 수 있어요. 입력할 때는 빈칸(space) 또는 엔터로 구분해요.
#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 입력):
두 정수를 입력하세요: 3 5
3 + 5 = 8
#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;
}실행 예시:
첫 번째 수: 10
두 번째 수: 3
10 + 3 = 13
10 - 3 = 7
| printf | scanf | |
|---|---|---|
| 역할 | 화면에 출력 | 키보드에서 입력 |
| 서식 지정자 | %d, %f, %c, %s 사용 | %d, %f, %c, %s 사용 |
| 변수 앞에 & | 필요 없음 | 필요함 |
int num;
scanf("%d", num); // 위험! 프로그램이 이상하게 동작해요
scanf("%d", &num); // 올바른 방법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) 등 다양한 종류의 변수를 배워요!