정보처리기사 2020년도 C언어 기출문제

업데이트:

2020년 1회Permalink

void main() {
    int i, j;				// 정수형 변수 i와 j 선언
    int temp;				// 정수형 변수 temp 선언: 숫자 정렬시 임시로 보관할 장소 지정
    int a[5] = {75, 95, 85, 100, 50};	// 정렬할 대상 array 선언
    
    for(i=0; i<4; i++){			// 3) 2)를 a[0]부터 a[3], a[0]부터 a[2], a[0]부터 a[1]까지 반복. 왜냐면 j<4-i 일 때까지인데, 안에 있는 2)가 한 바퀴 돌 때까지 i를 1씩 증가하여 겉에서 돌려주기 때문임
        for(j=0; j<4-i; j++){		// 2) 1)을 a[0]부터 a[3]까지 반복하되,
            if(a[j] > a[j+1]){		// 1) 비교 대상 숫자가, 인접한 숫자보다 클 경우,
                temp = a[j];		// 1) 임시 장소에 비교 대상 숫자를 보관하여
                a[j] = a[j+1];		// 1) 인접한 숫자를 대상 숫자 자리에 대입 후
                a[j+1] = temp;		// 1) 비교 대상 숫자를 인접한 숫자 자리에 대입. 즉, 자리바꾸기
            }
        }
    }
    
    for(i=0; i<5; i++){			// 1)부터 3)까지 거쳐 정렬된 array의 값을
        printf("%d ", a[i]);		// a[0]부터 a[4]까지 출력해줌
    }
}

50 75 85 95 100

버블정렬: 두 개의 인접한 원소를 차례대로 검사하여 정렬하는 방법

2020년 3회Permalink

#include <stdio.h>
void main() {
    int i=0, c=0;			// 정수형 변수 i와 c를 선언한 후, 각각 0을 지정해준다
    
    while(i<10){			// i값이 10보다 작을 때까지(10 이상이 되기 전까지 while문으로 돌려준다
        i++;				// 위에서 받은 i값에 1을 더해준 후,
        c *= i;				// c값에 i값을 곱해준다
        				// 이 경우, i=0일 때 while문에 들어와서 i=1이 되고, c=0*1=0이 된다
        				// 다시 i=1일 때 i=2가 되고, c=0*2=0이 된다
        				// ... i=9일 때 i=10이 되고, c=0*10=0이 된다
    }
    
    printf("%d", c);			// 위의 while문에서 도출한 c의 값은 0이므로, 0을 출력한다
}

0

C알못 주리씨의 메모
처음 변수 선언할 때, 복수의 변수를 같은 자료형으로 선언할 경우에는 ,으로 구분한다(;로 구분했다가 계속 에러나서 애먹음…)

2020년 3회Permalink

#include <stdio.h>
int r1() {
    return 4; 			// 4) r1 메소드의 값으로 4를 반환하므로 r10에 대입한다
}
int r10(){
    return (30 + r1());		// 3) r10의 값을 구하기 위해 r1 메소드로 거슬러 올라간다 -> 5) r10=30+4=34 의 값을 r100에 대입한다
}
int r100(){
    return (200 + r10());	// 2) r100의 값을 구하기 위해 r10 메소드로 거슬러 올라간다 -> 6) r100=200+34=234 의 값을 main 메소드에 대입한다
}
int main(){
    printf("%d\n", r100());	// 1) r100()의 값을 출력하기 위해 r100 메소드로 거슬러 올라간다 -> 7) 6)에서 반환된 값 234를 출력한다
    return 0;
}

234

2020년 4회Permalink

#include <stdio.h>

void main(){
    char *p = "KOREA";
    				// %s는 문자열 출력, %c는 문자 출력
    printf("%s\n", p);      	// p 주소(처음)로부터 NULL를 만날 때까지 출력하므로, KOREA를 끝까지 출력
    printf("%s\n", p+3);    	// p+3 주소로부터 NULL를 만날 때까지 출력하므로, EA를 출력 
    printf("%c\n", *p);     	// p가 가리키는 값(*p)는 K. K를 출력
    printf("%c\n", *(p+3)); 	// p+3이 가리키는 값(*(p+3))은 E. E를 출력
    printf("%c\n", *p+2);	// p가 가리치는 값(*p=K)로부터 2개 떨어져있는 알파벳은 M이므로, M을 출력
}

KOREA
EA
K
E
M