1. 程式人生 > >C語言處理數字(判斷數字的位數、順序輸出數字、逆序輸出數字)

C語言處理數字(判斷數字的位數、順序輸出數字、逆序輸出數字)

學習了處理數字的辦法,如何判斷一個數是幾位數,如何將他順序輸出,如何將他逆序輸出。在生活中,用處特別大。

1、判斷數字位數。

首先,我們來看一下如何判斷給出的數是幾位數。次判斷方法由兩句核心語句組成:

intcount = 0;
 while(n !=0)                                           //

判斷他是一個非零的數
 {
  count++;                                            //
當他為非零數時,位數加一
  n /=10;                                              //
丟棄個位
 }

首先判斷數是否為零,若不為零,位數加一,再丟棄個位,直到數為零時,迴圈結束輸出位數。

2、順序輸出這個數。

在順序輸出中,我們要呼叫判斷位數的函式。我們還需要定義一個power數,用來儲存10的次方數。首先呼叫它是一個幾位數,再利用迴圈將power賦值成10的位數減一次方,用數除power,得到最高位,用數餘power丟棄最高位,再將power除十去位,再進行迴圈。直到數為零,迴圈結束。

核心語句:

int power = 1;
 for(int r = 1;r <= count-1;r++)
 {
  power*=10;
 }
 while(n!=0)
 {
  printf("%d",n/power);                         //
得到最高位
  n %=power;                                        //
丟棄最高位
  power/=10;
 }

3、逆序輸出這個數

相比順序,逆序輸出更加簡單,首先判斷他是否為零,再將它餘十得出最小位,輸出後再除十,丟棄最小位。

核心語句:

while(n != 0)

      {

            count= n%10;                         //得到最小位

            printf("%d\n",count);                    //輸出最小位

            n /=10;                                 //拋棄最小位

      }

以下為原始碼:

 

//判斷一個數是幾位數

#include<stdio.h>

int GetNumbers(int n)

{

      int count =0;

      while(n !=0)                                           //判斷他是一個非零的數

      {

            count++;                                           //當他為非零數時,位數加一

            n /=10;                                              //丟棄個位

      }

      returncount;

}

int main()

{

      printf("此數字為%d位數\n",GetNumbers(57777));

      printf("此數字為%d位數\n",GetNumbers(503768));

      return 0;

}

 

 

//逆序輸出一個數

 

#include<stdio.h>

int PrintReverse(int n)

{

      int count =0;

      while(n !=0)

      {

            count= n%10;                              //得到最小位

            printf("%d\n",count);                   //輸出最小位

            n /=10;                                         //拋棄最小位

      }

      return 0;

}

int main()

{

      PrintReverse(122562);

      return 0;

}

//順序輸出一個數

#include<stdio.h>

int GetNumbers(int n)

{

      int count =0;

      while(n !=0)

      {

            count++;

            n /=10;

      }

      returncount;

}

int PrintOrder(int n)

{

      int count =GetNumbers(n);

      int power =1;

      for(int r =1;r <= count-1;r++)

      {

            power*=10;

      }

      while(n!=0)

      {

            printf("%d",n/power);                          //得到最高位

            n %=power;                                        //丟棄最高位

            power/=10;

      }

      return 0;

}

int main()

{

      PrintOrder(12345);

      return 0;

}