C語言如何計算一個整數(shù)的位數(shù)
計算一個整數(shù)的位數(shù)
只需要設(shè)計一個計時器,因為C語言中除法只留下整數(shù)部分,所以可以拿數(shù)字/10;數(shù)字位數(shù)即為循環(huán)次數(shù),待n為個位時n/10=0,然后循環(huán)結(jié)束。
#include<stdio.h>
int main()
{
int n;
int count = 0;
scanf("%d",&n);
if(n == 0)//n為0的情況,個人感覺無位數(shù),退出
{
return 0;
}
else
{
while(n)
{
n=n/10;//每次去掉數(shù)字最后一位
count++;//循環(huán)一次計數(shù)器+1
}
}
printf("%d",count);
return 0;
}

關(guān)于如何獲取整數(shù)各個位
對于這個在實際的編程題中應(yīng)用比較多,做了一個總結(jié)。
基礎(chǔ)思路
...
int i=123,a;
a = i%10;
printf("a=%d",a);輸出的便是i的個位數(shù)
a=3
然后知道通過 i/10 便可"清除"個位數(shù)
由此我們便可以通過循環(huán)此方法獲取各個位數(shù)
...
int i=123,a,b,c;
a = i%10;
i/=10;
b = i%10;
i/=10;
c = i%10;
i/=10;
printf("a=%d,b=%d,c=%d",a,b,c);輸出的a,b,c便是 i 的個位數(shù),十位數(shù),百位數(shù)
于是我們便知道將整數(shù)反轉(zhuǎn)的方法
...
int i;
long rex = 0;//反轉(zhuǎn)后的整數(shù)
while(i != 0){
? ? rex = rex*10 + i % 10;
? ? i = i / 10;
}//溢出判斷暫時忽略將整數(shù)反轉(zhuǎn)后那我們又可以得到將整數(shù)按位存入數(shù)組的方法
int i,j,count=0;
int nums[numsSize];//需要存入的數(shù)組
long rex = 0;
while(i != 0){
? ? rex = rex*10 + i % 10;
? ? i = i / 10;
}
...
while(rex != 0)
{
? ? j = rex % 10;//獲取個位數(shù)
? ? nums[count] = j;
? ? rex/=10;
? ? count++;
}反之也可以將字符串轉(zhuǎn)化為整數(shù),不過本質(zhì)是一樣的,就不多說了。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

