我的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得到了他低质量问题的答案时,他永远不会想到改进他的职位。但是如果他没有得到答案,为了得到答案,他将改进他的职位。引导他遵守规则:积极的结果