C/Chapter02. main, printf, scanf, 변수

lullaby ·2025년 10월 1일

C언어

목록 보기
2/10
post-thumbnail

1. 핵심 개념 정리

1.1 C 프로그램의 기본 구성 요소

프로그램 구조

  • C 프로그램은 main 함수를 반드시 포함해야 함
  • 프로그램의 진입점(entry point)으로 운영체제가 자동으로 호출
  • main 함수가 없거나 여러 개인 프로그램은 잘못된 프로그램

main 함수의 형태

int main(void) {
    // 문장들
    return 0;
}

또는

void main(void) {
    // 문장들
}

주석(Comments)

  • 코드에 대한 설명을 추가하거나 코드 일부를 컴파일하지 않게 함
  • 두 가지 방식:
    • /* 주석 내용 */ - 여러 줄 주석
    • // 주석 내용 - 한 줄 주석 (C99부터 추가)

문장(Statement)

  • 함수를 구성하는 기본 단위
  • 모든 문장은 세미콜론(;)으로 끝남
  • 종류: 선언문, 입력문, 출력문, 조건문, 반복문 등

들여쓰기(Indentation)

  • 같은 블록에 속한 문장들을 들여쓰기 하여 가독성 향상
  • 코드의 구조를 시각적으로 표현

1.2 표준 라이브러리와 헤더 파일

표준 라이브러리

  • 기본적으로 제공되는 함수들의 모음
  • 파일 입출력, 문자열 조작, 수학 계산 등 다양한 기능 제공

헤더 파일

  • 라이브러리 함수에 대한 정보(함수명, 리턴형, 매개변수)를 제공
  • 확장자: .h
  • 사용 방법: #include <헤더파일명>
  • 주요 헤더 파일:
    • stdio.h: 표준 입출력 함수 (printf, scanf 등)

1.3 입출력 함수

printf 함수

  • 형식화된 출력을 위한 함수
  • 기본 구문: printf("형식 문자열", 값1, 값2, ...);
  • 주요 서식 지정자:
    • %d: 10진수 정수
    • %x, %X: 16진수 정수
    • %f, %F: 부동소수점 실수
    • %e, %E: 지수 표기법 실수
    • %c: 문자
  • 문자 폭과 정밀도 지정:
    • %숫자d: 숫자 만큼의 문자 폭에 맞춰 오른쪽 정렬
    • %-숫자d: 숫자 만큼의 문자 폭에 맞춰 왼쪽 정렬
    • %.숫자f: 소수점 이하 자릿수 지정

scanf 함수

  • 키보드로부터 입력을 받는 함수
  • 기본 구문: scanf("형식 문자열", &변수1, &변수2, ...);
  • 주요 서식 지정자:
    • %d: 10진수 정수 입력
    • %x: 16진수 정수 입력
    • %i: 10진수, 8진수, 16진수 모두 입력 가능
    • %f: float형 실수 입력
    • %c: 문자 입력
  • 변수 앞에 & 연산자 사용 (주소를 전달)
  • 최신 VS에서는 scanf_s 함수 사용 권장

1.4 변수와 데이터 타입

변수 선언 및 사용

  • 형식: 데이터타입 변수명;
  • 변수명 규칙:
    • 영문자, 숫자, 밑줄(_) 사용 가능
    • 첫 글자는 영문자나 밑줄만 가능
    • 중간에 공백 사용 불가
  • 값 대입: 변수명 = 값;

기본 데이터 타입

  • char: 문자 (1바이트)
  • int: 정수 (일반적으로 4바이트)
  • float: 실수 (4바이트)

1.5 오류 수정 및 디버깅

오류 유형

  1. 문법 오류(컴파일 시간 오류)
    • 세미콜론 누락
    • 잘못된 주석 사용
    • 문법에 맞지 않는 코드
  2. 실행 시간 오류
    • 잘못된 메모리 접근
    • 0으로 나누기 등
  3. 논리 오류
    • 의도한 것과 다른 실행 결과

디버깅 기술

  • 중단점(Breakpoint) 설정: F9
  • 한 문장씩 실행: F10(Step Over), F11(Step Into)
  • 디버깅 중지: F5(Go), 또는 디버그 > 디버깅 중지

2. 주요 예제 코드 정리

예제 1: 기본 출력 프로그램

#include <stdio.h>

int main(void) {
    printf("Hello World!\n");
    return 0;
}

예제 2: 변수 사용과 기본 입출력

#include <stdio.h>

int main(void) {
    int num;
    printf("정수를 입력하세요: ");
    scanf("%d", &num);
    printf("입력한 정수는 %d입니다.\n", num);
    return 0;
}

예제 3: 다양한 서식 지정자 사용

#include <stdio.h>

int main(void) {
    int num = 123;
    float fnum = 45.67;
    char ch = 'A';

    printf("정수: %d\n", num);
    printf("16진수: %x\n", num);
    printf("실수: %f\n", fnum);
    printf("실수(소수점 2자리): %.2f\n", fnum);
    printf("문자: %c\n", ch);

    return 0;
}

예제 4: 폭 지정과 정렬

#include <stdio.h>

int main(void) {
    int num1 = 123;
    int num2 = 4567;

    printf("[%6d]\n", num1);    // 오른쪽 정렬, 6자리
    printf("[%-6d]\n", num1);   // 왼쪽 정렬, 6자리
    printf("[%6d]\n", num2);    // 오른쪽 정렬, 6자리
    printf("[%-6d]\n", num2);   // 왼쪽 정렬, 6자리

    return 0;
}

예제 5: 다중 입력 받기

#include <stdio.h>

int main(void) {
    int num1, num2;
    float fnum;

    printf("두 정수와 실수를 입력: ");
    scanf("%d %d %f", &num1, &num2, &fnum);

    printf("첫 번째 정수: %d\n", num1);
    printf("두 번째 정수: %d\n", num2);
    printf("실수: %.2f\n", fnum);

    return 0;
}

0개의 댓글