回覆列表
  • 1 # EXCEL進階課堂

    你的問題是:在C語言中怎麼一次性判斷一個整數有多少位?

    從問題來看,有一個前提,就是我們要判斷的是一個整數。這樣的話,我們就預設它一定是在取值範圍之內的整數。我們知道,在C語言當中,最大整數是存在long型當中。所以,我們就對long型的變數來做思考。

    以下內容為答問後的補充:前些時間發的,原本的意思是想提供一種可拓展應用的演算法給初學者。由整數位數判斷,到整數逆序組數,整數每位求和、求積等問題,都可以用這一演算法進行拓展。可是有夥伴非常強調一次性,認為應該是一條語句就能解決的問題。既然是這樣,我就補充發段程式碼。#include<stdio.h>#include<math.h>int main(){ long i; int n; printf("請輸入一個整數:"); scanf("%ld",&i); n=(int)log10(abs(i))+1;//這就是傳說中的一次性,呵呵! printf("%ld是一個%d位數",i,n);}

    第一步:演算法分析

    1.輸入一個整數給long型變數。

    2.利用降位統計法,統計位數。

    A.不管什麼樣的整數(0除外),它都有個位。

    B.一個整數(0除外)除以10,得到一個去掉現有個位的整數。

    如:123/10 得到是12 可以看作是把原來的個位丟掉,將原來數位統一下降1位。

    3.輸出位數。

    第二步:程式碼編寫

    #include<stdio.h>

    int main()

    { long a,b;

    int t=0;//用於記錄位數,計數器

    printf("請輸入一個整數:");

    scanf("%ld",&a);

    b=a;

    if(b==0)

    printf("你輸入的是0,我們不需要判斷它的位數");

    else

    { while(b!=0)

    { t++;

    b=b/10;

    }

    printf("%ld是%d位數",a,t);

    }

    }

    第三步:除錯結果

  • 中秋節和大豐收的關聯?
  • 中國銀行房貸5.39,貸款10年,已還貸兩年,要改浮點利率嗎?