#c #function #if-statement #output
#c #функция #if-statement #вывод
Вопрос:
#include<stdio.h>
int cube(int n)
{
return (n*n*n);
}/*function to return cubic root*/
int sumcube(int x)
{
int sum=0,m;
while(x>0)
{
m=x%10;
sum=sum (cube(m));
x=x/10;
}
return sum;
}/* returns the sum if cubic digits of an integer*/
int main ()
{
int i;
for(i=1; i<=5000; i )
{
if (i==sumcube(i));
{
printf("%dt",i);
}
}
}
/ * эта программа предназначена для проверки, является ли число armestrong от 1 до 5000, а также для проверки того, что на выходе были все целые числа от 1 до 5000*/
Комментарии:
1. Что заставляет вас думать, что вывод неверен? Каков результат?
2. Что вы сделали, когда обнаружили, что программа работает не так, как ожидалось? Вы выполняли какую-либо отладку? Запустите свою программу в отладчике и / или добавьте инструкции debug print для отслеживания выполнения и проверки состояния программы. Если вы это сделали, что вы нашли? Кроме того, пожалуйста, укажите ожидаемый результат и фактический результат. Как отлаживать небольшие программы
3. Пожалуйста, прочитайте информацию о тегах тегов, которые вы собираетесь использовать. Один из тех, которые вы использовали, был неправильным.
4. Вы пытались скомпилировать его, показывая все предупреждения, например, «gcc -Wall»? Это определенно должно показать вашу проблему в операторе if.
5. выводом были все целые числа от 1 до 5000, в то время как ожидаемые значения были числами armstrongs
Ответ №1:
У вас есть ;
после if , это интерпретируется как пустое тело для if
и, следовательно, все после него будет выполнено независимо от того, является ли условие в if
операторе — true или нет.
Чтобы избежать той же ошибки в будущем, включите все предупреждения компилятора и отключите только те предупреждения, которые вы уверены, что хотите игнорировать, и установите предупреждения об обработке как флаг ошибки для разработки (не при выпуске кода, но это не то, что вы должны делать на своем уровне знаний). Для gcc используйте флаги -Wall -Wextra -Wpedantic -Werror
. При этом компилятор генерирует ошибку для вашего кода.