注册 登录
编程论坛 C语言论坛

(c语言)对一个高位数求它的位数,如二的四百次方的位数。

Nicolateala 发布于 2020-06-26 23:17, 2401 次点击
#include "stdio.h"
int main()
{
double x;
int sum=0;
scanf("%lf",&x);
while(x>0)
{
x=x/10;
sum++;
}
printf("%d",sum);
return 0;
}

输入数据后显示的位数有问题是怎么回事呢?
9 回复
#2
Nicolateala2020-06-26 23:18
如果上述程序用int定义x就不会有错误,但是int或long int表示的位数太少了。
#3
ditg2020-06-27 01:38
1. 浮点数编码跟整数编码不同;
2. 浮点数为近似结果;
3. 程序跟题目似乎没法对应;
4. 高位数的概念?
#4
lin51616782020-06-27 10:30
完整的题目是什么 这个高位数字是怎么输入的
#5
Nicolateala2020-06-27 11:06
回复 3楼 ditg
其实没有什么题目,只是我自己想的一个问题,我想编一段程序求一个有很多位的数的位数。
如123465789可以求出来是9位
我想求的是2582249878086908600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
的位数。
#6
Nicolateala2020-06-27 11:07
回复 4楼 lin5161678
我描述问题的时候没有说清楚,其实就是求一个有很多位数的数的位数。
比如123456可以求出来是6位,我想求的是2的四百次方的结果有多少位。
#7
lin51616782020-06-27 11:12
需要明确你要求的数字是怎么输入的
如果只是简单的完全输入
写一个循环计算循环次数就完事了
#8
ditg2020-06-27 11:23
想了半天想出这么一破题,服了你,我只会这样,呵呵

程序代码:
#include <stdio.h>

int main(void)
{
    int c, sum = 0;
    while ((c = getchar()) != EOF && c != '\n')
        ++sum;
    printf("%d\n", sum);
    return 0;
}
#9
Nicolateala2020-06-27 18:11
回复 8楼 ditg
谢谢大佬,学到了
#10
ditg2020-06-27 18:39
我不是大佬
1