2016-03-12 17 views
-4

Я так смущен здесь. Почему этот код мой не работает, как это должно быть ..Мой код 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); 
} 

Позвольте мне объяснить, как должна работать код первого:

Он принимает целое х и распечатайте максимальную мощность 10 значений, которую можно разделить на.

Так что, если X = 80, он должен печатать 10, а если x = 12435, он должен печатать 10000. Но это не очень хорошо работает с моим кодом ... если x = 140, он печатает 99, но. если x = 1400, он снова печатает 1000, если x = 14000, он печатает 9999, а если x = 140000, он печатает 100000, и последовательность продолжается ...

Я уже пробовал точно такой же код на Java, и это работает отлично !! Почему это не работает в C ??

+0

Начнем с того, отступы ваш код правильно. –

+2

Сухой запустить ваш код и посмотреть, где проблема –

+1

@ Zeyad, я думаю, что только пьяный кодер может написать пьяный код. –

ответ

0

pow() возвращает двойное значение, которое вы производите в целое число. Поэтому вместо округления он будет усечен.

Вы должны попробовать

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

Существует также тот факт, что 'value' может быть неинициализирован до его использования. – juanchopanza

+0

downvoting без комментариев приятно. –

+0

@ ClausBönnhoff, я отказался от этого, потому что вы ответили на вопрос очень низкого качества. В соответствии с рекомендациями Stack Overflow каждый пользователь должен воздерживаться от ответов на вопросы низкого качества. А также обратите внимание, что мне нравятся ответы на меньшее, насколько они правильны, если они отправляются на почту низкого качества, с намерением только получить репутацию. Это связано с тем, что, когда ОП получает ответ на свой вопрос низкого качества, он никогда не подумает об улучшении своего поста. Но если он не получит ответа, для получения ответа он улучшит свой пост. Приведя его к соблюдению правил: положительный результат –

Смежные вопросы