[C언어] 정수의 자릿수를 세는 프로그램
ET의 공부/C언어2020. 4. 14. 21:14
안녕하세요 오늘은 정수의 자릿수를 세는 프로그램을 만드는 방법에 대해 포스팅하려 합니다.
정수의 자릿수 세기.1
첫 번째 방법은 while문과 나눗셈 연산을 사용해서 구하는 방법입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include "stdio.h"
int main()
{
int n;
int count = 0;
printf("\n정수입력: ");
scanf("%d", &n);
while(n != 0)
{
n = n/10;
++count;
}
printf("\n자릿수: %d\n", count);
return 0;
}
|
c언어의 나눗셈(/) 연산은 나머지는 버리게 됩니다. (Ex. 9/10 => 0) 이를 이용하여 10으로 나눈 값이 0이 아니라면 count를 증가시켜서 자릿수를 셀수 있습니다.
정수의 자릿수 세기.2
두 번째 방법은 재귀함수를 이용한 방법입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#include "stdio.h"
int number_of_digits(int n)
{
if(n == 0){
return 0;
}
while(n != 0)
{
return 1 + number_of_digits(n/10);
}
return 0;
}
int main(void)
{
int n;
printf("\n정수입력: ");
scanf("%d", &n);
printf("\n자릿수: %d\n", number_of_digits(n));
return 0;
}
|
나눗셈을 이용하여 자릿수를 구한다는 점은 위의 방법과 차이가 없습니다.
정수의 자릿수 세기.3
세 번째 방법은 log를 이용한 방법입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#include "stdio.h"
#include "math.h"
int number_of_digits(int n)
{
return floor(log10(n)+1);
}
int main(void)
{
int n;
printf("\n정수입력: ");
scanf("%d", &n);
printf("\n자릿수: %d\n", number_of_digits(n));
return 0;
}
|
math.h 함수를 포함하여 floor()와 log10() 을 사용하였습니다. floor는 내림 함수이고 log10은 사용로그 입니다.
로그는
314를 예를 들면 log10^2 는 2이므로 남고 3.14부분은 floor함수로 버리게 됩니다. return floor(log10(n)+1); 에서 1을 더해주므로
자릿수 3을 구할 수 있습니다.
감사합니다.
'ET의 공부 > C언어' 카테고리의 다른 글
[C언어] 특정 년,월의 일수를 찾는 방법 (0) | 2020.07.10 |
---|---|
[C언어] 정수의 모든 0을 1로 바꾸는 방법 (0) | 2020.07.10 |
[C언어] 전치 행렬을 만드는 프로그램 (0) | 2020.04.12 |
[C언어] 두 문자열을 합치는 3가지 방법 (1) | 2020.04.12 |
[C언어] 입력 받은 문자가 알파벳인지 아닌지 판별하는 프로그램 (0) | 2020.04.12 |
댓글()