c - 我的 C 代码无法运行

标签 c

我在这里很困惑。为什么我的这段代码不能正常工作..

代码如下:

void print(int x) {

    x = 140;
    int i,total, length, value;   

    if (x < 10){
        value = 0;
    }
    else {
        int sum = 1;
        for (i = 0 ; i < 10 ; i++){
            total = 10 * sum;
            sum = total; 
            length = x / total;
            if (length < 10 && 1 <= length){ 
                value = i+1; 
                break;
            }
        }
    }
    value = pow(10,value);
    printf("%d\n",value);
}

让我先解释一下代码应该如何工作:

它需要一个整数 x 并打印出它可以除以的 10 的最高幂值。

因此,如果 X = 80,则应打印 10,如果 x = 12435,则应打印 10000。 但这并不完全适合我的代码...如果 x = 140,它会打印 99 但是。如果 x = 1400,则打印 1000;如果 x = 14000,则打印 9999;如果 x = 140000,则打印 100000,并且序列继续...

我已经在 J​​ava 中尝试过完全相同的代码,它运行得很好! 为什么它在 C 中不起作用?

最佳答案

pow() 返回一个 double 值,您将其转换为整数。因此,它将被截断,而不是四舍五入。

你应该尝试

value = round(pow(10,value));

关于c - 我的 C 代码无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35955946/

相关文章:

c++ - C/C++ 用 ascii 艺术声明 2D/3D 数组

c - 如何在 C 语言中向数组添加元素?

c - 如何将 CMSIS DSP 库中的转换函数添加到 Makefile 中?

C:将实数转换为 64 位浮点二进制

c - 使用 qsort 对字符串数组进行排序

c - 搜索指针数组以计算字母使用次数

c - 未提及的结构字段是否*总是*初始化为零(即当结构在堆栈上时)?

c - 优雅的宏 if block

CreateDesktop() 与 vista 和 UAC on (C, windows)

c - 何时一起编译文件以及何时使用库