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언어 기출문제의 변형
추가적으로 씨언어의 반목 구조에 대한 기본 개념과 활용 예제를 읽어보시면 문제를 이해하는 데 도움이 되실 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)
0
51
2
26년 1회 실기 해설 강의
0
68
2
53번 4-1 자료 오류 있는 것 같습니다.
0
73
2
7번문제
0
60
2
C언어 변형문제 9번문제 Pdf 수정요청
0
48
2
메서드 오버드라드
0
51
2
실수
0
46
1
공부 우선순위 우선강의 알려주세요
0
90
1
생성자 호출순서 강의 10번 문제 30분대 질문입니다
0
49
2
25년 2회 기출 5:40 질문입니다.
0
43
2
모의고사1회 3번 파이썬문제
0
75
2
C언어 출제변형 6번 문제
0
50
2
c언어 출제변형 강의 질문
0
32
2
28:40
0
34
2
C : 언어 배열과 문자열 수업자료
0
31
2
파이썬 리스트, 딕셔너리 질문
0
43
2
모의고사 관련 질문 건
1
69
3
자료 내용 오류
0
64
2
정적 변수, 정적 메서드(static) v2
0
51
2
v1.2 와 v0.91 PDF
0
104
1
업캐스팅 (부모형태, 자식생성자)
0
51
2
정보처리산업기사 준비중입니다.
0
74
2
실기 D -6
0
105
2
(기출) 2024년 2회 기출문제 - 이론 포함 22분32초 질문입니다
0
60
3





