c언어 기출문제의 변형
15:18에서 1회차 2회차는 앞뒤가 똑같은 숫자 한번만 1,2회차까지 이렇게 두번 진행되는 걸까요? 일의 자리 숫자들은 어떤 방식으로 진행되는 걸까요?
답변 2
0
코드가 어떻게 동작하는지, 그리고 각각의 입력값(1, 15, 55)에 대해 isPal() 함수 내부에서 변수들이 어떻게 변화하는지 설명해드리겠습니다.
코드 설명:
isPal()함수는 입력된 숫자가 회문(palindrome, 앞뒤가 같은 숫자)인지 확인합니다.nm: 입력된 숫자.or: 원래 입력된 숫자를 저장하는 변수.rv: 역순으로 재구성된 숫자를 저장하는 변수.rd: 각 자릿수를 저장하는 변수.
while (nm != 0)루프에서 입력된 숫자를 한 자리씩 떼어내서 역순으로 만든 후, 원래 숫자와 비교합니다.
1. nm = 1일 때:
입력 값이 1인 경우, 함수가 어떻게 동작하는지 살펴보겠습니다.
초기값:
nm = 1or = 1(입력 값 저장)rv = 0(역순 숫자 초기화)
루프 첫 번째 반복:
rd = nm % 10 = 1 % 10 = 1(마지막 자릿수)rv = rv * 10 + rd = 0 * 10 + 1 = 1(역순으로 숫자를 재구성)nm = nm / 10 = 1 / 10 = 0(숫자를 한 자릿수 없앰)
루프 종료 (
nm = 0이므로 더 이상 반복하지 않음).최종 비교:
or == rv → 1 == 1 → true결과: 1은 회문입니다.
2. nm = 15일 때:
입력 값이 15인 경우.
초기값:
nm = 15or = 15(입력 값 저장)rv = 0(역순 숫자 초기화)
루프 첫 번째 반복:
rd = nm % 10 = 15 % 10 = 5(마지막 자릿수)rv = rv * 10 + rd = 0 * 10 + 5 = 5(역순으로 숫자를 재구성)nm = nm / 10 = 15 / 10 = 1(숫자를 한 자릿수 없앰)
루프 두 번째 반복:
rd = nm % 10 = 1 % 10 = 1(마지막 자릿수)rv = rv * 10 + rd = 5 * 10 + 1 = 51(역순으로 숫자를 재구성)nm = nm / 10 = 1 / 10 = 0(숫자를 한 자릿수 없앰)
루프 종료 (
nm = 0이므로 더 이상 반복하지 않음).최종 비교:
or == rv → 15 == 51 → false결과: 15는 회문이 아닙니다.
3. nm = 55일 때:
입력 값이 55인 경우.
초기값:
nm = 55or = 55(입력 값 저장)rv = 0(역순 숫자 초기화)
루프 첫 번째 반복:
rd = nm % 10 = 55 % 10 = 5(마지막 자릿수)rv = rv * 10 + rd = 0 * 10 + 5 = 5(역순으로 숫자를 재구성)nm = nm / 10 = 55 / 10 = 5(숫자를 한 자릿수 없앰)
루프 두 번째 반복:
rd = nm % 10 = 5 % 10 = 5(마지막 자릿수)rv = rv * 10 + rd = 5 * 10 + 5 = 55(역순으로 숫자를 재구성)nm = nm / 10 = 5 / 10 = 0(숫자를 한 자릿수 없앰)
루프 종료 (
nm = 0이므로 더 이상 반복하지 않음).최종 비교:
or == rv → 55 == 55 → true결과: 55는 회문입니다.
요약:
1이 입력되었을 때: 1은 회문입니다.
15가 입력되었을 때: 15는 회문이 아닙니다.
55가 입력되었을 때: 55는 회문입니다.
0
안녕하세요, 인프런 AI 인턴입니다. SS0615님.
C언어 강의에서 다루고 있는 기출문제의 변형에 대해 질문해주셨네요. 특히 반복되는 숫자 문제에서 각 회차별 진행 방식과 일의 자리 숫자 처리 방식에 대한 내용을 궁금해하시는 것 같습니다.
숫자의 반복과 회차 진행 방식
각 회차의 진행: 문제에서 각 숫자가 앞뒤로 같은지 여부를 체크하는 것은 일반적으로 두 번의 반복을 의미합니다. 이 과정은 주어진 숫자가 좌우 대칭인지 파악하기 위한 것이며, 회차별로 각 자리 숫자를 비교하여 결정됩니다. 주로
while문이나for문을 통해 반복 검사를 진행하는 패턴을 보입니다.일의 자리 숫자의 처리: 일의 자리 숫자는 숫자의 마지막을 의미하므로 보통 루프 내 조건문을 통해 마지막 검사로 이어지게 됩니다.
if문 또는 조건 연산자를 사용하여 특정 조건에서 반복을 빠져나갈 수 있게 로직을 설계합니다.
관련된 기존 질문에 대한 답변 중 다음의 링크를 통해 보다 자세한 내용을 확인할 수 있습니다:
- C언어 기출문제의 변형
추가적으로 씨언어의 반목 구조에 대한 기본 개념과 활용 예제를 읽어보시면 문제를 이해하는 데 도움이 되실 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
정처기 2026-3 실기 문의
0
88
2
정처기 실기 3회 컴싸 사용 여부
0
55
1
모의고사 1 회 2번문제 중
0
73
2
26-2 이론문제 재탕
1
56
1
26-2년도 코드문제
0
38
0
26-2 코드문제
0
44
1
15분 48초 질문
0
61
2
26-1년도 이론문제 재탕
0
68
1
26-1년도 코드문제 재탕
0
48
0
이론재탕만 눈치챘어도
0
77
1
25-3년도 이론문제 재탕
0
59
1
25-3년도 코드문제 재탕
0
43
0
출력값 문의
0
56
2
25-2 분기커버리지
0
48
0
25-2 이론 재탕
0
70
1
25-1 이론 재탕
0
54
1
서브넷 마스크
0
55
2
모의고사 1회 계산문제 2개 맞았는데
0
70
2
업캐스팅 문제 예시 4번 부모 호출
0
51
2
모의고사 자료 해설이 너무 불친절하네요.
0
96
2
부모의 생성자 출력 관련
0
50
2
24-3 이론파트 재탕문제
0
58
0
누락코드
0
47
1
다차원 배열 포인터 질문있습니다
0
72
3





