Chapter4. C언어 : only 실습 모드

2026. 4. 15. 16:26·지식 아카이브/C언어


  안녕하세요! 이번 글에서는 실습만 해보도록 하겠습니다! 저번 글에서 했던 것 처럼 우선 Visual Studio를 실행하신 이후에 실습 진행하면 될 것 같습니다.

색깔이 보란 색인 것이 Visual Studio입니다! 파란 색인 Visual Code와는 엄연히 다릅니다!

∨ 기본 세팅

  저번 장에서 배운 것처럼 코드에 기본적으로 필요한 코드를 준비해주시길 바랍니다! 그럼 준비되셨나요?

#include <stdio.h>

int main(void) {

	return 0;
}

 

∨ 계산기 만들어보기

  두 개의 수치 데이터를 저장한 이후에, 두 수치 데이터의 덧셈, 뺄셈을 수행하는 계산기를 만들어 보겠습니다!

#include <stdio.h>

int main(void) {
	// 변수 x, y를 사용하겠다는 의미
	int x;
	int y;
	
	// x에 5, y에 10을 넣는다.
	x = 5;
	y = 10;

	int add_result = x + y;
	int sub_result = x - y;

	printf("add_result : %d, sub_result : %d", add_result, sub_result);
	return 0;
}

 

  두 개의 수치 데이터를 "저장"한다고 하였기 때문에 데이터를 저장하는 변수가 필요함을 알 수 있습니다. 이 때 변수를 사용하겠다는 선언을 해야 합니다. int x; 와 int y;는 두 개의 변수를 선언하는 코드입니다. 선언이란 사용을 알리는 신호 같은 것입니다. 이때 int는 저장할 데이터가 정수형 데이터를 의미합니다. 정리하자면 "int x;는 정수 데이터를 저장하는 변수 x를 사용하겠다고 선언합니다"라는 의미입니다. 참고로 정수란 -5, -2, 0, 3 등의 소수점이 없는 값을 의미합니다. 이번 시간에는 정수 데이터만 다뤄보도록 하겠습니다.

 

  여기서 x는 변수의 이름입니다. 꼭 x가 아니라 X나 number, variable 등 다양한 영어 이름으로 지을 수 있습니다. 한글은 사용할 수 없고 대신 특수문자 _를 사용할 수 있습니다. 예를 들면, 이 코드 아랫줄에 add_result 처럼 말이죠. 이때 언더바(_) 이외의 특수 문자나 공백을 포함한 변수명은 허용되지 않습니다. K&J이나 first name과 같은 변수명은 되지 않습니다.

 

  각 단어 간의 공백은 최소 한 칸이고 몇 칸을 띄어도 문제가 생기지 않습니다. 따라서 아래와 같이 int와 변수명 사이, 변수명과 세미콜론 ; 사이에 여러 공백을 포함해도 문법적으로는 오류가 없는 코드입니다.

int x; 
 int   y ;

 

  이처럼 변수를 선언했다면 그 변수를 사용할 수 있게 됩니다. 이제 이 변수에 값을 저장할 수 있는데, x = 5; 코드는 x에 정수 값 5을 저장하는 코드입니다. 변수를 상자처럼 생각할 수 있고, x = 5; 이 코드는 x라는 상자에 5라는 데이터를 저장한다고 생각할 수 있습니다.

위 이미지는 5 대신 2 데이터를 변수에 담는 이미지이다.

 

  int add_result = x + y; 이 코드는 아래와 같습니다.

int add_result; // add_result 변수 선언! 이 변수는 정수 데이터를 저장함.
add_result = x + y; // add_result 변수에 x와 y를 더한 값을 저장함.

 

  하지만 int add_result = x + y; 처럼 선언과 값을 저장하는 동작을 한 줄로 합칠 수 있습니다. 즉, x, y 변수도 다음처럼 선언과 동시에 값을 저장하는 동작을 합칠 수 있습니다. 참고로 이때도 단어 간에 공백을 몇 개를 넣어도 상관없습니다.

int x = 5; // 선언과 동시에 값 저장
int y = 10;

 

결과적으로 아래의 printf()문이 실행됩니다.

printf("add_result : %d, sub_result : %d", add_result, sub_result);

 

  변수의 값을 출력하고 싶다면 %d를 사용하면 됩니다. 그리고 뒤에 변수명을 써주면 됩니다. 그러면 %d에 변수의 값이 들어가게 되어 결과적으로 15, -5가 %d에 들어간 후 다음과 같이 출력하게 됩니다. 

add_result : 15, sub_result : -5

 

add_result와 sub_result의 결과를 다른 줄에 출력해보겠습니다. 즉, 다음과 같이 출력해보겠다는 말이죠.

add_result : 15
sub_result : -5

 

이를 위해 코드를 잠시 수정해보겠습니다.

#include <stdio.h>

int main(void) {
	// 변수 x, y를 선언하고 5, 10을 저장한다.
	int x = 10;
	int y = 5;

	int add_result = x + y;
	int sub_result = x - y;

	// printf문을 두 개로 나누었다.
	printf("add_result : %d", add_result);
	printf("sub_result : %d", sub_result);
	return 0;
}

 

  혹시 실행 결과가 어떻게 나오던가요? 두 줄로 나뉘어 나오던가요? 아마 의도대로 결과가 출력되지 않았을 겁니다.

add_result : 15sub_result : 5

 

  그 이유는 간단합니다. printf() 함수는 자동으로 줄바꿈을 해주지 않고, 그저 내용을 이어서 출력하기 때문입니다. 줄을 바꾸기 위해서는 별도로 줄바꿈을 나타내는 특수 문자를 사용해야 합니다. 이때 사용하는 문자가 \n이며, 줄바꿈(엔터)을 의미합니다. 다음과 같이 printf 코드 부분을 수정해봅시다. \을 백슬래시라고 하는데, 우리나라에선 엔터(Enter) 위, 그리고 Backspcae 아래 키를 누르면 됩니다. ₩가 표시된 키입니다.

	// printf문을 두 개로 나누었다 + \n 또한 추가하였다.
	printf("add_result : %d\n", add_result);
	printf("sub_result : %d", sub_result);

 

  첫 번째 printf 문에 추가된 \n이 보이시나요. 즉 문자열 "add_result : %d\n"은 "add_result : %d + 엔터" 와 같습니다. 이제 결과를 보겠습니다.

add_result : 15
sub_result : 5

 

 

줄바꿈을 여러 번 하고 싶다면 엔터를 여러 번 치면 되겠죠. 그렇다면 줄바꿈(엔터) 특수문자 \n을 여러개 써주면 됩니다.

	// printf문을 두 개로 나누었다 + \n 또한 추가하였다.
	printf("add_result : %d\n\n\n", add_result);
	printf("sub_result : %d", sub_result);

 

최종적으로 계산기 프로그램은 아래와 같습니다.

#include <stdio.h>

int main(void) {
	// 변수 x, y를 선언하고 5, 10을 저장한다.
	int x = 10;
	int y = 5;

	int add_result = x + y;
	int sub_result = x - y;

	// printf문을 두 개로 나누었다.
	printf("add_result : %d\n", add_result);
	printf("sub_result : %d", sub_result);
	return 0;
}

 

∨ 입력받는 계산기

 

  음 근데 뭔가 아쉽습니다. x와 y의 값을 바꿀려면 코드에 손을 대야 하거든요. 프로그램을 실행한 후 x와 y을 값을 정해줄 순 없을까요? 물론, 가능합니다. 입력 함수를 사용하면 됩니다. 입력 함수는 대표적으로 scanf()가 있습니다. scanf()는 사용자가 값을 입력하여 변수에 저장해주는 기능을 가지고 있습니다. 아래 코드를 붙여 실행시켜 보겠습니다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
	// 변수 x, y를 선언만 한다.
	int x;
	int y;

	// x값을 입력받습니다.
	scanf("%d", &x);
    	// y값을 입력받습니다.
	scanf("%d", &y);

	int add_result = x + y;
	int sub_result = x - y;

	printf("add_result : %d\n", add_result);
	printf("sub_result : %d", sub_result);
	return 0;
}

 

 

아래와 같은 실행 결과를 보실 수 있습니다. 아래 실행결과를 보면, 위에서부터 5, 3은 제가 입력한 값입니다.

5
3
add_result : 8
sub_result : 2

 

 

이제 위 코드를 하나씩 보겠습니다.

#define _CRT_SECURE_NO_WARNINGS

 

  scanf 함수는 사용자로부터 입력을 받아 변수에 저장하는 함수입니다. 하지만 보안상의 이유로 Visual Studio에서는 scanf 함수를 그대로 사용하면 경고 메시지가 발생합니다. 경고가 생기는 것을 막기 위해서 #define _CRT_SECURE_NO_WARNINGS라는 코드를 사용합니다. 세부적인 내용은 아래에서 이어 설명하겠습니다.

 

∨scanf 에러없이 사용하는 방법


  이를 해결하기 위해 #define _CRT_SECURE_NO_WARNINGS를 코드 상단에 작성하면, 해당 경고를 무시하고 scanf 함수를 사용할 수 있습니다. 이 방법 외에도, 이러한 문제를 해결하는 scanf 함수를 사용하는 방법은 3가지가 있습니다.

  1. 아까 설명한 것과 같이 #define _CRT_SECURE_NO_WARNINGS을 상단에 작성한다.
  2. scanf 함수 대신 scanf_s 함수를 사용한다.
  3. 프로젝트 설정에서 SDL 검사를 "아니요"로 설정한다.

1번 방법은 위에서 설명드렸으니 2번 방법부터 알아보겠습니다. 이 방법은 기존의 scanf 함수를 scanf_s 함수로 바꿔주면 됩니다. 

#include <stdio.h>

int main(void) {
	// 변수 x, y를 선언만 한다.
	int x;
	int y;

	// scanf 대신 scanf_s 를 사용한다.
	scanf_s("%d", &x);
	scanf_s("%d", &y);

	int add_result = x + y;
	int sub_result = x - y;

	printf("add_result : %d\n", add_result);
	printf("sub_result : %d", sub_result);
	return 0;
}

 

마지막 3번째 방법은 프로젝트 설정에서 SDL검사를 "아니요"로 설정하는 방법입니다. 아래의 과정대로 해보시길 바랍니다.

 

  Visual Studio 상단에 [프로젝트]를 좌클릭합니다. 그럼 프로젝트 아래로 여러 메뉴 나옵니다. 이 중에서 가장 아래에 있는 [test1 속성(P)]를 클릭합니다. 여기서 속성 앞의 "test1"은 저의 프로젝트 이름입니다. 여러분들의 메뉴 이름은 여러분 프로젝트 이름으로 표시됩니다.

 

그럼 아래와 같은 창이 뜨게 됩니다. 여기서 C/C++를 눌러보세요.

 

여기서 SDL 검사 메뉴가 나옵니다. 여기에 아니요를 적는게 아니라 "SDL 검사"를 클릭하면 설정 값이 달라지게 됩니다. 계속 클릭하여 "아니요"로 값을 설정해봅시다.

 

그 후 [확인]을 눌러주면 설정이 완료됩니다.

 

이제 아래 코드를 실행해보겠습니다. 그럼 이제 에러없이 실행됩니다.

#include <stdio.h>

int main(void) {
	// 변수 x, y를 선언만 한다.
	int x;
	int y;

	// scanf_s가 아니어도 잘 실행된다.
	scanf("%d", &x);
	scanf("%d", &y);

	int add_result = x + y;
	int sub_result = x - y;

	printf("add_result : %d\n", add_result);
	printf("sub_result : %d", sub_result);
	return 0;
}

 

∨ scanf 함수

  이제 scanf 함수에 대해 알아보겠습니다. scanf의 형식은 아래와 같습니다.

scanf("%d", &변수);

 

  여기서 따옴표 " 내부에 %d를 써준 이후, 뒤에 %d 개수대로 변수를 써주면 사용자의 입력에서 변수를 %d에 넣어 저장합니다. 이때 변수명 앞에 &를 써주어야 하는데, 이는 변수가 있는 공간을 의미합니다. scanf 함수는 입력을 받아 변수가 있는 공간에 값을 넣어주는 것인데, 이는 아직 모르셔도 됩니다. 여러 개의 변수를 입력받으려면 아래와 같이 사용하면 됩니다.

scanf("%d %d", &변수1, &변수2);

 

  scanf 동작 방식을 간략히 설명드리겠습니다. 일단 이해를 돕기 위해 위 코드를 잠시 바꿔 다시 실행해보겠습니다. 눈으로만 보지 말고 코드를 보고 따라 해보시는 것을 추천합니다,

#include <stdio.h>

int main(void) {
	// 변수 x, y를 선언만 한다.
	int x;
	int y;

	// printf문으로 더 이쁘게 꾸며본다. + 추가한 코드!
	printf("x와 y를 입력하세요");

	// scanf로 한 번에 x, y를 입력 받는다. + 수정한 코드!
	scanf("%d %d", &x, &y);

	int add_result = x + y;
	int sub_result = x - y;

	printf("add_result : %d\n", add_result);
	printf("sub_result : %d", sub_result);
	return 0;
}

 

  저희가 처음에 실행했던 코드에서 scanf 이전에 printf 함수를 추가하였습니다. 두 개 였던 scanf를 하나로 합쳤습니다. 이외의 코드는 그대로입니다.

x와 y를 입력하세요20 10
add_result : 30
sub_result : 10

 

  함수 printf("x와 y를 입력하세요");가 실행된 후, scanf 함수가 실행되면, scanf 함수는 사용자의 입력을 기다립니다. 여기서 입력을 넣어 줄 수 있습니다. 여기선 "20 10"이 우리가 입력해준 값입니다.

// scanf로 한 번에 x, y를 입력 받는다.
scanf("%d %d", &x, &y);

 

  scanf 함수는 우리가 입력한 값에서 숫자를 가져와 x와 y에 저장합니다. scanf 함수에서 "%d %d"는 입력 형식입니다. 즉, 우리가 입력한 값을 "숫자 숫자"로 인식한다는 의미입니다. 이후 여기서 숫자1와 숫자2를 각각 변수 x, 변수 y에 저장합니다. 

scanf("(%d,%d)", &x, &y);

 

  그렇다면 위의 경우는 어떤 뜻인지 알 것 같나요? 바로 입력 형식이 "(숫자,숫자)"라는 것입니다. 저희는 입력을 할 때 (숫자,숫자) 형식으로 입력해주어야 합니다.

x와 y를 입력하세요(15,15)
add_result : 30
sub_result : 0

 

  입력을 할 때는 띄어쓰기(공백)도 큰 영향을 끼칩니다. 따라서 공백까지 신경 써서 입력 형식을 지켜 주어야 하고, 만약 입력 형식에 맞추지 않고 입력을 하면 의도대로 입력되지 않습니다. 아래의 그림을 보면 scanf 함수가 어떻게 작동하는지 이해하기 쉬우실 겁니다.

 

 

∨ 퀴즈

이제 혼자서 프로그램을 만들어 봅시다. 위의 코드를 참고하셔도 됩니다.

 

Q1. 3개의 입력을 받아 3개의 합을 구하고 출력하는 프로그램을 만들어보세요.

 

Q2. 2개의 

 

  

 

  

 

∨ 정리

 

 

 

  지금까지 C언어 프로그래밍을 위한 세팅과, 프로그램에 필요한 기본 코드까지 세팅 완료한 후, 실제로 작은 프로그램을 작성해보았습니다. 다음부터는 C언어의 문법을 하나씩 깊게 공부해보도록 하겠습니다. 

 

읽어 주셔서 감사합니다!

 

 

'지식 아카이브 > C언어' 카테고리의 다른 글

Chapter6. C언어 : 변수의 자료형, unsigned vs signed  (0) 2026.04.15
Chapter5. C언어 : 변수의 선언, 대입, 초기화, 참조.  (0) 2026.04.15
Chapter3. C언어 : 코드에 대한 기본 구조. 주석  (0) 2026.04.15
Chapter2. C언어 : 프로그램이 만들어지는 과정. 컴파일과 링킹  (0) 2026.04.15
Chapter1. C언어 : Visual Studio 환경 설정하기, 비쥬얼 스튜디오.  (0) 2026.04.01
'지식 아카이브/C언어' 카테고리의 다른 글
  • Chapter6. C언어 : 변수의 자료형, unsigned vs signed
  • Chapter5. C언어 : 변수의 선언, 대입, 초기화, 참조.
  • Chapter3. C언어 : 코드에 대한 기본 구조. 주석
  • Chapter2. C언어 : 프로그램이 만들어지는 과정. 컴파일과 링킹
검정부기
검정부기
안녕하세여. 한성대학교 AI응용학과에 재학중인 대학생입니다!! 공부 내용 개인적으로 정리하고, 도움이 될만한 내용은 공유하기 위해 개인적으로 만든 블로그입니다. 댓글 아무거나 쓰셔도 상관없습니다. 무엇이든 질문하셔도 됩니다, 틀린 질문도 괜찮습니다, 성실히 답변해드리겠습니다!
  • 검정부기
    검정부기
    검정부기
  • 전체
    오늘
    어제
    • 분류 전체보기 (55)
      • 강의 아카이브 (11)
        • Python for AI (1)
        • 선형대수 (2)
        • 컴퓨터 프로그래밍 (4)
        • 웹프로그래밍기초 (2)
        • 확률 및 통계 (2)
        • 사회데이터의 이해 (0)
        • 생활 속의 인공지능 (0)
        • 생활 속의 빅데이터 (0)
      • 지식 아카이브 (12)
        • 파이썬 (1)
        • C언어 (11)
        • 웹프로그래밍 (0)
        • 확률 통계 (0)
        • 선형대수 (0)
        • git & github (0)
        • 리눅스 (0)
        • 컴퓨터 구조 (0)
        • 운영체제 (0)
        • 네트워크 (0)
      • Daily 아카이브 (29)
        • 공부일지 (22)
        • IT 에세이 (0)
        • 프로젝트 (1)
        • 아무거나 쓰는 곳 (4)
        • 연습 일지 (0)
        • 일기 (2)
      • 알쓸 아카이브 (2)
        • 군대 (IT) (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 블로그 사용법
    • 안녕하세용. 반갑습니다.
  • 인기 글

  • 태그

    ai학과
    수업정보
    파이썬
    ai
    강의
    육군
    서류심사
    시험대비
    정보보호병
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
검정부기
Chapter4. C언어 : only 실습 모드
상단으로

티스토리툴바