C programs to count the digits in an integer have been shown here. For example, if a number is 9876, the total number of digits is 4. The algorithm, pseudocode and time complexity of the programs have also been covered below.

1. Algorithm to count the digits in an integer

1. Take a number x as input.

2. Initialize a counter to 0 say c = 0.

3. Perform x = x / 10 and Increment c by 1 i.e. c = c + 1

4. If x = 0 stop the process and display c as output else go to step 3.

2. Pseudocode to count the digits in an integer

Input : A number $n$

Output : Total no of digits in $n$

1. Procedure countDigits($n$):

2. $c \leftarrow 0$

3. If $n == 0$:

4. $c \leftarrow 1$

5. Else:

6. Repeat until $n \neq 0$

7. $n \leftarrow n / 10$

8. $c \leftarrow c + 1$

9. Return $c$

10. End Procedure

3. Time complexity to count the digits in an integer

Time Complexity: O(log(n))

Where n is the input number.

4.1. C Program & output to count the digits in an integer using iteration

Code has been copied
/*****************************************
alphabetacoder.com
C program to count the number of digits
in an integer using iterative approach
******************************************/

#include <stdio.h>

int main() {
// declare variables
int num, count = 0;

// take input of the number
printf("Enter the integer = ");
scanf("%d", & num);

//count the digits
if (num == 0)
count = 1;
else {
while (num != 0) {
num = num / 10;
count++;
}
}

// display result
printf("Number of digits = %d", count);

return 0;
}


Output

Case 1:

Enter the integer = 8912

Number of digits = 4

Case 2:

Enter the integer = 5413896

Number of digits = 7

4.2. C Program & output to count the digits in an integer using recursion

Code has been copied
/*****************************************
alphabetacoder.com
C program to count the number of digits
in an integer using recursive approach
******************************************/

#include <stdio.h>

// recursive function to calculate
// no of digits in an integer
int count_digit(int num) {
if (num / 10 == 0)
return 1;
else
// call function
return 1 + count_digit(num / 10);
}

int main() {
// declare variables
int num, count = 0;

// take input of the number
printf("Enter the integer = ");
scanf("%d", & num);

//count the digits by calling function
count = count_digit(num);

// display result
printf("Number of digits = %d", count);

return 0;
}


Output

Case 1:

Enter the integer = 8912

Number of digits = 4

Case 2:

Enter the integer = 0

Number of digits = 1

4.3. C Program & output to count the digits in an integer using logarithm

Code has been copied
/************************************
alphabetacoder.com
C program to count the number of
digits in an integer using logarithm
**************************************/

#include <stdio.h>
#include <math.h>

int main() {
// declare variables
int num;

// take input of the number
printf("Enter the integer = ");
scanf("%d", & num);

// calculate result using log10
printf("Number of digits = %d", (int) floor(log10(num) + 1));

return 0;
}


Output

Case 1:

Enter the integer = 3456

Number of digits = 4

Case 2:

Enter the integer = 1234567

Number of digits = 7