c语言里怎么求任意正整数的位数

如题所述

其实不用循环也可以做到,对其求以10为底的对数,然后取整数部分再加1,就是这个整数的位数.
下面是代码:

#include<stdio.h>
#include<math.h>
void main()
{
int n;
printf("please input an integer:");
scanf("%d",&n);
printf("%d的位数是%d\n",n,(int)log10(n)+1);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-29
两个方法,一种方式是用循环求,不断除10。
另一种方式是将其转换为字符串,然后求字符串的位数。

#include<stdio.h>
#include<string.h>
int f1(int n){
int i=0;
if(n==0)return 1;
while(n>0){
n=n/10;
i++;
}
return i;
}
int f2(int n){
char s[32]="";
sprintf(s,"%d",n);
return strlen(s);
}
main()
{
int n;
scanf("%d",&n);
printf("%d has %d bits\n",n,f1(n));
printf("%d has %d bits\n",n,f2(n));
}本回答被网友采纳
第2个回答  2013-10-29
设一个循环,每次把整数除以10赋给这个整数,计数器+1,到这个整数为0,停止就行了。
第3个回答  2013-10-29
二楼已经说的比较好了。
相似回答