Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的C代码不工作_C - Fatal编程技术网

我的C代码不工作

我的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;

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

代码如下:

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,并且序列继续

我已经在Java中尝试了完全相同的代码,它工作得非常好!!
为什么它在C中不起作用???

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

你应该试试

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

首先,正确缩进代码。试运行代码,看看问题出在哪里is@Zeyad,我认为只有醉酒的程序员才能写醉酒的代码。事实上,我发现这个问题问得不那么糟糕。。。你每天都会看到更糟糕的问题。@Inderkumarratore LOL-一个“干”运行需要先清醒一下。还有一个事实是,在使用之前,该值可能未初始化。不加评论的向下投票很好。@ClausBönnhoff,我向下投票是因为你回答了一个非常低质量的问题。根据堆栈溢出的指导原则,每个用户都必须避免回答低质量的问题。还要注意的是,我喜欢向下投票的答案,如果它们被贴到一个低质量的帖子上,目的只是为了赢得声誉,那么它们是多么正确。这是因为,当OP得到了他低质量问题的答案时,他永远不会想到改进他的职位。但是如果他没有得到答案,为了得到答案,他将改进他的职位。引导他遵守规则:积极的结果