본문 바로가기

강의자료/C/C++

017. 함수 연습문제(자리수 구하기)

◈ 이 글은 강의를 위하여 제가 직접 작성한 내용입니다. 따라서 퍼가실 경우, 출처를 명확히 해주시기 바랍니다!!
◈ This ariticle was written by me for teaching. So if you want to copy this article, please clarify the source!!


// 진수별 자리수를 구하는 HowMany() 함수를 만들어보자.

#include  
using namespace std;
//단축 연산자 /=, << =, >>=, +=, -=, *=, %=
int HowMany(int num,int jinsu);  //함수선언  
int main( )
{ 
	cout << "--- 2, 8, 16진수의 자리수 구하기 --" << endl;
	cout << "--- 정수를 입력하세요 --" << endl;
	int num=0;
	cin>>num;
	cout << num << "는 " << 2 << " 진수로 " << HowMany(num,2) << "자리다." << endl; 
	cout << num << "는 " << 8 << " 진수로 " << HowMany(num,8) << "자리다." << endl; 
	cout << num << "는 " << 10 << " 진수로 " << HowMany(num,10) << "자리다." << endl; 
	cout << num << "는 " << 16 << " 진수로 " << HowMany(num,16) << "자리다." << endl; 
	return 0;
} 

int HowMany(int num, int jinsu)
{
	//123 -> 1, 12 -> 2, 1 -> 3, 0
	int count = 0;
	while(num > 0)
	{
		num /= jinsu;
		count++;
	}

	return count;
}
/*
>> 함수와 while문을 이용하여 각 자리수의 합을 구하는 코드를 작성하시오.
1. 정수를 인자로 받아 각 자리수의 합을 출력하는 eachsum함수를 작성하시오.
2. 101부터 200까지의 숫자에 대해 각 자리수의 합을 구하는 코드를 작성하시오.

101 각 자리의 합 : 2
102 각 자리의 합 : 3
103 각 자리의 합 : 4
104 각 자리의 합 : 5
  .
  .
  .
199 각 자리의 합 : 19
200 각 자리의 합 : 2
*/

#include  
using namespace std;
int eachsum(int num);
void main()
{
	for(int i=101; i<=200; i++)
	{
		cout << i << " 각 자리의 합 : " << eachsum(i) << endl;      
	}         
}
int eachsum(int num)
{
	int total = 0;
	// 123, 3 / 123->12, 2 / 12->1, 1
	while(num > 0)
	{
		total += (num%10);
		num /= 10;
	}

	return total;
}