본문 바로가기
자격증/정보처리기사 실기

정보처리기사[실기] 기출문제_C언어(2022년도)

by 김엉배 2023. 9. 21.
728x90
반응형

 

◎  2022년 1회 14번

입력값 5가 들어왔을 떄 출력값
_________________________
#include <stdio.h>

int fn(int a) {
 if(a <= 1) return 1;
 return a * fn(a - 1);
}

void main() {
 int a;
 scanf("%d", &a);
 printf("%d", fn(a));
}
더보기

1) 입력값이 5가 들어오면 a = 5가 된다.

2) fn(int a = 5)가 되고 if문을 보면 a가 1보다 작거나 클 때는 1을 반환하고, 아닐 경우  a*fn(a-1)을 반환한다.

3) 5 * f(4) -> 5 * 4 * f(n) ->5*4*3*fn(2) -> 5*4*3*2*1

 

♣ 정답  ->  120

 

◎  2022년 1회 15번

밑줄 친 곳에 연산자를 이용해 정수를 역순으로 출력하는 프로그램을 완성하시오.
__________________________________________________________
#include <stdio.h>

void main() {
 int number = 1234;
 int div = 10;
 int result = 0;
 while(number__(1)__0) {
  result = result * div;
  result = result + number __(2)__ div;
  number = number __(3)__ div;
 }
 
 printf("%d", result);
}
더보기

1) 반복문을 실행할 때마다 맨 뒷자리 수를 result에 더 해주고, number의 마지막 자리는 없애고, result는 10배씩 곱해 역수 구함.

2) (1)은 반복문이 0보다 크거나 아닐떄 반복해야 하기 때문에 > 나!= 사용

3) (2)는 number의 맨 뒷자리 수를 더해주어야해서 % 연산자 사용

4) (3) number의 맨 뒷자리 수를 제거해야 하므로 / 연산자 사용

 

♣ 정답  ->  

(1) >또는 !=

(2) %

(3) /

 

◎  2022년 2회 08번

#include <stdio.h>

struct student {
 int n, g;
}

int main() {
 struct student st[2];
 int i = 0;
 for(i; i<2; i++) {
  st[i].n = i;
  st[i].g = i + 1;
 }
 printf("%d", st[0].n + st[1].g);
 return 0;
}
더보기

1) student 구조체 선언 후, 멤버 변수 n, g 선언

2) student 배열 변수 s 사이즈를 2만큼 선언

3) for문은 i를 1씩 증가

4) i값을 s[i].n에 대입, i+1을 s [i]. g에 대입

 

♣ 정답  ->  0 + 2 =2

 

◎  2022년 2회 15번

#include <stdio.h>

int len(char* p);
int main() {
 char *p1 = "2022";
 char *p2 = "202207";
 printf("%d", len(p1) + len(p2));
 return 0;
}

int len(char* p) {
 int r = 0;
 while(*p != '\0') {
  p++;
  r++;
 }
 return r;
}
더보기

1) len 함수 선언, *p 의 길이를 구하는 함수

2) p1 과 p2의 길이를 더함 4 + 6

 

♣ 정답  ->  10

 

◎  2022년 3회 01번

#includ <stdio.h>

int calc(int w, int h, int j, int i){
 if(i>=0 && i<h && j>=0 && j<w)
  return 1;
  return 0;
}

int main(){
 int field[4][4] = {{0,1,0,1},{0,0,0,0},{1,1,1,0}},{0,1,1,1}};
 int mines[4][4] = {{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
 int w = 4, h = 4;
 int i, j, k, l;
 
 for(l=0; l<h; l++){
  for(k=0; k<w; k++){
   if(field[l][k] == 0)
    continue;
    
   for(i=l-1; i<=l+1; i++){
    for(j=k-1; j<=k+1; j++){
     if(calc(w, h, j, i) == 1) {
      mines[i][j] += 1;
     }
    }
   }
  }
 }
 
 for(l=0; l<h; l++){
  for(k=0; k<w; k++){
   printf("%d ", mines[l][k]);
  }
  printf("\n");
 }
 
 return 0;
}
더보기

♣ 정답  -> 

1 1 3 2

3 4 5 3

3 5 6 4

3 5 5 3

 

◎  2022년 3회 13번

#include <stdio.h>

void main() {
 int i, j, k, s;
 int el = 0;
 for(i=6; i<=30; i++) {
  s = 0;
  k = i/2;
  for(j=1; j<=k; j++) {
   if(i%j==0) {
    s = s + j;
   }
  }
  if(s==i) {
   el++;
  }
 }
 printf("%d", el);
}
더보기

♣ 정답  ->  2

728x90
반응형