다음 C 프로그램의 실행 결과를 쓰시오.
#include <stdio.h>
#include <ctype.h>
int main(void) {
char text[] = "It is 8";
for (int i = 0; text[i] != '\0'; i++) {
if (isupper((unsigned char)text[i]))
text[i] = (char)('A' + (text[i] - 'A' + 5) % 26);
else if (islower((unsigned char)text[i]))
text[i] = (char)('a' + (text[i] - 'a' + 10) % 26);
else if (isdigit((unsigned char)text[i]))
text[i] = (char)('0' + (text[i] - '0' + 3) % 10);
}
printf("%s", text);
return 0;
}모범답안
Nd sc 1
풀이와 판단 근거
문자 종류별로 순환 이동한다. 대문자 I는 알파벳에서 5칸 이동해 N, 소문자 t·i·s는 각각 10칸 이동해 d·s·c가 된다.
공백은 어느 조건에도 해당하지 않아 그대로 남는다. 숫자 8은 (8+3)%10=1이므로 최종 출력은 Nd sc 1이다.
반복 종료 조건은 C 문자열의 널 문자 '\0'이다.
자주 틀리는 지점
- 소문자 이동량 10을 대문자에도 적용해 I를 S로 계산함
- 숫자 8+3을 11로 출력하고 10으로 순환하는 나머지 연산을 놓침
- 실제 출력에 포함된 두 공백을 삭제함
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.