본문 바로가기

Programming

[정보처리기사] C언어 문제 풀이(1)

 

tip. 변수 변화를 알기 위해 메모리 구조를 그려놓고 시작

 

아스키코드

실행 순서

i = 0, j=0, k 는 초기화 생략되어 있어 쓰레기 값

i=0

  1. 첫 번째, for문
    초기식이 생략되어있음 → 다음 조건으로 바로 넘어감
  2. 두 번째 for 문
    i = 0, j=0
  3. 세 번째 for 문
    k =’A’ → 작은 따옴표 A 는 문자, 문자는 아스키코드로 매핑해서 숫자처럼 사용 가능
    A = 65
    조건문이 참이므로, printf 실행

    4. printf 문

        %c 는 포맷스트링 중 문자를 출력할 때 사용,

         i + j + k = 0+ 0+ 65 이므로 아스키코드 65 에 해당하는 문자 A 를 출력

    5. 세 번째 반복문으로 돌아감
         k++ 이므로 k 값은 66 이 되어 조건문 false 가 됨 → false 일 때 로직이 없어 상위 for 문으로 올라감

    6. 두 번째 반복문

         j+=2 ; 2를 증가시킨다.

         → j ≤ i인 조건문 - false 가 되어 반복문 빠져나오고 printf 실행

    7. printf (”\n”)

        \n : 개행

       다음 라인으로 이동하고 for문이 끝나 상위 for 문으로 이동

 

i=1

  1. 첫 번째 반복문으로 돌아옴
    i++ 이므로 i 값 1증가되어 i = 1, 참
  2. 두 번째 for 문 실행, j = 0 으로 재할당
  3. 세 번째 for 문 실행, A = 65, k ≤ 65 + 1 + 0 은 참이므로 printf 실행
  4. i(1)+j(0)+k(65) = 66 이므로 B 출력
  5. 다시 세 번째 for 문으로 돌아옴, k++ 이므로 k = 66, k ≤ 65 + 1 + 0 도 참
  6. i(1)+j(0)+k(66) = 67 이므로 C 출력
  7. 다시 세 번째 for 문으로 돌아옴, k++ 이므로 k=67, k≤ 65 + 1 + 0 는 거짓이므로 반복문 종료
  8. 두 번째 for 문으로 이동, j+=2에 의해 j 는 2 가 되므로 조건식 j≤i 는 거짓이므로 반복문 종료하고 개행하는 printf 실행

i=2

  1. 첫 번째 for 문으로 이동, i++ 에 의해 i=2, 조건식 만족하므로 두 번째 for 문으로 이동
  2. 두 번째 for 문에서 j=0 으로 초기화, j(0) ≤ i(2) 만족하므로, 안쪽 for 로 이동
  3. 세 번째 for 문 실행, A = 65, k ≤ 65 + 2 + 0 은 이므로 printf 실행
  4. printf 에서 아스키코드 67 에 해당하는 문자 C 를 출력
  5. 다시 세 번째 for 문으로 돌아옴, k++ 이므로 k = 66, k ≤ 65 + 2 + 0 도 참 → printf 실행
  6. i(2)+j(0)+k(66) = 68 이므로 D 출력
  7. 다시 세 번째 for 문으로 돌아옴, k++ 이므로 k = 67, k ≤ 65 + 2 + 0 도 참 → printf 실행
  8. i(2)+j(0)+k(67) = 69 이므로 E 출력
  9. 다시 세 번째 for 문으로 돌아옴, k++ 이므로 k = 68, k ≤ 65 + 2 + 0 는 거짓이므로 반복문 종료
  10. 두 번째 for 문으로 이동, j+=2에 의해 j 는 2 가 되므로 조건식 j≤i 는 참.
  11. 세 번째 for 문으로 이동, A = 65, k ≤ 65 + 2 + 2 은 참이므로 printf 실행
  12. i(2)+j(2)+k(65) = 69 이므로 E 출력
  13. 다시 세 번째 for문으로 이동, k++ 이므로 k = 66, k ≤ 65 + 2 + 2 도 참 → printf 실행
  14. i(2)+j(2)+k(66) = 70 이므로 F 출력
  15. k가 69가 될 때까지 계속 조건식이 참이므로 E부터 ~ I 까지 출력
  16. k 가 70 이 되면, 세 번째 for 문의 조건식 거짓이므로 종료, 두 번째 for 문의 조건식도 거짓이므로 빠져나옴, 첫번째 for 문의 조건식도 거짓이 되어 빠져나옴

 

출력

A

BC

CDEEFGHI

 

 

 

728x90