Write a C program to input a number from user and count number of digits in the given integer using loop. How to find total digits in a given integer using loop in C programming. Logic to count digits in a given integer without using loop in C program.
Example
Input
Input num: 35419
Output
Number of digits: 5
Required knowledge
Basic C programming, While loop
There are various approaches to count number of digits in a given integer. Here, I will explain two logic to count number of digits, using loop and without using loop.
Logic to count number of digits in an integer
First logic is the easiest and is the common to think. It uses loop to count number of digits. To count number of digits divide the given number by 10 till number is greater than 0. For each iteration increment the value of some count variable.
Step by step descriptive logic to count number of digits in given integer using loop.
- Input a number from user. Store it in some variable say num.
- Initialize another variable to store total digits say
digit = 0
. - If
num > 0
then increment count by 1 i.e.count++
. - Divide num by 10 to remove last digit of the given number i.e.
num = num / 10
. - Repeat step 3 to 4 till
num > 0
ornum != 0
.
Program to count total digits in a given integer using loop
/**
* C program to count number of digits in an integer
*/
#include <stdio.h>
int main()
{
long long num;
int count = 0;
/* Input number from user */
printf("Enter any number: ");
scanf("%lld", &num);
/* Run loop till num is greater than 0 */
do
{
/* Increment digit count */
count++;
/* Remove last digit of 'num' */
num /= 10;
} while(num != 0);
printf("Total digits: %d", count);
return 0;
}
Logic to count number of digits without using loop
The second logic uses logarithms to count number of digits in a given integer.
Total number of digit in a given integer is equal to log10(num) + 1
. Where log10()
is a predefined function present in math.h
header file. It returns logarithm of parameter passed to the base 10. However, you can use it to count total digits using formula log10(num) + 1
.
Program to count number of digits without using loop
/**
* C program to count number of digits in an integer without loop
*/
#include <stdio.h>
#include <math.h> /* Used for log10() */
int main()
{
long long num;
int count = 0;
/* Input number from user */
printf("Enter any number: ");
scanf("%lld", &num);
/* Calculate total digits */
count = (num == 0) ? 1 : (log10(num) + 1);
printf("Total digits: %d", count);
return 0;
}
Note: In the above programs I have used long long
data type with %lld
format specifier. You can use long
type with %ld
format specifier if long long
is not supported by your compiler.
Output
Enter any number: 123456789 Total digits: 9
Happy coding 😉