정보처리기사 실기 C언어 개념정리

Alchemist·2025년 10월 4일

정보처리기사

목록 보기
49/114

✨ 1. C언어 기초와 변수

📘 개념 설명

  • C 프로그램은 main() 함수에서 시작.
  • 변수는 메모리 공간에 이름을 붙여 데이터를 저장.
  • 반드시 자료형을 지정해야 함.
int a = 10;
float b = 3.14;
char c = 'A';

📝 연습문제

#include <stdio.h>
int main() {
    int x = 5;
    int y = 2;
    float z = x / y;
    printf("%.2f", z);
}

✅ 해설

  • x / yint/int → 2
  • z = 2.00
    출력: 2.00

✨ 2장. 연산자와 표현식

📘 개념 설명

  • 산술: + - * / %
  • 관계: == != > <
  • 논리: && || !
  • 삼항: (조건) ? A : B
  • 비트: & | ^ ~ << >>

📝 연습문제

int a=7,b=3;
printf("%d", a%b + a/b);

✅ 해설

  • 7%3=1, 7/3=2 → 합=3
    출력: 3

✨ 3장. 제어문

📘 개념 설명

  • 조건문: if / switch
  • 반복문: for, while, do-while
  • breakcontinue로 흐름 제어

📝 연습문제

int sum=0;
for(int i=1;i<=5;i++){
    if(i%2==0) continue;
    sum+=i;
}
printf("%d", sum);

✅ 해설

  • 홀수만 더함 (1+3+5=9)
    출력: 9

✨ 4장. 배열과 문자열

📘 개념 설명

  • 배열: 같은 자료형을 연속 저장.
  • 문자열: '\0'로 끝나는 문자 배열.
  • 함수: strlen, strcpy, strcmp, strcat

📝 연습문제

char str[10] = "ABC";
strcat(str,"DEF");
printf("%s", str);

✅ 해설

  • "ABCDEF" 출력

✨ 5장. 포인터

📘 개념 설명

  • 포인터: 변수의 주소 저장.
  • 이중 포인터: 포인터를 가리키는 포인터.
  • 배열 이름은 첫 원소 주소.
int a=10;
int *p=&a;
int **pp=&p;
printf("%d", **pp);

📝 연습문제

int a=5;
int *p=&a;
int **pp=&p;
**pp=10;
printf("%d", a);

✅ 해설

  • a=10
    출력: 10

✨ 6장. 함수

📘 개념 설명

  • 값 전달(Call by Value): 원본 영향 없음.
  • 참조 전달(Call by Reference): 포인터 사용, 원본 변경 가능.
  • 반환값은 return.

📝 연습문제

int square(int x){ return x*x; }
int main(){
  int n=3;
  printf("%d", square(n+1));
}

✅ 해설

  • (3+1)^2 = 16
    출력: 16

✨ 7장. 구조체

📘 개념 설명

  • 여러 변수를 묶는 사용자 정의 자료형.
  • 포인터 접근: ptr->x == (*ptr).x
struct Point { int x,y; };

📝 연습문제

struct Data { int a; int b; };
int main(){
  struct Data d1={1,2};
  struct Data d2=d1;
  d2.a=5;
  printf("%d %d", d1.a,d2.a);
}

✅ 해설

  • 얕은 복사: d1={1,2}, d2={1,2} → d2.a=5
    출력: 1 5

✨ 8장. 동적 메모리

📘 개념 설명

  • 실행 중 메모리 할당: malloc, free
  • 2차원 배열 할당 가능.

📝 연습문제

int *p=malloc(sizeof(int)*3);
p[0]=1; p[1]=2; p[2]=3;
printf("%d", *(p+1));
free(p);

✅ 해설

  • *(p+1)=2
    출력: 2

✨ 9장. 자료구조

📘 개념 설명

  • 스택: LIFO, push/pop
  • : FIFO, enq/deq
  • 연결리스트: 동적 노드 연결

📝 연습문제

#define SIZE 3
int q[SIZE],front=0,rear=0;
void enq(int v){ q[rear]=v; rear=(rear+1)%SIZE; }
int deq(){ int v=q[front]; front=(front+1)%SIZE; return v; }

int main(){
  enq(1);enq(2);deq();enq(3);
  printf("%d %d", deq(),deq());
}

✅ 해설

  • 출력: 2 3

✨ 10장. 재귀 함수

📘 개념 설명

  • 함수가 자기 자신을 호출.
  • 반드시 종료 조건 필요.
int fact(int n){
  if(n<=1) return 1;
  return n*fact(n-1);
}

📝 연습문제

int f(int n){ return (n<=1)?1:n*f(n-1); }
int main(){ printf("%d", f(4)); }

✅ 해설

  • 432*1=24
    출력: 24

✨ 11장. 비트 연산

📘 개념 설명

  • &: 비트 AND (마스크 추출)
  • |: OR (특정 비트 세팅)
  • ^: XOR (토글)
  • ~: NOT (반전)
  • <<, >>: 시프트 연산

📝 연습문제

int a=0xAB; // 171
int b=0x0F; // 15
printf("%d %d %d", a&b, a|b, a^b);

✅ 해설

  • a=10101011, b=00001111
  • a&b=00001011=11
  • a|b=10101111=175
  • a^b=10100100=164
    출력: 11 175 164
profile
html_programming_language

0개의 댓글