其实不用循环也可以做到,对其求以10为底的对数,然后取整数部分再加1,就是这个整数的位数.
下面是代码:
#include
#include
void main()
{
int n;
printf("please input an integer:");
scanf("%d",&n);
printf("%d的位数是%d\n",n,(int)log10(n)+1);
}
两个方法,一种方式是用循环求,不断除10。
另一种方式是将其转换为字符串,然后求字符串的位数。
#include
#include
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));
}
设一个循环,每次把整数除以10赋给这个整数,计数器+1,到这个整数为0,停止就行了。
二楼已经说的比较好了。