问题描述
- C语言求一个数是几位数,不使用循环
-
C语言求一个数是几位数,不使用循环
C语言求一个数是几位数,不使用循环
C语言求一个数是几位数,不使用循环
解决方案
#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));
}
解决方案二:
http://codepad.org/Aq3eL3MB
解决方案三:
64bits 最多`10位10进制
64 位 2进制。
二进制可以直接嵌入汇编指令获取,或者63 次 位运算获取,也可用查表法求出来(16 个,或者256 个元素的表)就可以了。
10进制可以用九次除法获取
这都是不用循环直接计算的
解决方案四:
用递归~ (注:前提是整数)
#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
解决方案五:
转换类型,然后再判断长度即可
解决方案六:
我一个想法,把数据转换成二进制(自己编一个转换程序),把二进制数存入数组中,然后你在研究一下二进制大小与位数的关系,然后用找出的关系与数据进行比较,得到答案
解决方案七:
求一个数是几位数
时间: 2024-10-25 04:31:44