Lets write a C program to count the number of occurrences of digit k in user input positive integer number n, using recursion.
Page Contents
If user inputs n = 12235, and k = 2, then our C program should find how many times digit 2 is present in number 12235.
Note: (num % 10) fetches last digit in num. If num = 1234; (num%10) fetches the last digit from right, which is 4.
(num/10) removes the last number from right. If num = 1234; (num/10) removes last digit i.e., 4 and the result of (num/10) will be 123.
Related Read:
C Program To Count Digit k in Number n
#include<stdio.h>
int occurrence(int, int);
int main()
{
int n, k;
printf("Enter a positive integer number\n");
scanf("%d", &n);
printf("Which digits occurrence you want to check for?\n");
scanf("%d", &k);
printf("\n%d has appeared %d times in %d.\n", k, occurrence(n, k), n);
return 0;
}
int occurrence(int num, int k)
{
if(num == 0)
return 0;
else if(k == (num%10))
return(1 + occurrence(num/10, k));
else
return(occurrence(num/10, k));
}
Output:
Enter a positive integer number
12555
Which digits occurrence you want to check for?
5
5 has appeared 3 times in 12555.
#include<stdio.h>
int occurrence(int, int);
int main()
{
int n, k;
printf("Enter a positive integer number\n");
scanf("%d", &n);
printf("Which digits occurrence you want to check for?\n");
scanf("%d", &k);
printf("\n%d has appeared %d times in %d.\n", k, occurrence(n, k), n);
return 0;
}
int occurrence(int num, int k)
{
return( (num == 0)? 0 :
(k == (num%10)) ?
(1 + occurrence(num/10, k)) :
(occurrence(num/10, k)));
}
Output:
Enter a positive integer number
155555061
Which digits occurrence you want to check for?
5
5 has appeared 5 times in 155555061.
To know more about Ternary or Conditional Operator visit:
Ternary Operator / Conditional Operator In C.
First we write the base condition i.e., if num is 0, then our function returns 0 to the calling function. Else if num%10 is equal to the value of k, then we return (1 + occurrence(num/10, k)). That way we count or increment by 1 for each time we found a digit which is equal to k, and then we reduce the num by one digit from right by doing num/10. k value will remain same throughout the program execution.
If num%10 is not equal to k, then we simply divide the num by 10, and reduce the value of num by one digit from right.
Lets assume that user input value for n and k:
n = 1223; k = 2;
| n | (n%10) == k | count | n/10 |
|---|---|---|---|
| 1223 | False | 122 | |
| 122 | True | 1 | 12 |
| 12 | True | 1+1=2 | 1 |
| 1 | False | 1+1=2 | 0 |
So, 2 appeared 2 times in 1223.
For list of all c programming interviews / viva question and answers visit: C Programming Interview / Viva Q&A List
For full C programming language free video tutorial list visit:C Programming: Beginner To Advance To Expert