tip. 변수 변화를 알기 위해 메모리 구조를 그려놓고 시작
실행 순서
i = 0, j=0, k 는 초기화 생략되어 있어 쓰레기 값
i=0
- 첫 번째, for문
초기식이 생략되어있음 → 다음 조건으로 바로 넘어감 - 두 번째 for 문
i = 0, j=0 - 세 번째 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
- 첫 번째 반복문으로 돌아옴
i++ 이므로 i 값 1증가되어 i = 1, 참 - 두 번째 for 문 실행, j = 0 으로 재할당
- 세 번째 for 문 실행, A = 65, k ≤ 65 + 1 + 0 은 참이므로 printf 실행
- i(1)+j(0)+k(65) = 66 이므로 B 출력
- 다시 세 번째 for 문으로 돌아옴, k++ 이므로 k = 66, k ≤ 65 + 1 + 0 도 참
- i(1)+j(0)+k(66) = 67 이므로 C 출력
- 다시 세 번째 for 문으로 돌아옴, k++ 이므로 k=67, k≤ 65 + 1 + 0 는 거짓이므로 반복문 종료
- 두 번째 for 문으로 이동, j+=2에 의해 j 는 2 가 되므로 조건식 j≤i 는 거짓이므로 반복문 종료하고 개행하는 printf 실행
i=2
- 첫 번째 for 문으로 이동, i++ 에 의해 i=2, 조건식 만족하므로 두 번째 for 문으로 이동
- 두 번째 for 문에서 j=0 으로 초기화, j(0) ≤ i(2) 만족하므로, 안쪽 for 로 이동
- 세 번째 for 문 실행, A = 65, k ≤ 65 + 2 + 0 은 이므로 printf 실행
- printf 에서 아스키코드 67 에 해당하는 문자 C 를 출력
- 다시 세 번째 for 문으로 돌아옴, k++ 이므로 k = 66, k ≤ 65 + 2 + 0 도 참 → printf 실행
- i(2)+j(0)+k(66) = 68 이므로 D 출력
- 다시 세 번째 for 문으로 돌아옴, k++ 이므로 k = 67, k ≤ 65 + 2 + 0 도 참 → printf 실행
- i(2)+j(0)+k(67) = 69 이므로 E 출력
- 다시 세 번째 for 문으로 돌아옴, k++ 이므로 k = 68, k ≤ 65 + 2 + 0 는 거짓이므로 반복문 종료
- 두 번째 for 문으로 이동, j+=2에 의해 j 는 2 가 되므로 조건식 j≤i 는 참.
- 세 번째 for 문으로 이동, A = 65, k ≤ 65 + 2 + 2 은 참이므로 printf 실행
- i(2)+j(2)+k(65) = 69 이므로 E 출력
- 다시 세 번째 for문으로 이동, k++ 이므로 k = 66, k ≤ 65 + 2 + 2 도 참 → printf 실행
- i(2)+j(2)+k(66) = 70 이므로 F 출력
- k가 69가 될 때까지 계속 조건식이 참이므로 E부터 ~ I 까지 출력
- k 가 70 이 되면, 세 번째 for 문의 조건식 거짓이므로 종료, 두 번째 for 문의 조건식도 거짓이므로 빠져나옴, 첫번째 for 문의 조건식도 거짓이 되어 빠져나옴
출력
A
BC
CDEEFGHI
728x90
'Programming' 카테고리의 다른 글
[정보처리기사] C언어 문제 풀이(5) (0) | 2023.09.08 |
---|---|
[정보처리기사] C언어 문제 풀이(4) - 재귀함수 (0) | 2023.09.07 |
[정보처리기사] C언어 문제 풀이(3) (0) | 2023.09.06 |
[정보처리기사] C언어 문제 풀이(2) (0) | 2023.09.05 |