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

코딩문제 오답정리

by 새벽물망초 2022. 7. 15.

후치 연산자

01)

#include <stdio.h>

main() {
	int a = 12, b = 8, c = 2, d = 3;
    a /= b++ - c * d;
    printf("%d", a);
    }
6

a = a / (b++ - c * d)

   = 12 / (8 - (2 * 3)) -> /= ++ * 있으면  ++ -> * -> /= 순서이다

<이 때, 단항 연산자 b++은 후치 연산자로 연산 수행 후 ++(1 증감) 시킨다

그래서 b=8 그대로 연산을 수행 한 후 내부적으로는 변수 b=9가 된다>

   = 12 / (8 - 6)

   = 12 / 2

   = 6

 

cf) 연산자 우선순위

1. 단항 연산자 ++ --

2. 산술 + -

3. 시프트

4. 관계

5. 비트

6. 논리

7. 조건

8. 대입 += -=

9. 순서

 

 

02)

public class Problem {
	public static void main(String[] args) {
    	int j, k, l, result;
        j = 10;
        k = 20l
        l = 30;
        result = j < k ? k++ : --l;
        System.out.printf( %d %d %d\n", result, k, l);
        }
 }
20 21 30

j<k 가 참이므로 k++ 수행

k++ 는 후위 연산자이므로 연산 후 ++ 수행

1] result에 20 저장(연산 수행), 2] 그 후에 ++ 수행하여 3] k=21 이 됨

따라서, result = 20, k = 21

 

 

for문

01)

#include <stdio.h>

int ahap=0, bhap=0;

int main() {
	for(int a=0 ; a<10 ; ++a) {
		ahap += a;
		printf("a = %d, ahap = %d\n", a, ahap);
	}
	
printf("---------------------\n");
	
	for(int b=0 ; b<10 ; ++b, bhap+=b) {
		printf("b = %d, bhap = %d\n", b, bhap);
	}

return 0;
}

for문의 실행코드는 식2를 지나서 다음코드 실행후 식3으로 간다

 

 

02) for문 정렬

#include<stdio.h>

int main(){
   int i,j;
   int temp;
   int a[5] = {75,95,85,100,50};
   
   for(int i=0;i<4;i++){
      for(int 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<5; i++){
      printf("%d\n",a[i]);
   }
}

a배열 0~4 생성

i=0 일때

j=0 일때 if( a[0] > a[1] ) 이면 서로 바꾸기, 75 < 95 이므로 거짓 -> 변화없음

j=1 일때 a[1]>a[2] 이고, 95>85 이므로 서로 순서 바꿈 -> 75, 85, 95, 100, 50

j=2 일때 a[2]>a[3] 이고, 95<100 이므로 변화없음

j=3 일때 a[3]>a[4] 이고, 100>50 이므로 서로 순서 바꿈 -> 75, 85, 95, 50, 100

 

i=1 일때

j=0 일때 a[0]>a[1] 이고, 75<85 이므로 변화없음

j=1 일때 a[1]>a[2] 이고, 85<95 이므로 변화없음

j=2 일때 a[2]>a[3] 이고, 95>50 이므로 순서 바꿈 -> 75, 85, 50, 95, 100

 

i=2 일때

j=0 일때 ok

j=1 일때 바꿈 -> 75, 50, 85, 95, 100 

 

i=3 일때

j=0 일때 75>50 이므로 바꿈 -> 50, 75, 85, 95, 100

for문 종료

 

a[0]~a[4] 출력 -> 50, 75, 85, 95, 100

 

 


 

‼공통

1. 계산 실수하지 말기 (특히, for문 계산 잘 하기)

2. 출력문 형태 제대로 확인 (컴마(,) 있는지 없는지 잘 확인)

 

 

'자격증 > 정보처리기사' 카테고리의 다른 글

fan in, fan out  (0) 2022.07.11
[암호화 알고리즘] 대칭키, 비대칭키 암호 방식  (0) 2022.07.05
정규화  (0) 2022.07.04
프로토콜  (0) 2022.03.29
디자인 패턴  (0) 2022.03.28

댓글