[목차]

 

1. 기초지식

2. 순서도 이해하기

3. 공단샘플문제

4. 문법

    4-1 데이터 타입

    4-2 변수

    4-3 변수 선언

    4-4 연산자

    4-5 주요함수

    4-6 제어문

    4-7 배열

    4-8 문자열

    4-9 함수

    4-10 구조체

    4-11 기출문제, 기출예상문제 풀이

 

 


 

 

[기초 지식]

1. 컴퓨터를 사용하여 문제를 해결하기 위해서는 컴퓨터에게 문제 해결 방법과 절차를 지시해야 하는데, 이때 지시하는 명령어의 집합을 프로그램이라 하고, 작성하는 과정을 프로그래밍이라 한다.

 

2. bit(2의 1승 =2개) : 저장공간 하나에 2진수 형태 (0과 1) 로 값을 저장할 수 있기 때문 (표현할 수 있는 정보의 가지 수는 두 개)

> Byte(8bit / 2의 8승 256) > KB (Byte x 1,024) > MB > GB > TB

 

3. 컴퓨터는

전기적 신호, 전류가 흘러 작동을 하는데

높은 전압일 때는 1, 낮은 전압일때는 0

1은 5볼트 / 0은 1.5 볼트

 

4. Ascii 는 2의 7승 128개 대소영문자, 숫자, 특수 문자만 표현 거눙

Uni 코드 는 16비트, 최대 65,53자, 각 나라별 언어 모두 표현

 

 

 

 

[순서도 이해하기]

시험은 코드만 출시되지만 순서도를 이해하는게 중요함

 

 

 

 

[공단 샘플 문제]

1에서 10까지 덧셈 > ? 표를 채워라

#include <stdio.h>
main() {
    int number;
    int sum;
    number=1;
    sum=0;
    while(?) {
      sum=sum+number;
      number++;
    }
    printf("\n1+2..+10=%d\n", sum);
}
 

number<=10

 

 


 

 

[문법]

 

1. 데이터 타입

공부 tip :

C와 C++ 기준으로 데이터 종류, 타입, 크기 암기 필요!

 

관련 문제 :

다음 중 정수형이 아닌것은? (20년 3회, 20년 4회 필기 기출)

 

1-1. 데이터 타입 (C/C++, 기본 단위 = byte)

정수형 : short(2) / int (4) / long (4) / long long (8)

부호 없는 정수형 : unsigned short (2) / unsigned int (4) / unsigned long (4)

실수형 : float (4) / double (8) / long double (8)

문자형 : char (1)

부호 없는 문자형 unsigned char (1)

 

참고:

int는 플랫폼에 따라 실제 크기가 달라짐

32비트 운영체제에서는 32비트(4 byte)

64비트 운영체제에서는 64비트 (8 byte)

 

참고 2:

바이트를 비르토 표현할 때는 곱하기 8

4 바이트는 32비트

8 바이트는 64비트

 

참고 3:

1 byte(char) 는 영문자 1자 크기

 

 

1-2 데이터 타입 (Java,기본단위 = byte)

정수형 : byte (1) / short (2) / int (4) / long (8)

실수형 : float (4) / double (8)

문자형 : char (1)

논리형 : boolean (1)

 

 

1-3 데이터 타입 (Python, 기본단위 = byte)

정수형 : int (크기 제한없음)

실수형 : float (8), complex (16)

문자형 : str (크기 제한없음)

 

* complex는 복소수(실수와 허수의 합)를 의미

 

 

 

2. 변수

정의 :

컴퓨터가 명령을 처리하는 도중 발생하는 값을 저장하기 위한 공간으로, 변할 수 있는 값을 의미한다.

저장하는 값에 따라 정수형, 실수형, 문자형 등으로 구분한다.

 

관련 문제:

다음 중 변수의 규칙이 아닌 것 / 맞는 것을 찾아라

 

변수명 작성 규칙:

- 영문자, 숫자 _를 사용

- 첫 글자는 영문자 또는 _를 사용하며, 숫자는 올 수 없다.

- 공백이나 *,+,- 등의 특수문자를 사용할 수 없다.

- 대/소문자를 구분한다.

- 예약어들은 변수명으로 사용할 수 없다.

- 변수 선언 시 문장 끝에 반드시 세미콜론을 붙여야 한다.

- 글자 수에 제한이 없다.

 

 

 

3. 변수 선언

#include <stdio.h>
int main() {
    int count;
    float b =5.3;
    const char c = 'A';
    b = 7.1
}
 

Constant(상수)

const 예약어는 변수를 상수로 변경하는 예약어 (C에서)

Java의 경우는 final

 

 

 

4. 연산자

4-1. 증가/감소 연산자

++A (전치) : A를 1증가 시킨 후 사용

A++ (후치) : A를 사용 후 1 증가

예)

int x = 10, y;

y = ++x; > x=11, y=11

y = x++; > x=11, y=10

 

4-2. 산술 연산자

사칙 연산자 : *, / , +, -\

나머지 연산자 : %

 

4-3. 논리 연산자

2개의 논리 값을 연산하여 True(1), False(0)결과 반환

&& : and (모두 True 면 True)

|| : or (둘 중 하나라도 T면 True)

! : not

 

4-4. 관계 연산자

>

>=

<

<=

A == B

A != B

 

중요 참고 :

A = B 와 A == B 차이

A = B의 경우 A와 B가 같다란 뜻이 아니라

우변의 값을 좌변에 대입한다는 뜻 (대입연산자)이고

A == B의 경우는 A와 B는 같다는 뜻!

고로 = 등호가 하나인 겨우는 반드시 대입 연산자로 읽어야 한다!

 

 

4-5. 할당(대입) 연산자

A+=B : A = A + B

A-+ B : A = A - B

A*=B : A = A * B

A/=B : A = A / B

 

 

4-6. 비트 연산자 (20년 3회 필기 기출)

비트 단위(0과 1)로 쪼개 생각하면 된다.

 

& : and = 두 비트가 모두 1일 때 1

| : or = 두 비트 중 하나라도 1이면 1

^ : xor = 두 비트가 같으면 0, 다르면 1

~ : not = 각 비트를 반전 (1이면 0, 0이면 1로 반전)

<< : 왼쪽 시프트

>> : 오른쪽 시프트

 

시프트 예제:

* 10진수를 2진수로 변환!

시프트 할 10진수 숫자를 2진수로 나눌때는 나누기 2 해서 나머지 값들을 역순으로 확인하면 된다.

예) 10진수 3의 경우, 00000000000000000000000000000011

시작하는 첫 번째 비트는 부호비트 > 음수 양수에 따라 양수(0보다 큰 수)면 0, 음수(0보다 작은 수)면 1로 시작

 

int a=3, b=6;

a << 1 : 3(0...011)을 왼쪽으로 1비트 시프트 : 0....110

b >> 1 : 6(0....110)을 오른쪽으로 1bit 시프트 : 00...011

 

*시프트 후 생기는 빈자리는 패딩비트(0)으로 채운다.

 

* 반대로 2진수에서 10진수 변환은

32,16,8,4,2,1(가중치) * 십진수 해서 나온 결과값 더하기

예) 2진수 1100 = 8+4+0+0 = 12

 

 

 

4-7. 조건 연산자 (20년 3회 필기 기출)

 

4-8. cast 연산자 (형 변환)

C언어에서 강제적으로 데이터형을 변환할 때 사용하는 연산자

 

4-9 siezof 연산자

 

 

 

5. 주요 함수

5-1. 서식 문자

%o : 8진수 (octal)

%d : 10진수(decimal)

%x : 16진수 (hexadecimal)

%c : 문자 (character)

% s : 문자열 (string)

 

5-2. 제어 문자

\n : new line (커서를 다음 줄)

\r : carriage return (커서를 해당 줄 맨 앞으로 이동)

\f : form feed (한 페이지 넘기기)

\b : backspace (커서를 해당 줄의 1 문자만큼 앞으로 이동)

\t : tab (커서를 그 줗의 tab 만큼 이동)

 

5-3. printf (출력 함수)

printf(서식 문자열, 변수);

 

5-4. scanf (입력 함수)

키보드로 데이터를 입력 받는다.

scanf(서식 문자열, 변수의 주소);

scanf(%d %d", &X, &Y);

 

 

 

6. 제어문

6-1. while 문 (조건이 거짓히면 한 번도 수행하지 않는다)

6-2. do while 문 (조건이 거짓이라도 한 번은 수행한다)

 

6-3. break 문 (while문과 같은 가장 가까운 루프를 벗어나는 명령어)

 

 

6-4. if 문 / for 문

int i=10;
int even=0;
int odd=0;
for (int k=1; k<=i, ++k)
{
  if (K % 2==0)
      even += K;
  else
      odd += K;
}
printf("%d %d", even, odd);
 

K = 1, i, 1 (초기치, 최종치, 증가치)

 

6-5. switch ~ case문 (20년 1회 실기 기출)

break문이 없는 경우 출력 값은?

switch 문 조건에 맞는 case 부터 종료될때까지 하위 모든 문장 실행

(case 뒤에는 새미콜론이 아닌 콜론이 들어간다 > case : )

 

6-6. continue 문

: 다음 반복을 실행하는 명령어

 

 

 

 

7. 배열 (Array) (20년 2회 필기 기출)

int main() {
  int array[3] = {19, 23, 54};
  for(int i=0; i<3; i++) {
    printf("%d \n", array[i]);
   }
}
 

7-1 이차원 배열

배열이름 [행][열];

int main() {
  int array[3][4] = { 
    {19,23,54,44},
    {55,22,33,55},
    {11,22,33,66}
  };

  for(int i=0; i<3; i++) {
      for(int j=0; j<4, j++) {
          printf("%d ", array[i][j]);
      }
      printf("\n");
   }
}
 
 

 

 

 

8. 문자열

C 언어에서는 문자열을 저장할 수 없다.

문자열을 저장하려면 문자 배열을 사용해야 한다.

 

char string = "taku daddy"; > X

char string[] = "taku daddy"; > O

printf("%s", string);

 

문자열을 출력해야 하기 때문에 %s

문자는 %c

 

 

 

9. 함수

표준 함수

사용자 정의 함수 : 리턴형 함수명() > 리턴값 없는 경우 void 처리

#include <stdio.h>
int multi(int x, int y){
    return x * y;
}

void print(int x){
    printf("%d \n", x);
}

main(){
    int a;
    a = multi(2,3);
    print(a);
}
 

return 문 : 값을 돌려준다!

피 호출함수의 계산 결과를 호출 함수에 돌려주기 위해서 return문 사용이 필요하다.

피 호출함수의 중간에서 제어를 호출 함수로 옮기려고 할 때도 return문 사용.

(main() 에서 return 0 = 프로그램 정상적인 종료)

 

 

 

 

10. 구조체 (20년 4회 필기 기출)

: 데이터(변수)를 체계적으로 관리하기 위한 문법 (관련 정보를 하나의 의미로 묶을 때 사용)

- 자바 Class와 유사

- 배열과 달리 서로 가른 자료형 묶음 가능

struct PERSON {
    char name[50];
    int age;
    char address[100];
};

=================================================================

#include <stdio.h>
#include <string.h>

struct PERSON {          # 구조체 정의
    char name[50];
    int age;
};

int main() {
    struct PERSON p1 = {"너구리", 33};  # 구조체 변수 선언ㄹ
    struct PERSON p2;
    strcpy(2p.name, "타쿠");
    p2.age = 20;
    struct PERSON p3[2] = {
        {"돋단배",22},
        {"돌고래",20}
    };
    printf("이름:%s 나이:%d\n", p1.name.p1.age);
    printf("이름:%s 나이:%d\n", p2.name.p2.age);
    printf("이름:%s 나이:%d\n", p3[0].name.p3[0].age);
}
 

 

typedef : 자료형 재정의

unsigned int temp;  #이렇게 쓰면 번거롭기 때문에
typedef unsigned int KWS;   #KWS로 정의
KWS temp;

---------------------------

구조체의 경우
#include <strio.h>

typedef struc {
    char name[200];
    int age;
    char address[100];
} PERSON

int main() {
    PERSON p4={"금붕어",40,"서울"};
}
 

 

 

 

11. 기출문제, 기출 예상문제 풀이

13번)

2진수에서 10진수 변환은

32,16,8,4,2,1(가중치) * 십진수 해서 나온 결과 값 더하면 된다.

예) 2진수 1100 = 8+4+0+0 = 12

결과 값을 오른쪽으로 2단계 시프트

 

 

 

16번)

해당 데이터 타입의 사이즈를 생각하면 된다.

 

 

 

17번)

비트 연산을 해야하기 때문에 우선 해당 10진수를 2진수로 변환 후 진행

 

 

 

19번

0은 False, 이외 숫자는 True

4 && 0 = F

3 || F = F

rs = F (1)

 

 

 

27번)

sw = 스위칭 변수 (신호등 처럼 + - 변환시킬때 주로 사용)

 

28번)

hexadecimal은

0~9ABCDEF

13은 D

 

 

 

 

728x90

+ Recent posts