void main() { int var, check = 10, su = 1; back: printf("자릿수를 판별할 수를 입력해 주세요 : "); scanf("%d", &var); if(var < 1) { printf("잘못된 수를 입력하셨습니다.\n\n"); goto back; } while(var / check) { su++; check *= 10; } printf("%d의 자릿수는 %d입니다.\n", var, su); }
프로그램 실행화면
양의 정수를 입력받아 그 자릿수를 알아내는 프로그램이다. 알고리즘은 간단하다. 10으로 나누었을 때 0이 아니라면 일딴 두자리 숫자인 것이다.
10, 100, 1000 ````` 이렇게 나누어 그 몫이 0이 되는 시점이 있을 것이다. 그러면 쉽게 자릿수를 구할 수 있다. 여기서 궁금한 부분이 있을 수 있다.
한 자리 숫자일 경우는 어떻게 알 수 있을까? 프로그램을 잘 보면 알 수 있겠지만 su의 초기값은 1이다. 그리고 1보다 작은 수라면 다시 입력받겠금 되어있다.
따라서 10으로 나누었는데 0이었다. 그래서 while(var / check)을 실행하지 않았다면 자연스럽게 자릿수는 1이 되는 것이다.