[C++ 언어-기초실습-16] 정수를 입력받아 각 자리 수을 더한 값을 구하라?
[C++ 언어-기초실습-16] 정수를 입력받아 각 자리 수을 더한 값을 구하라?
- 다운 사이트 : https://sourceforge.net/projects/orwelldevcpp/
- 웹컴파일러 : https://www.tutorialspoint.com/compile_c_online.php
오늘은 어떤 실습 문제를 만들까 하다가 정수 하나를 입력 받아서 정수에 있는 각 자리 숫자들을 더한 값을 구해보는 실습을 해보는 것이 좋을 것 같아서 오늘의 주제로 결정했네요. 그럼 시작해 볼까요.
1. 정수 입력과 자릿수 구하기
int a=123;
가령 정수가 123이란 수가 있다면 '1', '2', '3'이라는 각 자릿 수를 어떻게 구할까요. 가장 간단한 방법은 '%'연산자를 이용하여 10으로 나눈 나머지 값으로 자릿수를 구하면 됩니다. 10으로 나눈 나머지면 '3'이라는 숫자를 구할 수 있게 됩니다. 그러면 '2'라는 숫자를 구하기 위해서는 또 고민하게 됩니다. '/'연산자를 이용하여 10으로 나눈 몫을 하면 일의 자리를 절삭할 수 있습니다.
설명이 좀 이해가 안갈 수 있는데 식으로 설명하면 다음과 같습니다.
int a=123;
1번째 :
a % 10 = 123%10 => 3
a = a / 10 => 123 / 10 => 12
2번째 :
a % 10 = 12%10 => 2
a = a / 10 => 12 / 10 => 1
어떤 느낌으로 전개 되는지 아시겠지요.
이제 코딩을 통해 실제 하나의 정수를 입력 받아 각 자리수를 더한 값을 출력 해 보도록 하겠습니다.
2. 코딩
[전체소스]
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int a;
int b;
int sum=0;
cout<<"정수 하나를 입력하시오? ";
cin>>a;
cout<<"자릿수 총합 : ";
do{
b=a%10;
sum=sum+b;
cout<<b;
a=a/10;
if(a!=0) cout<<"+";
}while(a!=0);
cout<<"="<<sum<<endl;
return 0;
}
[결과]
마무리
오늘의 핵심은 각 자리숫자를 쪼갤 수 있느냐의 능력입니다. 문자열의 경우는 배열 변수로 각 위치(index)로 각 자릿수를 쉽게 쪼갤 수 있습니다. 참고로 위 정수입력이 아닌 숫자여도 문자열로 입력 받아서 각 위치 값을 불러와서 문자를 숫자로 변환하는 함수를 이용하면 간단히 해결 할 수도 있습니다. 이부분은 한번 직접 만들어 보세요. 여기에서는 숫자의 개념과 숫자를 어떻게 분해해 낼 수 있는지의 능력을 테스트 하기 위한 실습입니다.
Thank you for your continued support towards JJM. For each 1000 JJM you are holding, you can get an additional 1% of upvote. 10,000JJM would give you a 11% daily voting from the 700K SP virus707 account.
Thank you