#c
#c
Вопрос:
Я только начал программировать и попытался написать простую программу, чтобы проверить, четное ли число, вывести «ДА», если оно четное, или «НЕТ».
#include <iostream>
using namespace std;
int main()
{
int w;
int remainder;
cout << "Enter the number : ";
cin >> w ;
remainder = w % 4;
if(remainder==0)
cout << "nYes " << endl;
else
cout << "nNO " << endl;
return 0;
}
Когда я пытаюсь запустить эту программу, появляется следующий вывод:
$g -o main *.cpp
$main
Enter the number :
Yes
Что я здесь делаю не так?
Комментарии:
1. Я не могу воспроизвести проблему, показанный вами код и команда компиляции должны работать должным образом
2. Что произойдет, если вы добавите
<< std::endl
после первого cout ? Как именно происходит сеанс? Каков ваш ввод?3. Что произойдет, если вы инициализируете
w
? С 1? С 4? Т. е. Что заставляет вас думать, что ввод не принят?4. Ваш ввод должен быть помещен в поле ввода компилятора, именно так обычно работают онлайн-компиляторы. Вы не видите его в командной строке.
5. @Cassandra также обратите внимание, что для проверки четных чисел вы должны проверять оставшуюся часть деления на 2, а не на 4.
Ответ №1:
попробуйте использовать это..
#include<iostream>
using namespace std;
int main()
{
int w;
cout<<"Enter the number : ";
cin>>w;
string s=(w%2==0)?"even number":"odd number";
cout<<w<<" is a "<<s;
return 0;
}
Комментарии:
1. Почему? Вам нужно протестировать свой код? Пожалуйста, уточните эксперимент, который вы хотите, чтобы OP выполнил. Какой результат приведет к какому пониманию? Что означает каждый из результатов, которые вы ожидаете, для анализа?
2. Нам нужно решение существующего кода, а не нового кода
3. ваша программа абсолютно нормально работает в моем компиляторе, в вашем компиляторе может быть проблема
4. Если есть проблемы с компилятором, я рекомендую вам использовать онлайн-компилятор, такой как repl.it/languages/cpp
Ответ №2:
Там есть одна логическая ошибка.
remainder = w% 2; // must be.
Проблема, о которой вы сообщили, может быть связана с используемой вами программой. Я использую Visual Studio, и это не вызвало у меня никаких проблем. Но вы также можете записать условия, используя круглые скобки:
if(remainder==0) {
cout << "nYes " << endl;
}
else {
cout << "nNO " << endl;
}
и попробуйте их. Может быть, работает. (может быть, почему? Вы работаете над онлайн-компилятором. В этом случае я ничего не могу гарантировать)
ПОЧЕМУ %2
например: «2% 4» будет отвечать на 2. И это иногда может вызвать проблемы для онлайн-компиляторов. Самое логичное — получить простой ответ, выполнив «% 2». 2% 2 = 0 это дает нам более плавный ответ.
1% 2 = 1,
2% 2 = 0,
3% 2 = 1
1 означает: не четное число.
0 означает: четное число.
Лучший способ — не пытаться исправлять ошибки онлайн-компиляторов. Потому что, если вы разрабатываете свой код для поврежденного компилятора, у вас возникнут проблемы с приличным компилятором. Я рекомендую использовать обычный компилятор, не подключенный к Сети.
Решение проблемы с функцией sleep не обязательно означает, что вы решили проблему. Этот путь может создать много проблем для вас при разработке больших программ.
Комментарии:
1. Проблема, о которой сообщается, заключается в сбое при чтении ввода. Как это связано с применяемым модулем? Всегда использовать
{}
— это философия, на которую я также подписываюсь, но она также не связана с проблемой. У меня создается впечатление, что вы пропустили обсуждение вероятных проблем в комментариях. Ваш ответ, похоже, не решает проблему, ничего не объясняет. Предположение об используемой «программе» недостаточно ясно. Лично я не поклонник «может быть», «попробуйте это» в ответах. Пожалуйста, постарайтесь быть более настойчивым.2. @Yunnosch Помните, что вы работаете в онлайн-компиляторе. Мы пытаемся решить что-то нелогичное прямо сейчас. Первая проблема заключается в онлайн-компиляторе. И мы не знаем, как он может реагировать на коды. Иногда простая попытка может решить большие проблемы.