我在这里很困惑。为什么我的这段代码不能正常工作..
代码如下:
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() 返回一个 double 值,您将其转换为整数。因此,它将被截断,而不是四舍五入。
你应该尝试
value = round(pow(10,value));
关于c - 我的 C 代码无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35955946/