C program to find first and last digit of any number

Previous Program Next Program

Write a C program to enter a number from user and find first and last digit of number using loop. How to find first and last digit of a number in C programming. Logic to find first and last digit of a given number without using loop in C program.

Example

Input

Input number: 1234

Output

First digit: 1
Last digit: 4

Required knowledge

Basic C programming, For loop

Logic to find last digit of a number

Finding the last digit of any number is the simplest task then finding the first digit. For this we just need to perform modulus % operation. Last digit of any number is the result obtained by the modular division of given number by 10.

Suppose if n = 1234
Last digit = n % 10 = 4

Let us implement the above logic to find last digit.

Program to find last digit

/**
 * C program to find last digit of a number
 */

#include <stdio.h>

int main()
{
    int n, lastDigit;

    /* Read number from user */
    printf("Enter any number: ");
    scanf("%d", &n);

    /* Get the last digit */
    lastDigit = n % 10;

    printf("Last digit = %d", lastDigit);

    return 0;
}

Logic to find first digit of number

Finding first digit of any number is little expensive than finding last digit. What you need to do is, divide the number by 10 till it is greater or equal to 10. At the end we are left with the first digit. Below is the step by step description to find first digit.

  1. Read a number from user. Store it in some variable say num.
  2. Copy the value of num to some variable. Which is first = num.
  3. Divide first by 10, till first >= 10.
  4. Finally you will be left with first digit in first.

Program to find first digit

/**
 * C program to find first digit of a number 
 */

#include <stdio.h>

int main()
{
    int n, first;

    /* Read number from user */
    printf("Enter any number: ");
    scanf("%d", &n);

    first = n;

    /* Remove last digit from number till only one digit is left */
    while(first >= 10)
    {
        first = first / 10;
    }

    printf("First digit = %d", first);

    return 0;
}

You can also use the below approach to find the first and last digit of any number efficiently. But before you move on to the program. Below is a recommended reading for this program -

Logic to find first and last digit without loop

Below is the step by step descriptive logic to find first and last digit without loop.

  1. Read a number from user. Store it in some variable say num.
  2. Get the last digit using modulo operation by 10. Which is lastDigit = num % 10.
  3. In real first digit is equal to n / (10 ^ digits). Where 10 ^ (digits - 1) is 10 power to total number of digits - 1. Hence get the first digit using n / pow(10, digits - 1).

Program to find first and last digit

/**
 * C program to find first and last digit of a number
 */

#include <stdio.h>
#include <math.h>

int main()
{
    int n, firstDigit, lastDigit, digits;

    /* Read a number from user */
    printf("Enter any number: ");
    scanf("%d", &n);

    lastDigit = n % 10; //Get last digit
    digits = (int)log10(n); //Total number of digits - 1
    firstDigit = (int)(n / pow(10, digits)); //Get first digit

    printf("First digit = %d\n", firstDigit);
    printf("Last digit = %d\n", lastDigit);

    return 0;
}

Output
Enter any number: 1234
First digit = 1
Last digit = 4

Happy coding ;)

You may also like

Previous Program Next Program
Any doubt or suggestion write here. I will try my best to help. Before posting your code you must escape it to view. To format your source code and use format highlighting, post your source code inside
< pre>< code >----Your Source Code---- < / code > < / pre > (Remove spaces from pre and code tags)

11 comments:

  1. Hey man whats up ? I did this code and have a question. It gives the correct output when I find the last digit first and the first digit next but when I try to find the last digit after using loop to find the first digit it takes the input from the loop and keeps on giving the wrong output of the last digit. Is there any way to avoid this if you are finding the digits in a single program ? Thanks.

    ReplyDelete
    Replies
    1. Can you show me your code. What actually you have written in your source code.

      Delete
  2. I did this after I found that getting the last digit after finding the first digit gave garbage value. So if I had to find the last digit after finding the first digit how do I avoid it from taking the input of n from the loop ? I am confused in that.

    #include
    main()
    {
    int n, ld ;
    printf("Enter any number : ");
    scanf("%d", &n);

    ld = n%10;
    printf("The last digit of entered number is %d\n", ld);


    while(n>=10)
    {
    n = n/10;
    }

    printf("The first digit of entered number is %d\n", n);



    system("pause");


    }

    ReplyDelete
    Replies
    1. If you want to compute first digit prior to last digit, what you need to copy the value of n to another variable.

      Delete
    2. Here is a C program to find the first digit first and then last digit

      #include <stdio.h>

      int main()
      {
      int n, temp, ld;

      printf("Enter any number: ");
      scanf("%d", &n);

      temp = n;

      while( n>=10 )
      {
      n = n / 10;
      }

      ld = temp % 10;

      printf("First digit = %d\n", n);
      printf("Last digit = %d", ld);

      return 0;
      }

      Delete
  3. if the number is 01234 then it'll return 1.. not 0

    ReplyDelete
    Replies
    1. Hello Abhi, yes it will return 1 because when you parse 01234 as an integer it regects the 0 in the start and accepts only 1234 as there is no meaning of 0 in beginning.

      But if you want to return 0 instead of 1 you shoud use strings to handle that. And returning the first character of the string.

      Delete

  4. consider 2 numbers. write a program to swap the first digit of the first number with last digit of the second number. example input: a= 1234 b= 56789 output: a=9234 b=56781

    ReplyDelete