我的C代码无效

时间:2016-03-12 09:33:30

标签: 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,序列继续...

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

1 个答案:

答案 0 :(得分:0)

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

你应该试试

var results = doc.Descendants("book").Select(x => new BookModel // <= missing
    {
        Author = x.Element("author").Value,
        Price = decimal.Parse(x.Element("price").Value)
        /* your properties*/
    }