回覆列表
-
1 # kevinlq
-
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,迴圈了幾次就是幾位數,正整數和負整數都可以,不過這個只能數到十位,剛開始學勿噴。
這個問題很好解決。(純手機打字,還請諒解)
首先,明白整數在記憶體中以二進位制呈現,比如10
表示成二進位制就是1010
那麼要計算10有多少位?怎麼算?很簡單,直接來:
10除以10等於1,1除以10等於0,所以有2位。
(用電腦給你完善一下,希望滿意)
具體程式碼:
原理一個整數,每次除以10,這個數就會少一位,所以思路就是這樣的,不斷的將這個數除以10,直到該數變為0為止。
後記認認真真回答。希望看到的小夥伴能隨手給個贊,你的讚賞是一種支援。