回覆列表
  • 1 # kevinlq

    這個問題很好解決。(純手機打字,還請諒解)

    首先,明白整數在記憶體中以二進位制呈現,比如10

    表示成二進位制就是1010

    那麼要計算10有多少位?怎麼算?很簡單,直接來:

    10除以10等於1,1除以10等於0,所以有2位。

    (用電腦給你完善一下,希望滿意)

    具體程式碼:

    原理

    一個整數,每次除以10,這個數就會少一位,所以思路就是這樣的,不斷的將這個數除以10,直到該數變為0為止。

    後記

    認認真真回答。希望看到的小夥伴能隨手給個贊,你的讚賞是一種支援。

  • 2 # 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);

    }

    }

    第三步:除錯結果

  • 3 # Nice2cu752

    #include<stdio.h>

    int main()

    {int i=0;

    long int n;

    printf("輸入=");

    scanf("%d",&n);

    while(n!=0)

    {

    n=n/10;

    i++;

    }

    printf("位數=%d\n",i);

    return 0;

    }依靠整數除以10然後迴圈最後到0,迴圈了幾次就是幾位數,正整數和負整數都可以,不過這個只能數到十位,剛開始學勿噴。

  • 中秋節和大豐收的關聯?
  • 如何評價拜占庭皇帝曼努埃爾一世?