디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

c언어 기초 문법 정리

자갤러(61.253) 2025.07.10 11:23:41
조회 51 추천 0 댓글 0

# 정처기 코딩 기본 시리즈 2강: C언어 기초 문법 정리

## 📋 C언어 기본 구조

### 기본 템플릿
```c
#include <stdio.h>

int main() {
    // 코드 작성 영역
    return 0;
}
```

### 필수 헤더 파일
```c
#include <stdio.h>    // 입출력 함수
#include <stdlib.h>   // 일반 유틸리티 함수
#include <string.h>   // 문자열 처리 함수
#include <math.h>     // 수학 함수
```

## 🎯 변수와 자료형

### 기본 자료형
```c
// 정수형
int age = 25;           // 4바이트
short height = 180;     // 2바이트
long population = 50000000L; // 8바이트

// 실수형
float score = 85.5f;    // 4바이트
double average = 92.75; // 8바이트

// 문자형
char grade = 'A';       // 1바이트
char name[20] = "홍길동"; // 문자열
```

### 변수 선언 규칙
- 첫 글자는 **영문자 또는 _**
- 숫자는 **두 번째 글자부터** 가능
- **예약어 사용 불가**
- **대소문자 구분**

## 🔧 연산자

### 산술 연산자
```c
int a = 10, b = 3;
printf("%d\n", a + b);  // 13 (덧셈)
printf("%d\n", a - b);  // 7  (뺄셈)
printf("%d\n", a * b);  // 30 (곱셈)
printf("%d\n", a / b);  // 3  (나눗셈)
printf("%d\n", a % b);  // 1  (나머지)
```

### 관계 연산자
```c
int x = 5, y = 3;
printf("%d\n", x > y);   // 1 (참)
printf("%d\n", x < y);   // 0 (거짓)
printf("%d\n", x == y);  // 0 (거짓)
printf("%d\n", x != y);  // 1 (참)
```

### 논리 연산자
```c
int a = 1, b = 0;
printf("%d\n", a && b);  // 0 (AND)
printf("%d\n", a || b);  // 1 (OR)
printf("%d\n", !a);      // 0 (NOT)
```

## 🎮 입출력 함수

### 기본 입출력
```c
// 정수 입력
int num;
scanf("%d", &num);
printf("입력된 수: %d\n", num);

// 실수 입력
float f;
scanf("%f", &f);
printf("입력된 실수: %.2f\n", f);

// 문자 입력
char ch;
scanf(" %c", &ch);  // 공백 주의!
printf("입력된 문자: %c\n", ch);
```

### 문자열 입출력
```c
char str[100];

// 문자열 입력 (공백 포함X)
scanf("%s", str);
printf("입력된 문자열: %s\n", str);

// 문자열 입력 (공백 포함O)
gets(str);           // 위험한 함수
fgets(str, 100, stdin); // 안전한 함수
```

## 🔄 조건문

### if문
```c
int score = 85;

if (score >= 90) {
    printf("A등급\n");
} else if (score >= 80) {
    printf("B등급\n");
} else if (score >= 70) {
    printf("C등급\n");
} else {
    printf("F등급\n");
}
```

### switch문
```c
char grade = 'B';

switch (grade) {
    case 'A':
        printf("우수\n");
        break;
    case 'B':
        printf("양호\n");
        break;
    case 'C':
        printf("보통\n");
        break;
    default:
        printf("미흡\n");
        break;
}
```

## 🔁 반복문

### for문
```c
// 1부터 10까지 출력
for (int i = 1; i <= 10; i++) {
    printf("%d ", i);
}
printf("\n");

// 배열 순회
int arr[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
    printf("%d ", arr[i]);
}
```

### while문
```c
int i = 1;
while (i <= 10) {
    printf("%d ", i);
    i++;
}
printf("\n");

// 조건이 만족할 때까지 반복
int num;
while (1) {
    scanf("%d", &num);
    if (num == 0) break;
    printf("입력: %d\n", num);
}
```

### do-while문
```c
int choice;
do {
    printf("1. 시작\n2. 종료\n선택: ");
    scanf("%d", &choice);
} while (choice != 1 && choice != 2);
```

## 📊 배열

### 1차원 배열
```c
// 배열 선언 및 초기화
int numbers[5] = {10, 20, 30, 40, 50};
int scores[5] = {0};  // 모든 원소 0으로 초기화

// 배열 원소 접근
printf("첫 번째 원소: %d\n", numbers[0]);
numbers[1] = 25;  // 두 번째 원소 수정

// 배열 크기 계산
int size = sizeof(numbers) / sizeof(numbers[0]);
printf("배열 크기: %d\n", size);
```

### 2차원 배열
```c
// 2차원 배열 선언
int matrix[3][3] = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

// 2차원 배열 순회
for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        printf("%d ", matrix[i][j]);
    }
    printf("\n");
}
```

## 🎯 함수

### 기본 함수 정의
```c
// 함수 선언
int add(int a, int b);

// 함수 정의
int add(int a, int b) {
    return a + b;
}

// 함수 호출
int main() {
    int result = add(5, 3);
    printf("결과: %d\n", result);
    return 0;
}
```

### 다양한 함수 예제
```c
// 반환값 없는 함수
void printMessage() {
    printf("안녕하세요!\n");
}

// 배열을 매개변수로 받는 함수
void printArray(int arr[], int size) {
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

// 재귀 함수
int factorial(int n) {
    if (n <= 1) return 1;
    return n * factorial(n - 1);
}
```

## 🔤 문자열 처리

### 문자열 기본 함수
```c
#include <string.h>

char str1[20] = "Hello";
char str2[20] = "World";
char str3[20];

// 문자열 길이
printf("길이: %d\n", strlen(str1));

// 문자열 복사
strcpy(str3, str1);
printf("복사 결과: %s\n", str3);

// 문자열 연결
strcat(str1, str2);
printf("연결 결과: %s\n", str1);

// 문자열 비교
if (strcmp(str1, str2) == 0) {
    printf("같은 문자열\n");
}
```

## 📍 포인터 기초

### 포인터 선언과 사용
```c
int num = 10;
int *ptr = #  // ptr은 num의 주소를 가리킴

printf("num의 값: %d\n", num);
printf("num의 주소: %p\n", &num);
printf("ptr의 값: %p\n", ptr);
printf("ptr이 가리키는 값: %d\n", *ptr);

// 포인터를 통한 값 변경
*ptr = 20;
printf("변경된 num의 값: %d\n", num);
```

### 배열과 포인터
```c
int arr[5] = {1, 2, 3, 4, 5};
int *p = arr;  // 배열명은 첫 번째 원소의 주소

// 포인터를 이용한 배열 접근
for (int i = 0; i < 5; i++) {
    printf("%d ", *(p + i));  // p[i]와 동일
}
```

## 🚀 실전 문제 해결 패턴

### 1. 입력 처리 패턴
```c
// 여러 개의 정수 입력
int n, arr[100];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
    scanf("%d", &arr[i]);
}
```

### 2. 최댓값/최솟값 찾기
```c
int max = arr[0], min = arr[0];
for (int i = 1; i < n; i++) {
    if (arr[i] > max) max = arr[i];
    if (arr[i] < min) min = arr[i];
}
```

### 3. 합계/평균 계산
```c
int sum = 0;
for (int i = 0; i < n; i++) {
    sum += arr[i];
}
double average = (double)sum / n;
```

## 💡 자주 하는 실수

### 1. 변수 초기화 누락
```c
int sum;  // 초기화 안 함 (위험)
int sum = 0;  // 올바른 초기화
```

### 2. 배열 인덱스 오류
```c
int arr[5];
arr[5] = 10;  // 오류! 인덱스는 0~4
```

### 3. scanf 버퍼 문제
```c
int num;
char ch;
scanf("%d", &num);
scanf(" %c", &ch);  // 공백 필요!
```

## 📝 다음 강의 예고

**3강: Java 기초 문법 정리**
- 클래스와 객체
- 메서드와 생성자
- 상속과 다형성
- 예외 처리

---

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 이번주 설문은 탈모 걱정 없어 보이는 머리숱 금수저 스타는? 운영자 25/07/14 - -
AD 여름특가 최대93%할인! 1위 해커스원격 운영자 25/07/01 - -
1623686 오래앉아서 공부하다가 손등으로 부랄 쓸어봐라 [1] 자갤러(211.195) 17:45 78 2
1623685 오늘 비도 개처럼 처맞고 원청 담당부장도 엿같고 [1] 소좆가즈아(59.17) 17:43 49 0
1623683 5.30일에 법개정 됐다는데 [3] 자갤러(223.39) 17:42 154 0
1623679 산안기 전사들아 자갤러(223.39) 17:32 56 0
1623678 3회 가스기능사 필기 합격률 자갤러(125.190) 17:32 58 0
1623677 산기 여러개 동시에 볼수있음? 자갤러(115.138) 17:31 25 0
1623676 에관기 인강 들어보신분 없나오·? ㅇㅇ(180.83) 17:30 18 0
1623675 소좆실기7개년3회독완료 [5] 소좆가즈아(59.17) 17:28 94 0
1623674 님들 1회 어려웠으면 다음 회차는 당연히 쉬움??? [3] 자갤러(118.220) 17:27 85 0
1623673 전공생인데 공인중개사 ㅎㅋㅅ90일짜리로 해도 될까? 자갤러(59.15) 17:23 25 0
1623672 위산기 올해 1회차 실기 봤는데 반타작 나왔네 [1] ㅇㅇ(106.101) 17:23 122 0
1623671 산안산기 필답 오늘부터 공부 시작한다 [1] ㅇㅇ갤로그로 이동합니다. 17:21 74 0
1623670 위산기 복원 [2] 자갤러(211.235) 17:16 115 0
1623669 대기환경기사 실기 7/18인데 지금 공부하면 합격가능? [2] 대기(106.101) 17:14 76 0
1623667 산안기 합격률 70%이상인 허벌자격증이잖아 [6] ㅇㅇ(218.155) 17:07 178 0
1623665 떨어질걸아는데 공부를해야될까? [3] 자갤러(118.235) 17:01 109 0
1623664 빨리 시험치고 싶다 존나 지겹네 문제만 봐도 자동재생됨 [1] 자갤러(121.176) 16:57 85 0
1623662 0일 전사 시도... [1] J2K(111.118) 16:53 75 0
1623661 호텔경제학 ㅇㅇ(117.111) 16:51 30 0
1623660 수술 범죄의 수법과 배경 ㅇㅇ(121.169) 16:48 19 0
1623659 위산기 질문 [3] 자갤러(58.77) 16:47 88 0
1623658 컴활 학원다니는거 돈낭비야? [4] 자갤러(223.62) 16:43 107 0
1623657 가스기능사 실기 합격률 [2] 자갤러(121.143) 16:43 92 0
1623656 1차측에 버터플라이밸브를 안쓰는 이유가 뭔지아냐? [4] 자갤러(211.235) 16:38 81 0
1623654 대기 23년이 헬 맞지? [3] 자갤러(39.7) 16:32 89 0
1623653 화력 발전기 공식 외웠다 ㅇㅇ(114.207) 16:31 34 0
1623651 산안산기 밀폐공간 개같은거 [9] ㅇㅇ(121.132) 16:25 159 0
1623650 전기통신소방 공무7년차임 [3] 자갤러(118.235) 16:23 97 0
1623649 산안기) 니네 이 표 다 외움? [10] 자갤러(223.39) 16:21 307 0
1623647 🎯 HDC 희망드림빌더 2025 청년일경험 참가자 모집! 🎯 자갤러(118.44) 16:11 45 0
1623646 비상조명등을 왜 3선식으로 하는지 아냐? [4] 자갤러(211.235) 16:10 104 0
1623645 공학용계산기 천억단위 나오면 소수점 x 10^ 표기 [6] ㅇㅇ(123.109) 16:06 66 0
1623644 산안기 또 물임(합격률70%) ㅇㅇ갤로그로 이동합니다. 16:06 143 0
1623642 근데 위산기는 왜 10개년씩 보는거임? [2] 자갤러(211.234) 15:59 198 0
1623641 산안산기 히인리히 버드 이런거 나옴? [5] ㅇㅇ갤로그로 이동합니다. 15:47 146 0
1623640 근데 공무원에 자격증이 왜필요한가요 [1] ㅇㅇ(211.234) 15:44 93 0
1623639 응우옌 쯩 꾸억(57) 22.9kv시설 전기과장 [13] 데마시아거주자갤로그로 이동합니다. 15:39 185 2
1623638 산안기 작업형이 ㅈㄴ 점수후하게줌 ? [7] 자갤러(39.120) 15:33 199 0
1623637 얘들아 소방설비 필기일정 언제냐 ㅇㅇ(210.90) 15:31 27 0
1623636 ㅅㅂ 얘들아 소좆 실기 7개년 3회독인데 이거 맞냐? [3] ㅇㅇ(59.7) 15:30 106 0
1623635 전산기 과평 나가리 확정이네 ㅋㅋㅋㅋ [1] ㅇㅇ(58.29) 15:29 255 4
1623634 산안산기 실기 구민사 책이 좀 이상하네 [1] ㅇㅇ갤로그로 이동합니다. 15:23 93 0
1623633 산안산기 3일전사 간다. [2] 자갤러(175.211) 15:22 143 0
1623631 이번에 전기기사 실기 어려우려나 [2] 자갤러(183.98) 15:18 142 5
1623630 실무가 깡패라는걸 느낀게 [4] ㅇㅇ(59.19) 15:18 162 0
1623629 제헌절 좆같네 [1] ㅇㅇ(39.124) 15:16 119 1
1623628 나왜 긴장이안되냐 [3] ㅇㅇ(211.235) 15:15 154 0
1623625 산안기든 위산기든 뭐든 필답 10개년 3회독해도 의미없는게 [5] ㅇㅇ(223.39) 15:08 292 0
1623624 조경기능사 필기 기출 질문좀 형님들 [1] 자갤러(222.105) 15:03 45 0
1623622 선생님들 자격증 두가지경우에 어느거따는게 더유리할까요?????? [6] 자갤러(118.222) 14:57 123 1
뉴스 “섭외 없었는데 어떻게 불발”…태연 ‘축제 섭외’ 논란에 장수군 해명이 기름 부었다 디시트렌드 14:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2