0 голосов
спросил от в категории C
Компиляция не означает, что ваш код прав!:laugh:
Подумайте о процессе разработки как написании электронного письма: компиляция успешно означает, что вы написали электронное письмо на правильном языке - например, на английском, а не на немецком, - не то, что письмо содержало нужное вам сообщение для отправки.

Итак, теперь вы входите во второй этап разработки (на самом деле это четвертый или пятый, но вы придете на более ранние этапы позже): Тестирование и отладка.
Начните с рассмотрения того, что он делает, и как это отличается от того, что вы хотели. Это важно, потому что он дает вам информацию о том, почему он это делает. Например, если программа предназначена для того, чтобы пользователь вводил число, и он удваивает его и печатает ответ, то если вход/выход был таким:
Input   Expected output    Actual output   1            2                 1   2            4                 4   3            6                 9   4            8                16
Тогда довольно очевидно, что проблема заключается в том, что бит удваивает его - он не добавляет себя к себе или не умножает его на 2, он умножает его сам по себе и возвращает квадрат входа. Таким образом, вы можете посмотреть в коде, и очевидно, что он где-то здесь:
int Double(int value)    {    return value * value;    }

Как только у вас появится представление, что может быть не так, начните использовать отладчик, чтобы узнать, почему. Поместите точку останова в первую строку метода и запустите приложение. Когда он достигнет точки останова, отладчик остановится и будет вручную управлять вами. Теперь вы можете запускать свой код по очереди (называемый «одиночный шаг») и при необходимости смотреть (или даже изменять) содержимое переменной (черт, вы даже можете изменить код и повторите попытку, если вам нужно).
Подумайте, что должна делать каждая строка в коде, прежде чем выполнять ее, и сравните ее с тем, что она на самом деле сделала, когда вы используете кнопку «Step Over» для выполнения каждой строки по очереди. Он сделал то, что вы ожидаете? Если это так, переходите к следующей строке.
Если нет, почему бы и нет? Как это отличается?
Надеюсь, это поможет вам определить, какая часть этого кода имеет проблемы, и в чем проблема.
Это навык, и это тот, который стоит развивать, поскольку он помогает вам в реальном мире, а также в развитии. И, как и все навыки, он улучшается только с помощью!

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
0 голосов
ответил от
Цитата:
код не показывает никаких ошибок или предупреждений.

Это означает, что код является правильным синтаксисом Си, это не значит, что он делает то, что вы ожидаете.
«Кошка летает высоко в застенчивой» - это правильное английское предложение и грамматика, но это ничего не значит.

Вы забыли рассказать, что должно делать ваш код. Но можно предположить, что ваше использование n неверно.
for(n=100;n<1000;n++)  // the n here is a counter {   temp=n;sum=0;   while(n>0)   {     a=n%10;     n=n/10;  // but here you destroy its value     sum=sum+pow(a,3);   }   if(sum==temp)     printf("%d",temp); } 


Ваш код не ведет себя так вы ожидаете, или вы не понимаете, почему!

Существует почти универсальное решение: шаг за шагом запускайте свой код на отладчике, проверяйте переменные.
> Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача сравнить с тем, что он должен делать.
В отладчике нет волшебства, он не знает, что ваш cpde предполагается чтобы сделать это, он не находит ошибок, это просто поможет вам, показывая вам, что происходит. Когда код не делает то, что ожидается, вы близки к ошибке.
Чтобы узнать, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Недостаток этого решения:
- это DIY, вы отслеживаете проблемы и найти свои корни, которые приводят к решению.
Поверхность этого решения:
- Это отличный инструмент обучения, потому что он показывает вам реальность, и вы можете видеть, какие ожидание соответствия реальности.

вторичные эффекты
- Вы будете гордиться тем, что сами обнаружили ошибки.
- Ваши навыки обучения улучшатся

Вы должны найти довольно быстро, что не так.

for(n=100;n<1000;n++)  // the n here is a counter {   temp=n;sum=0;   while(n>0)   {     a=n%10;     n=n/10;  // but here you destroy its value     sum=sum+pow(a,3);   }   if(sum==temp)     printf("%d",temp); } 
# [#^ #]

#Mastering Debugging in Visual Studio 2010 - A Beginner's Guide # [#^ #]
#Basic Debugging with Visual Studio 2010 - YouTube # [#^ #]
#1.11 ? Debugging your program (stepping and breakpoints) | Learn C++ # [#^ #]
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача сравнить его с тем, что он должен делать.

Категории

Добро пожаловать на сайт DraftingCode Q&A (ИТ ответы), где вы можете задавать вопросы и получать ответы от других членов сообщества.

Связанных вопросов не найдено

...