[정보처리기사/예상문제] - 2023 정보처리기사 실기 예상 문제 모음

C언어 기출문제 모음

비전공자용 C언어 요약 1탄

비전공자용 C언어 요약 2탄(조건문, 반복문, 배열)

비전공자용 C언어 요약 3탄(함수, 포인터)

비전공자용 C언어 요약 4탄(포인터 심화, 구조체)

 

 

C언어 공부하기는 싫고 대충이라도 알아야겠다싶으신분만 보세요

찍먹용이라 아주 간단하게만 적혀져 있습니다

대충 읽어보시고 c언어 기출문제 풀어보시면 될 것 같습니다


목차

1. C언어의 구조

2. 변수와 자료형

3. 서식문자

4. scanf()

5. 사칙연산과 증감연산자

6. 비트연산자


1. C언어의 구조

#include<stdio.h>     
	int main() {
		printf("안녕");
		return 0;
	}

1) #include<stdio.h>는 선행처리기라고 하는데 몰라도 된다.

이 문장이 있어야 printf()함수를 쓸 수가 있다.

 

2) int main()

main() 함수인데 자세한 건 몰라도 된다

그냥 main함수 안에 있는 {   }내용물을 제일 첫번째로 보라는 것이다

 

3) printf()

말그대로 printf() 괄호안에 있는 것을 출력하라는 의미이다

 

4) 맨 뒤 ;(세미콜론)

그냥 "밥을 먹었다."할 때 .(마침표)랑 똑같다고 생각하면 된다

 

5) return 0;

함수가 문제없이 종료됐다는 것을 의미한다

그냥 없다고 생각해도 된다


아래 처럼 코드를 작성하면 어떻게 출력될까?

#include<stdio.h>     
	int main() {
		printf("안녕");
		printf("안녕");
		printf("안녕");
		return 0;
	}

그림1

문장이 다르니까 그림1의 왼쪽 처럼 출력될 것 같지만 줄바꿈기능이 없어 오른쪽처럼 안녕안녕안녕으로 출력된다

 

그렇다면 왼쪽 처럼 출력하려면 어떻게 해야할까 

바로 줄바꿈 기호를 넣어주면 된다

#include<stdio.h>     
	int main() {
		printf("안녕\n");
		printf("안녕\n");
		printf("안녕\n");
		return 0;
	}

줄바꿈기호는 \n(역슬래시 n)인데 보통 엔터키 위에 위치한다.

시험에서 낚시문제로 잘 나오므로 \n있나 없나 잘 봐야 한다


2. 변수와 자료형

변수는 데이터를 저장하는 공간이다

a=1이라고하면 a만 나와도 a안에 1이 있다고 생각하면 된다

 

근데 이때 자료형(데이터 타입)마다 변수를 선언하는 키워드(?)가 다르다

정수형 데이터는 int

실수형 데이터는 double

문자형 데이터는 char

표 출처 :  자료형이란? - 한 눈에 끝내는 C언어 기초 (goorm.io)


3. 서식문자

아래와 같이 출력하면 뭐가 출력이 될까?

#include<stdio.h>     
	int main() {
		int a = 3;
		printf("%d", a);
		return 0;
	}

바로 변수 a의 값인 3이 출력된다.

%d가 출력이 되지 않고 3이라고 출력되는 이유는 %d는 서식문자이기 때문이다.

서식문자는 출력하고자 하는 변수의 출력 형태를 지정하기 위해 사용한다

사진 출처 : [C 언어] 서식문자 (변환문자) 의미 자료형 (tistory.com)

 

 

다음 출력 결과는 어떻게 될까

#include<stdio.h>     
	int main() {
		char a = 'A';
		printf("%d\n", a);
		printf("%c\n", a);

		printf("%d\n", a+1);
		printf("%c\n", a+1);
		return 0;
	}

그림2

출력결과는 그림2처럼 출력된다. char변수로 'A'를 받았는데 서식문자가 %d냐, %c냐에 따라 결과값이 완전 달라지는 것을 볼 수 있다.

A를 정수형으로 출력하면 A의 아스키코드 값인 65가 출력되고

A를 문자형으로 출력하면 A가 그대로 출력된다

 

A를 정수형에서 +1을 하면 아스키코드 값 65+1인 66이 출력되고

A를 문자형에서 +1을 하면 아스키코드 값 66인 문자 B가 출력 된다

 


4. scanf()

scanf()는 변수를 입력받을 수 있도록 해주는 함수이다.

scanf()도 printf()와 마찬가지로 #include<stdio.h>가 있어야 쓸 수 있다. 

 

3을 입력받았다고 할 때 아래의 출력결과는 뭘까?

#include<stdio.h>     
	int main() {
		int a;
		scanf("%d", &a);
		printf("%d", a);
		return 0;
	}

출력결과는 3이다

scanf("%d",&a); 에서

&는  앰퍼샌드(ampersand)라고 읽으며 주소연산자라고도 한다

&a이라고 하면 변수a의 주소를 가리킨다

 

왜 그냥 a가 아니라 &a를 쓸까?

임시공간에 저장됐다가 임시공간에 있는 값을 변수의 주소에 저장하고 그 임시공간을 삭제하므로 변수의 주소가 필요한 것이다.

(이해가 안되면 그냥 넘어가고 scanf가 숫자를 입력받는 함수라는 것만 알고가면 된다)

출처 : [C언어] scanf()함수에서 &(ampersand)를 쓰는 이유 (tistory.com)


5. 사칙연산과 증감연산자

사칙연산 순은 수학에서 배운 것과 동일하다

곱하기(*)와 나누기(/)가 먼저고 그다음이 더하기(+), 빼기(-)이다

여기서 추가로 나머지(%)연산자가 있는데 곱하기, 나누기 우선순위와 동일하다

 

9%2하면 나머지는 1이므로 1이 나온다

 

증감연산자라는 것이 있다. ++a, a++ 이런식으로 표현하는데 -도 동일한 방식이다

증감연산자는 곱하기, 나누기, 나머지보다 먼저 연산된다.

 

다음 출력결과를 맞춰보자

#include<stdio.h>     
	int main() {
		int a = 10;
		int b = 15;
		int c = a++ + --b;
		int d = ++a + b--;
        

		printf("%d\n",a); 
		printf("%d\n", b);  
		printf("%d\n", c); 
		printf("%d", d); 
		return 0;
	}
더보기

12

13

24

26

 

처음보면 살짝 머리터질 수 있는 부분인데

++a는 전치연산이고

a++은 후치연산이다

 

전치연산은 앞에 붙어있어서 바로 계산되고

후치연산은 뒤에 붙어있어서 그 다음 라인부터 계산된다

 

c=a(후치연산)+b(전치연산)=10+14=24

a가 후치연산이라 c에는 a가 10으로 계산되지만

변수c에 값이 저장되는 그 다음부터 바로 a가 11이 된다.

 

d=a(전치연산)+b(후치 연산)=12+14=26

a는 전치연산이라 바로 11에서 1이 더해진 값이 d에 들어가고

b는 후치연산이라 14에서 1만큼 빼진 값이 아니라 그냥 그대로 14가 된다

 

시험에 낚시문제로 많이 출제되니 무조건 이해하고 넘어가자


6. 비트연산자

비트연산자 관련문제는 한번도 출제된 적이 없긴 한데 그래도 쉬우니 보고 넘어가자.

우리가 평소에 사용하는 숫자는 10진수이고 컴퓨터에서는 2진수를 사용한다

2진수는 0과 1로 이루어져있다.

 

3을 2진수로 바꾸면 11이다

2진수를 10진수로 바꾸는 방법은 크게 2가지인데 2번째 방법을 많이 사용한다.

 

일단 빈 백지에 128 64 32 16 8 4 2 1 이렇게 숫자를 적는다.

예를 들어 20을 이진수로 바꿔야한다면 위에 있는 숫자로 20을 만들어야한다

20을 만들려면 16+4면 된다

128 64 32 16 8 4 2 1
0 0 0 1 0 1 0 0

16과 4를 제외한 나머지에는 다 0을 대입해준다.

20의 이진수는 10100이 된다

 

비트연산자에 &, ^ , | 부터 알아본다.

&는 둘다 1일 때만 1반환

^는 두개가 1개는 1, 나머지는 0이어야만 1반환

|는 둘중 1개만 1일 때도 1반환

 

3 & 2 라고 한다면 먼저 3과 2를 이진수로 바꾼다 11과 10이다

11

10

이렇게 봤을 때 둘다 1인 위치만 1이고 나머지는 0이 된다

3 & 2라고 한다면 10으로 2가 된다

3^2라고 한다면 01로 1이 된다

3|2라고 한다면 11로 3이 된다

 

다음은 >>, << 연산자이다

이건 자세한 건 생략하고 푸는 방법만 알려주도록 하겠다.

비트를 이동시키는 연산자인데 

8<<2 라고 하면 8에서 2의 제곱만큼 곱해주면된다

8*4이므로 32가된다

 

8>>2 라고 하면 8에서 2의 제곱만큼 나눠주면 된다

8/4이므로 2가 된다

 

>>1이면 2의 1제곱

>>3이면 2의 3제곱

으로 계산하면 된다

 

[정보처리기사/예상문제] - 2023 정보처리기사 실기 예상 문제 모음

C언어 기출문제 모음

비전공자용 C언어 요약 1탄

비전공자용 C언어 요약 2탄(조건문, 반복문, 배열)

비전공자용 C언어 요약 3탄(함수, 포인터)

비전공자용 C언어 요약 4탄(포인터 심화, 구조체)

+ Recent posts