1. 程式人生 > >一串數的統計位數和順序,逆序輸出

一串數的統計位數和順序,逆序輸出

給一個正整數,要求:

1.求出它是幾位數;

2.分別輸出每一位數字;

3.按逆序輸出各位數字。例如原數為321,應輸出為123。

用程式實現這個功能.

1.統計位數  如果給我們一個比較短的數,我們很容易知道是幾位數,長的數字我們會一個一個數,數到最後一個數,就可以得到 它是幾位數了。對於計算機而言,也可以這樣獲得位數,只不過數完一個數要把它丟棄。直到這個數為0時,就得到它的位數了。

int Getfigures(int n)  //得到一個數有幾位
{
 int count=0;  //定義一個能統計位數的量
 do                  //用do...while判斷
 {
  count++;  
  n=n/10;
 }while(n!=0);  
 printf("%d",count); 
 return count;

}

2.分別輸出每一位數

例如,取數字1234我們要輸出1 2 3 4,是先得到最高位,在丟棄最高位,但是得到最高位和丟棄最高位要稍微麻煩一點,比如1234得到1,那就需要1234除以1000,十的三次方,34得到3就需要除以10,十的一次方,所以可以看出得到最高位的方法就是先得到它的位數,然後用這個數除以10的 位數減一 次方,丟棄這個最高位就是對10的位數減一次方取絕對值, 我們可以通過power函式,求出10的幾次方。此過程中我們可以用迴圈求出要被除和取餘的數。

過程詳解可為:

1234/10-->123  123/10-->12   12/10-->1  

234/10-->23  23/10-->2

34/10-->3

4

void PrintOrderf(int n) //順序輸出數字,非常重要
{
int power=1;  
int count =0;//GetFigures(n);
for(int i=0;i<count-1;i++)//用迴圈語句for語句來得到最高指數-1
{
power *= 10;
}
do
{
printf("%d ",n/power);//得到第一位
n %= power ; //丟棄第一位
power /= 10; 
}while(n!=0);
printf("\n");

}

3.逆序輸出

順序輸出是丟棄個位,而逆序輸出則是得到個位。若要 1234逆序輸出 4 3 2 1,我們要先輸出4,然後丟棄4,剩下123,再輸出3,丟棄3,這個過程其實就是先得到個位數,然後丟棄個位數,再從新的數裡面得到新的個位數,再丟棄新的個位數,直到這個數變成0,得到個位很簡單,只需要%10就可以,丟棄個位也很簡單,只需要/10就可以了。 void PrintReverse(int n)  //逆序輸出
{  
   
    while(n!=0)                     //只要n不是0   
    {  
        printf("%d",n%10);  
        n=n/10;  
    }  
return 0;  
 }   


4.在測試的時候可以定義多組陣列來進行測試

int main()

{

printf("%d\n",Getfigures(0));//判斷為0的時候是否也能輸出
printf("%d\n",Getfigures(12345);//正常的正整數
printf("%d\n",Getfigures(-1234);//當數字為負的時候

}