Как ввести целое число и определить, верно ли, что все его цифры четные (язык Си)?
Добрый день.
Попалась задачка. Надо ввести целое число, а затем определить чётность и нечётность всех цифр.
Пробовал вот так:
int main(void) 0) < if((a%10)%2==0) printf("YES "); else printf("NO "); a/=10; >return 0; >
Увы, код показывает чётность и нечётность каждой цифры, однако мне необходимо, чтобы он выводил»NO» даже в том случае, если в числе есть хоть одна нечётная цифра (с выводом «YES» аналогичная история). Не могли вы подсказать, в чём ошибка? Чувствую, что я неправильно воспользовался операторами и где-то тут накосячил.
- Вопрос задан более двух лет назад
- 2148 просмотров
как проверить целое ли число язык си
мне нужно что бы пользователь ввел три целых чисел а если числа не целые то программа закрывалась я пытался делать проверку вот пример только здесь я зделал одно число что бы было проще забыл сказать нельзя использовать библеотеку math.h
int main() < int num1 = 0; scanf("%d", &num1); if (num1 % 1 != 0)< printf("eror"); >printf("%d", num1); >
только здесь оно округляет число сразу после ввода а это мне не нужно дальше я поменял переменную на double но компилятор стал ругать меня
int main() < double num1; scanf("%lf", &num1); if (num1 % 1 !=0) < printf("eror"); >printf("%lf", num1); >
помогите решить эту проблему
Отслеживать
задан 19 июн 2021 в 10:01
Михаил Кузнецов Михаил Кузнецов
29 1 1 золотой знак 1 1 серебряный знак 6 6 бронзовых знаков
Остаток от деления вещественного числа на 1 — это сильно :-). Сделайте проще: используйте приведение типа в условии (int) num1 != num1 . Кроме этого, Ваша программа напечатает число в любом случае, даже если оно не «целое». Но это уже другая история.
19 июн 2021 в 10:15
я сделал вот так ((int)num1 % 1 != num1) и все работает спасибо. проверил еще так работает (num1 % 1 != num1)
19 июн 2021 в 10:25
нееет! зачем (int)num1 % 1 ?! приведение типа уже делает целое число, зачем для целого числа бесполезное %1 . Тем более, что итоговая проверка с таким условием будет неверной.
19 июн 2021 в 10:28
мантисса типа double имеет размер 52 бита. К типу int нельзя приводить. Только к int64_t.
19 июн 2021 в 10:35
не судите строго я только начал учить программирование :3 я просто скопировал и вставил в место старого условия и оно не работает( или я вас не правильно понял
19 июн 2021 в 10:35
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
# include # include # include static inline bool isint ( double d ) < return d == (int64_t)d ; >int main()
isint(3) = 1 isint(3.1) = 0
дополнение
Если нужна точность и важность пределов целочисленного типа, то нужен двойной контроль. Сначала считываем число, потом пишем в строку. Будет считать, что введённое выражение удовлетворяет условиям, если запись целочисленного числа в сторку совпадает с введённым выражением. Не поддерживается запись с экспонентой 1e1 , с точкой 1.0 и положительное число со знаком плюс +1 .
char s[100] ; scanf("%99s",s); int i ; sscanf(s,"%d",&i); char s2[100] ; sprintf(s2,"%d",i); if (strcmp(s,s2)==0) printf("integer %d\n",i); else printf("is not integer %s\n",s);
integer 1234567890 is not integer 12345678901
Целое число
Результат работы программы показан на рисунке 1. Как-то нужно определить, является ли введенное значение — вещественным значением, возможно в этом нам поможет статья о приведении типов данных.

Рисунок 1 — Целое число
// integer_number.cpp: определяет точку входа для консольного приложения. #include «stdafx.h» #include using namespace std; int main(int argc, char* argv[]) < double number; // вводимое число setlocale(LC_ALL, "rus"); cout -> «; cin >> number; if ( (number — int(number)) != 0 ) // если разность больше нуля, то введённое число — число с плавающей точкой cout
Как проверить целое ли число c
Добрый день подскажите пожалуйста. вот мой код
число = Строка.Номерстроки \ 300,
если Число — Окр (число, 0,0) = 0 тогда
целое
есть ли что-нибудь покороче в одну строку?
если цел(число)= число
ответ = ?(МоеЧисло = Цел(МоеЧисло), «целое», «нецелое»);
?(цел(число)= число,целое,дробное)
(1)не поможет, оператор определен только для целых чисел
всем большое спасибо
+(5)а, хотя есл применить, к первой строке, то самое то
ответ = ?((Строка.Номерстроки % 300) = 0, «целое», «нецелое»);
ЕСЛи Строка.Номерстроки % 300 = 0 тогда
?(Найти(Строка(пЧисло),»,»), «Дробное», «Целое»)
(5) Не болтайте ерундой.
а что такое %?
Что такое %?
где это в СП?
(12)остаток от целочисленного деления
12% 5 = 2
6%3 = 0
и т.д.
Пипец
Если Окр(МоёЧисло,0,0) = МоёЧисло тогда
Сообщить(«Оно Целое»);
иначе
Сообщить(«Оно НЕ Целое»);
КонецЕсли;
спасибо
(16) мне нужно просто проверять и переходить в другое условие
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену. по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший