C program to find the number of digits in a number :
In this tutorial, we will learn how to find the total number of digits in an integer. For example, the number 123 contains 3 digits. We will learn two different ways to solve this problem. First one is by using a while loop and then secondly, by using a recursive method.
Algorithm :
The main algorithm or process we are going to use is as below :
- For example, we are finding the number of digits in 234.
- Suppose, count holds the total number of digits. In the beginning, count = 0.
- Divide 234 by 10 . 234/10 = 23. Increment count -> count = 1
- Divide 23 by 10 . 23/10 = 2. Increment count -> count = 2
- Divide 2 by 10 . 2/10 = 0. Increment count -> count = 3
- Since last result was 0, final result is 3 .
Find the number of digits using a while loop :
Following C program will find the total number of digits using one while loop :
#include<stdio.h>
int main(){
//1
int no;
int totalDigits = 0;
//2
printf("Enter a number : ");
scanf("%d",&no);
//3
while(no!=0){
//4
no = no/10;
totalDigits ++;
}
//5
printf("Total digits in the number is %d\n",totalDigits);
}
Explanation :
The commented numbers in the above program denote the step number below :
- Create one variable no to store the number and one variable totalDigits to store the count of digits in the number.
- Ask the user to enter a number. Read and save it in variable no.
- Run one while loop. This loop will run continuously till the number becomes 0.
- Inside the loop, divide the no by 10 and set this value to no itself. Increment the totalDigits by one.
- After the loop is completed, totalDigits should hold the total count of digits. Print it out.
Using recursive method :
In this program, we will use the same approach as above. Only difference is that instead of a while loop, one method will call itself again and again.
#include<stdio.h>
//2
int findTotalDigits(int no){
//3
if(no == 0){
return 0;
}
//4
return 1 + findTotalDigits(no/10);
}
int main(){
int no;
int totalDigits = 0;
printf("Enter a number : ");
scanf("%d",&no);
//1
totalDigits = findTotalDigits(no);
printf("Total digits in the number is %d\n",totalDigits);
}
Explanation :
- In this program, findTotalDigits() function is used to fing the total count. It returns the total count and we are storing it in totalDigits variable.
- findTotalDigits() takes one integer as input and return one integer (total count).
- If the provided number is 0, return 1.
- Else return 1 + findTotalDigits(no/10) , i.e. call the same method again.
- For number 123 , it will return 1 + findTotalDigits(12) .
- findTotalDigits(12) will return 1 + findTotalDigits(1).
- findTotalDigits(1) will return 1 + findTotalDigits(0).
- findTotalDigits(0) will return 0 ( as mentioned on step 3).
So, finally it will rreturn 1 + 1 + 1 = 3 for 123.
Sample Outputs :
Enter a number : 123
Total digits in the number is 3
Enter a number : 1234567
Total digits in the number is 7
Enter a number : 889383
Total digits in the number is 6
You might also like :