如何获取整数的位数?

时间:2014-04-10 10:50:36

标签: c string file integer structure

下面的程序足以找到给输入的任何字符串长度的长度,但是,我需要找到整数变量的长度,而不是字符串。

输入一个数字确实有效,但是如果我将s扫描为int类型则不行。

int main()
{
   char s[1000];
   char i;
   int u=5;
   do
   {
       char s[1000];
       char i;
       int u=5;
       system("cls");
       printf("Enter a string: ");
       scanf("%s",s);
       for(i=0; s[i]!='\0'; ++i);

       printf("Length of string: %d",i);
       getch();
  }
 while(u==5);
getch();
}

所以我需要的是将这个小程序修改为接受intger变量,或者将计算出的int变量转换为字符串。

有什么想法吗?

编辑:长度=字符数量,因此25有2,3456有4等

5 个答案:

答案 0 :(得分:2)

您可以使用以下公式计算基数为m的n的长度:

ceil(log(n + 1, m))

其中ceil是上限(向上舍入)函数,log(a, b)是基数b中的a的对数。

答案 1 :(得分:1)

您可以使用以下代码查找整数的位数:

int count=0;
while(n!=0)
{
  n/=10;             
  ++count;
}

n是您的输入整数,而count将是它的长度。

答案 2 :(得分:0)

如果你想读一个整数作为整数i,e用%d并计算该整数中的位数,请看下面的代码片段。

int no,length=0;
printf("Enter number");
scanf("%d",&no);
while(no!=0)
{
length+=1;
no=no%10;
}
printf("Length=%d",length);

答案 3 :(得分:0)

要确定要打印十进制数字的字符数(假设valueint),您可以执行以下操作:

int intlen = 0;
if (value < 0)         // for negative values, allow a char for the minus sign
{
    value = -value;
    ++intlen;
}
while (value >= 10)     // as long as the value is 1 or more,
{
    value /= 10;        // divide by 10,
    ++intlen;           // ...and add one to the length
}
++intlen;               // add one for last digit (even if it's zero)

使用上述ceil / log函数可能更容易,但这个不需要数学库(如果这是一个问题)

另一种蛮力方法如下:

char temp[12];
int intlen = sprintf(temp,"%i",value);

这利用了sprintf返回放置在字符串缓冲区中的字符数的事实。

答案 4 :(得分:0)

#include<stdio.h>
main()
{
                 int count=1,n;
                 scanf("%d",&n);
                 while(n/=10)
                       count++;
                 printf("result=%d",count);
}

count给出数字n中的位数