下面的程序足以找到给输入的任何字符串长度的长度,但是,我需要找到整数变量的长度,而不是字符串。
输入一个数字确实有效,但是如果我将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等
答案 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)
要确定要打印十进制数字的字符数(假设value
是int
),您可以执行以下操作:
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中的位数