프로그래밍/C, C++ 공부
정수의 자릿수 구하기, 한 자리씩 판별하기
Valentyne
2018. 2. 16. 10:23
자릿수 구하기
int GetNumberOfDigits(int n)
{ // n이 음수거나 양수거나 상관없다.
int number = 1;
for(int i = n; i != 0; i/=10)
++number;
return number;
}
또는
int GetNumberOfDigits(int n)
{ // n이 음수거나 양수거나 상관없다.
int number = 1;
for (int i = 10; n / i != 0; i *= 10)
++number;
return number;
}
밑에는 내가 작성해본 것인데 위에 것이 이해하기도 좋고 효율도 좋아보인다.
정수 한 자리씩 판별하기
위의 코드를 응용하면
void foo(int n )
{
for (int i = n; i!= 0; i/= 10)
if(i % 10 != 0)
// do something here ...
else
// 0일 때
}
%10이 1의 자리를 추출한다는 걸 이용해 한자리씩 줄여가면서 체크해볼 수 있다.
AtoI
int AtoI(char* sz)
{
int result = 0;
for(int i = 0; sz[i] != 0; ++i){
result = result * 10 + sz[i] - '0';
return result;
}