본문 바로가기
정보처리기사

[정보처리기사 이론 정리]개발 - C언어

by 기출문제 전문가 2022. 3. 24.
728x90
반응형

1. 출력 결과

#include <stdio.h>

void main(){

  int a = 100;
  char c = 'Z';

  switch(a/10){
    case 10:
    case 9: c = 'A'; break;
    case 8: c = 'B'; break;

    default: c = 'F';
      
  }

  printf("%c\n", c);
}

 

<정답>

 

A


2. 출력 결과

#include <stdio.h>
void main( ){
  int i, j;
  int temp;
  int a[5] = {14, 22, 53, 45, 1};

  for(i=0; i<4; i++){
    for(j=0; j<4-i; j++){
      if(a[j] > a[j + 1]){
        temp = a[j];
        a[j] = a[j + 1];
        a[j + 1] = temp;
      }
    }
  }

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

 

<정답>

 

1

14

22


3. 출력 결과

#include <stdio.h>
void main( ){
	int a = 0, b = 1; 
	printf("%d\n", a && b);
	printf("%d\n", a || b);
	}

 

<정답>

 

0

1

 

<해설>

 

참 거짓 판단 후 출력

- 1 / 거짓 - 0


4. 출력 결과

#include <iostream>
void main(){
  int score = 95;
  switch(score/10){
  case 10: std::cout << "수";
  case 9: std::cout << "수";
  case 8: std::cout << "우";
  case 7: std::cout << "미";
  case 6: std::cout << "양";
  default: std::cout << "가";
}

 

<정답>

 

수우미양가

 

<해설>

 

break가 없음

 

* 만약 int score=100; 이면 수수미양가로 출력

 

* 개행 명령어 : std::endl 이면

로 출력


5. 출력 결과

#include <stdio.h>
void main(){
  int ret = 4;
  switch(++ret){
  case 5: ret+=2;
  case 3: ret++; break;
  case 4: ret++;
  default: ret*=2;
  }
  printf("%d\n", ret);
}

 

<정답>

 

8


6. 출력 결과

#include <iostream>
void main(){
  int s = 0;
  int i;
  for(i=1; i<=10; i++){
    if(i==2)
      continue;
    else if(i==4)
      break;
    s += i;
  }
  std::cout << i << " " << s;
}

 

<정답>

 

4 4

 

<해설>

 

std::cout << i << " " << s; ---> 결과) 4 4

 

std::cout << i << s; ---> 결과) 44

 

continue는 반복문 처음으로 돌아감


7. 실행 결과

#include <iostream>
int fn(int n) {
  if( n <= 1 )
    return 1;
  else
    return n*fn(n-1);
}
void main() {
  std::cout << fn(4);
}

 

<정답>

 

24

 

<해설>

 

* 재귀함수 - 자기 자신을 부르는 함수

 

1. fn(4)의 결과값을 출력 ( fn이라는 함수 호출할 때 4를 넘겨줌 )

 

2. int fn(int n) => n 4

 

3. 4일 경우 else문 실행

 

4. n*fn(n-1) 반환 => 4*fn(3) 출력

 

5. 이렇게 fn(3), fn(2), fn(1)까지 return

 

6. fn(1) if문에 만족하므로 1 반환

 

7. fn(1) = 1 / fn(2) = 2 / fn(3) = 6

 

8. fn(4) = 4*fn(3) = 24


8. 출력 결과

#include <stdio.h>
int f(int i);
void main(){
  printf("%d %d %d", f(1), f(5), f(-2));
}
int f(int i){
  if(i<=2)
    return 1;
  else
    return f(i-1)+f(i-2);
}

 

<정답>

 

1 5 1

 

<해설>

 

최초 : f(5)

 

두번째 : (f(4) + f(3))

 

세번째 : (f(3) + f(2)) + (f(2) + f(1))

 

네번째 : (f(2) + f(1) + 1 ) + (1 + 1)

 

result : (1 + 1 + 1) + (1 + 1) = 5


9. 출력 결과

#include <stdio.h>
int hrd(int n) {
  if( n <= 0 )
    return 1;
  else
    printf("%d ", n);
  hrd(n-1);
}
int main() {
  hrd(5);
  return 0;
}

 

<정답>

 

5 4 3 2 1


10. 출력 결과

#include <iostream>
using namespace std;
void main(){
  int a[5] = {1, 2};
  int s = 0;
  for(int i=2; i<4; i++){
    s += a[i];
  }
  cout << s;
}

 

<정답>

 

0


11. 밑줄 내용(소스코드는 sum이라는 변수에 100개의 정수형 배열 a에 저장된 값들의 합을 구한다.)

#include <stdio.h>
void main(){
  int a[100] = {1, 2, 3, 4, 5};
  int sum = 0;
  for(____________________){
    sum = sum + a[i];
  }
  printf("%d\n", sum);
}

 

<정답>

 

i=0; i<100; i++

 

또는

 

int i=0; i<100; i=i+1 또는

 

int i=0; i<=99; i++ 또는

 

int i=99; i>=0; i-- 또는

 

int i=99; i>-1; i-- 또는

 

char i=0; i<100; i++ ..

 

<해설>

 

for(int i = 0; i < a.length; i++) 는 클래스나 구조체에서 사용가능함 ( C에서 변수 뒤에 표현 X )


12. 출력 결과

#include <stdio.h>
int num(int a, int b){
    if( a > b ) {
        return a; 
    }
    else {
       return b;
    }
}
void main(){
    printf("%d\n", num(10, 20) + num(30, 20));
}

 

<정답>

 

50


13. 출력 결과

#include <iostream>
void main(){
  int arr[2][2];
  int count = 0;
  for(int i=0; i<2; i++){
    for(int j=0; j<2; j++){
      arr[i][j] = ++count;
    }
  }
  for(int i=0; i<2; i++){
    for(int j=0; j<2; j++){
      std::cout << arr[j][i] << " ";
    }
  }
}

 

<정답>

 

1 3 2 4

 

<해설>

 

i   j   count

0 0   1 

0 1   2

1 0   3

1 1   4

 

arr[j][i]

1 3 2 4


14. 출력 결과

#include <stdio.h>
void main(){
  int i, j;
  int temp;
  int a[5] = {5, 4, 3, 2, 1};
  for(i=1; i<2; i++){
    j=i-1;
    while((a[j] > a[j+1]) && (j>=0)){
      temp=a[j];
      a[j]=a[j+1];
      a[j+1]=temp;
      j--;
    }
  }
  for(i=0; i<5; i++){
    printf("%d, ",a[i]);
  }
}

 

<정답>

 

4, 5, 3, 2, 1

 

<해설>

 

삽입 정렬을 1회전 한 후의 결과

728x90
반응형