How to write a C Program to Count Number of Digits in a Number using For Loop, While Loop, Functions and Recursion

## C Program to Count Number of Digits in a Number using While Loop

This C program to count digits in a number allows the user to enter any positive integer. And then, it will divide the given number into individual digits and count those individual digits using While Loop.

/* C Program to Count Number of Digits in a Number using While Loop */ #include <stdio.h> int main() { int Number, Reminder, Count=0; printf("\n Please Enter any number\n"); scanf("%d", &Number); while(Number > 0) { Number = Number / 10; Count = Count + 1; } printf("\n Number of Digits in a Given Number = %d", Count); return 0; }

**OUTPUT**

**ANALYSIS**

This program to count number of digits in c allows the user to enter any positive integer and then, that number is assigned to the Number variable.

Next, Condition in the While loop will make sure that, the given number is greater than 0 (Means Positive integer and greater than 0)

User Entered value: Number = 9875 and Count = 0

**First Iteration**

Number = Number / 10 = 9875 / 10

Number = 987

Count = Count + 1 = 0 + 1

Count = 1

**Second Iteration**

From the first Iteration the values of both Number and Count has been changed as: Number = 987 and Count = 1

Number = Number / 10 = 987 / 10

Number = 98

Count = Count + 1 = 1 + 1

Count = 2

**Third Iteration**

From the Third Iteration the values of both Number and Count has been changed as: Number = 98 and Count = 2

Number = Number / 10 = 98 / 10

Number = 9

Count = Count + 1 = 2 + 1

Count = 3

**Fourth Iteration**

From the Fourth Iteration of c count digits in a number program, the values of both Number and Count has changed as: Number = 9 and Count = 3

Number = Number / 10 = 9 / 10

Number = 0

Count = Count + 1 = 3 + 1

Count = 4

**Here** Number = 0 so, the condition present in the while loop will fail

Last printf statement will print the number of digits present in the given number using the Count variable as output. So, the output of given variable 9875 is 4

## C Program to Count Number of Digits in a Number using For Loop

This program to count number of digits allows the user to enter any positive integer and then it will divide the given number into individual digits and then count those individual digits using For Loop.

/* C Program to Count Number of Digits in a Number using For Loop */ #include <stdio.h> int main() { int Number, Reminder, Count; printf("\n Please Enter any number\n"); scanf("%d", &Number); for (Count=0; Number > 0;Number=Number/10) { Count=Count + 1; } printf("\n Number of Digits in a Given Number = %d", Count); return 0; }

We just replaced the While loop in the above C program to count number of digits in a number example with the For loop. If you don’t understand the for loop then please refer For Loop article here: For Loop

**OUTPUT**

## C Program to Count Number of Digits in a Number Using Functions

This program to count number of digits allows the user to enter any positive integer and then it will divide the given number into individual digits and counting those individual digits using Functions.

/* C Program to Count Number of Digits in a Number Using Functions */ #include <stdio.h> int Count_Of_Digits (int); int main() { int Number, Count = 0; printf("\n Please Enter any number\n"); scanf("%d", &Number); Count = Count_Of_Digits (Number); printf("\n Number of Digits in a Given Number = %d", Count); return 0; } int Count_Of_Digits (int Number) { int Count; while(Number > 0) { Number = Number / 10; Count = Count + 1; } return Count; }

**OUTPUT**

**ANALYSIS**

Within this count number of digits program, When the compiler reaches to Count_Of_Digits (Number) line in main() program then the compiler will immediately jump to below function:

int Count_Of_Digits (int Number)

We already explained LOGIC above example. Please refer Program to Count number of Digits of a Given Number using While Loop Analysis section.

The last line ends with return Count Statement.

**NOTE:** If we create a function with Void then there is no need to return any value but, if we declared a function with any data type (int, float etc) then we have to return something out from the function.

## C Program to Count Number of Digits in a Number Using Recursion

This program to count number of digits allows the user to enter any positive integer and then it will divide the given number into individual digits and counting those individual digits using Recursion.

/* C Program to Count Number of Digits in a Number Using Recursions */ #include <stdio.h> int Count_Of_Digits (int); int main() { int Number, Count = 0; printf("\n Please Enter any number\n"); scanf("%d", &Number); Count = Count_Of_Digits (Number); printf("\n Number of Digits in a Given Number = %d", Count); return 0; } int Count_Of_Digits (int Number) { static int Count =0; if(Number > 0) { Count = Count + 1; Count_Of_Digits (Number / 10); } return Count; }

**OUTPUT**

**ANALYSIS**

Within this program to count number of digits, In the Count_Of_Digits (int Number) function definition,

A static variable will initialize the value only when the function called the first time.

Count_Of_Digits (Number / 10) statement will help to call the function Recursively with the updated value. If you miss this statement then, after completing the first line it will terminate.

For example, Number = 1234 then the output will be 4