在c语言中如何确定一个数据的位数

如题所述

除位法

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

对数法

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

char型数组法

#include<stdio.h>
#include<math.h>
main()
{
    char n[100],k;
    gets(n);
    for(k=0;n[k];k++)
    ;
    printf("%d",k);
}

数组转换法

#include<stdio.h>
#include<string.h>
main()
{
    char str[20];
    int n;
    scanf("%d",&n);
    sprintf(str,"%d",n);
    printf("%d\n",strlen(str));
}

您好,很高兴为您解答,流星不死为您答疑解惑

如果本题还有不懂的地方请追问,望采纳我的回答。

祝楼主学习进步。

上面的代码可以直接复制到编译器里,带换行。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-19
8个位一个字节,
一般32为机器中, int 为4 字节
int a;
int b= sizeof(a) b=4则32位, b=8 为64位
第2个回答  2013-12-20
你所得位数是指数据类型的位数吗?是指数据占几个字节吗?
可以用sizeof(数据类型);如n=sizeof(int);n就为4;
如果你问的不是这个意思,请追问,我会继续回答。
第3个回答  2013-12-20
如果是整型的话,就直接用这个数除以1,10,100,1000,10000,100000.。。就行啊,如果是一位数,除以1的结果会在1和9中间,如果是2位数,除以100的结果是1到9之间。。。。就这样判断,看什么时候的结果是1到9之间。。
第4个回答  2013-12-20
int GetDigitNumber(int N)
{
    int result = 0;
    while (N > 0)
    {
        result++;
        N /= 10;
    }
    
    return result;
}

相似回答