Write a C program to count frequency of digits in a given number. How to find frequency of digits in a given number using loop in C programming. Logic to find total occurrences of each digits in a given number in C program.
Example
Input
Input any number: 116540
Output
Frequency of 0 = 1 Frequency of 1 = 2 Frequency of 2 = 0 Frequency of 3 = 0 Frequency of 4 = 1 Frequency of 5 = 1 Frequency of 6 = 1 Frequency of 7 = 0 Frequency of 8 = 0 Frequency of 9 = 0
Required knowledge
Basic C programming, For loop, While loop, Array
Logic to find frequency of digits in a number
Step by step description to count frequency of digits in a number.
- Input a number from user. Store it in some variable say num.
- Declare and initialize an array of size 10 to store frequency of each digit. Why declare array of size 10? Because total number of digits is 10 i.e. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
- Extract last digit of given number by performing modulo division by 10. Store the result in some variable say
lastDigit = num % 10
. - Increment the frequency of a digit found above i.e. lastDigit. To increment frequency perform
freq[lastDigit]++
.The value of lastDigit will be always between 0-9 inclusive. Hence it can be used as an index to freq array.
- Remove last digit from the number since it is processed and not required further. To remove last digit divide the number by 10 i.e.
num = num / 10
. - Repeat step 3 to 5 till number is greater than 0.
- Finally print frequency of each element in the freq array.
Program to count frequency of digits in a number
/**
* C program to count frequency of digits in a given number
*/
#include <stdio.h>
#define BASE 10 /* Constant */
int main()
{
long long num, n;
int i, lastDigit;
int freq[BASE];
/* Input number from user */
printf("Enter any number: ");
scanf("%lld", &num);
/* Initialize frequency array with 0 */
for(i=0; i<BASE; i++)
{
freq[i] = 0;
}
/* Copy the value of 'num' to 'n' */
n = num;
/* Run till 'n' is not equal to zero */
while(n != 0)
{
/* Get last digit */
lastDigit = n % 10;
/* Remove last digit */
n /= 10;
/* Increment frequency array */
freq[lastDigit]++;
}
/* Print frequency of each digit */
printf("Frequency of each digit in %lld is: \n", num);
for(i=0; i<BASE; i++)
{
printf("Frequency of %d = %d\n", i, freq[i]);
}
return 0;
}
Let us take a note on above program.
#define BASE 10
defines a constant with name BASE. Since there are 10 digits in decimal number system hence I have defined it as a constant variable.- I have declared num with
long long
data type and to access along long
I have used%lld
format specifier.However some compiler does not support
long long
type. If you are facing issues withlong long
type you can uselong
orint
type. - In statement
n /= 10;
I have used shorthand assignment operator which is equivalent ton = n / 10;
. - The increment statement
freq[lastDigit]++;
is equivalent tofreq[lastDigit] = freq[lastDigit] + 1;
.
Output
Enter any number: 11203458760011 Frequency of each digit in 11203458760011 is: Frequency of 0 = 3 Frequency of 1 = 4 Frequency of 2 = 1 Frequency of 3 = 1 Frequency of 4 = 1 Frequency of 5 = 1 Frequency of 6 = 1 Frequency of 7 = 1 Frequency of 8 = 1 Frequency of 9 = 0
Happy coding 😉
Recommended posts
- Loops programming exercises index.
- C program to find frequency of each character in a given string.
- C program to find frequency of each element in a given array.
- C program to count total number of digits in a number.
- C program to find sum of digits of a given number.
- C program to swap first and last digit of a given number.
- C program to check whether a given number is palindrome or not.