C语言求一个数是几位数,不使用循环

C语言求一个数是几位数,不使用循环
C语言求一个数是几位数,不使用循环
C语言求一个数是几位数,不使用循环

c

6个回答

 #include "math.h"

int main()
{
    int i[] = { 1, 9, 10, 11, 99, 123, 888, 10001 };
    for (int x = 0; x < 8; x++)
        printf("%d ", (int)log10(i[x] * 10));
}
u012155923
咖啡不加盐 大哥,这也是循环吧
4 年多之前 回复

64bits 最多`10位10进制
64 位 2进制。
二进制可以直接嵌入汇编指令获取,或者63 次 位运算获取,也可用查表法求出来(16 个,或者256 个元素的表)就可以了。
10进制可以用九次除法获取
这都是不用循环直接计算的

lm_whales
lm_whales 哦,是二十位10进制,所以是19次除法,或者比较
4 年多之前 回复

用递归~ (注:前提是整数)
#if 1
#include
#include
using namespace std;

int GetNumOfB(int n)
{
if ((n <= 9 && n >= 0) || (n >= -9 && n<= 0))
{
return 1;
}
else
return GetNumOfB(n / 10) + 1;
}

int main()
{
cout << GetNumOfB(199988888) << endl;
return 0;
}
#endif

图片说明

转换类型,然后再判断长度即可

我一个想法,把数据转换成二进制(自己编一个转换程序),把二进制数存入数组中,然后你在研究一下二进制大小与位数的关系,然后用找出的关系与数据进行比较,得到答案

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐