C语言编程问题 如何求一个数字的长度?

Python016

C语言编程问题 如何求一个数字的长度?,第1张

#include <stdio.h>

#include <string.h>

void main()

{

int n

char str[50]={'\0'}

printf("请输入一个多位数:  ")

gets_s(str)

n=strlen(str)

printf("\n%d\n\n",n)

}

运行示例:

十进制数字个数 和长度 有多种方法 算得。

下面用两种方法计算。负数有个符号位,长度比位数多 m=1。

占内存的大小用sizeof(int) 可得,通常 32位机为4字节,64位机为8字节。

例如:

#include <stdio.h>

int main(){

int a=123456

int n,m=0

char s[60]

if (a<0) m=1

sprintf(s,"%d",a)

n = strlen(s)

printf("a has digit %d length %d\n",n-m,n)

n=0

while (1){

a = a/10

n++

if (a==0)break

}

printf("a has digit %d length %d\n",n,n+m)

printf("int has %d bytes\n",sizeof(int) )

return 0

}

这个很好理解呀,设 N!=M=10^n(10的n次方) 只要求出n就知道M有多少位的数了,对等式两边取底 n=log10(M)=log10(1*2*...*N)=log10(1)+log10(2)+...+log10(N) (对数的运算法则 logA*B=logA+logB)