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

问题描述

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

c语言-C语言求一个数是几位数,不使用循环的相关文章

高分悬赏 请大神指导-网上发现找到一组c语言代码,求帮忙整合成能用

问题描述 网上发现找到一组c语言代码,求帮忙整合成能用 #include #include #include #include #ifndef FUNCTION_H#define _FUNCITON_H_typedef struct student{ char nameStudent[10]; int numberSudent; int indexN; //已选数量 int elect[20]; //已选课题编号(多个) BOOL whetherNull;}STU;typedef struct

c语言-C语言用函数求最大公约数和最小公倍数,看不出错在哪,代码如下

问题描述 C语言用函数求最大公约数和最小公倍数,看不出错在哪,代码如下 #include int maxnumber(int x,int y) { int a=0; a=x%y; while(a!=0) { a=x%y; x=y; y=a; } return y; } int minnumber(int x,int y) { int z; z=(x*y)/maxnumber(x,y); return z; } void main() { int maxnumber(int x,int y); i

c语言-C语言问题,编译没问题,但是无法运行,求解答

问题描述 C语言问题,编译没问题,但是无法运行,求解答 //=====求两个数的最大公约数和最小公倍数=====// //使用辗转相除法求最大公约数,进而求得最大公倍数 include int main () { //用户输入的数据 int m,n; //存放输入的两个数的积 int p; //用来存放辗转相除时的余数 int c; //实现两数交换的临时变量 int t; //最大公约数和最小公倍数 int max,min; //输出提示信息,并输入数据 printf ("请输入m和n:n&q

c语言-麻烦看看C语言的问题,求大神

问题描述 麻烦看看C语言的问题,求大神 读入一个整数,统计并输出该数中2的个数?要求定义并调用函数countdigit(number,digit),它的功能是统计整数number 中数字digit 的个数?例如,countdigit(10090,0) 的返回值是3? int countdigit (int number,int digit){ int d,n,count; do{ n=number; d=n%10; n=n/10; if (d==digit) count ++;}while (n

c语言-C语言相邻数求最大和的问题求解答

问题描述 C语言相邻数求最大和的问题求解答 #include int** matrix(int row) { int** matr; matr = malloc(row*sizeof(int*)); for(int i = 0; i < row; i++) { matr[i] = malloc(row*sizeof(int)); } return matr; } void get_input(int** arrays, int row) { for(int i = 0; i < row; i+

C语言写的求水仙数

C语言写的求水仙数,判断并输出水仙数的部分是在函数里面实现,代码如下:: //本人英文水平不是很好所以就拿中文做注释#include "stdio.h"void is(int a,int b)...{    //定义三个变量作为    int i,j,k;    for(;a<=b;a++)    ...{        i=a%10;//所求数的个位        j=(a/10)%10;//所求数的十位        k=a/100;//所求数的百位        if(i*

c语言-C语言用递归求圆周率的值,要求精确到小数点后3位,不得使用循环

问题描述 C语言用递归求圆周率的值,要求精确到小数点后3位,不得使用循环 C语言用递归求圆周率的值,要求精确到小数点后3位,不得使用循环 解决方案 http://jingyan.baidu.com/article/bea41d437c69b8b4c51be6e9.html 解决方案二: public class Test { public static void main(String[] args) { System.out.println("怎么插入代码块.."); } }

c语言-C语言小白问题求大神指教

问题描述 C语言小白问题求大神指教 #include #include unsigned fun(int w) { int a; int i; i=1; a=w; while(a==0) { a=a/10; i++; } w=w%pow(10,i); return w; } unsigned main() { int w; printf("please enter a number:n"); scanf("%d",&w); printf("the

c++-C++如何转C语言,跪求帮忙转一下,在线等答案

问题描述 C++如何转C语言,跪求帮忙转一下,在线等答案 各位学长,能不能帮小妹做个作业啊,把C++转换为C语言//附合水准路线解算.cpp#include #include #include #include using namespace std; void Data_Calculate();//数据解算void Data_Show();//结果打印到屏幕void Data_Output();//结果输出到TXT int v[4] i=0;double h[4] L[4] h_v[4] H[