#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)