Как сделать так, чтобы можно вводить только целые цифры, без запятых? - C (СИ)
Формулировка задачи:
Задание: За номером дня месяца вывести на экран предыдущее число, если в месяце 31 день.
так то я написала.а вот что нужно добавить,чтобы можно было вводить только целое число,чтоб без всяких запятых?
я пошла сдавать,а учительница сказала ввести 3,5. оно показало,что вчера было 2 число.а ведь третьего с половиной дня не бывает....
int W; setlocale (0, "Rus"); printf ("Ввести день месяца: "); scanf ("%d",&W); switch (W) {case 1: printf("Вчера было 30 число"); break; case 2: printf("Вчера было 1 число"); break; case 3: printf("Вчера было 2 число"); break; case 4: printf("Вчера было 3 число"); break; case 5: printf("Вчера было 4 число"); break; case 6: printf("Вчера было 5 число"); break; case 7: printf("Вчера было 6 число"); break; case 8: printf("Вчера было 7 число"); break; case 9: printf("Вчера было 8 число"); break; case 10: printf("Вчера было 9 число"); break; case 11: printf("Вчера было 10 число"); break; case 12: printf("Вчера было 11 число"); break; case 13: printf("Вчера было 12 число"); break; case 14: printf("Вчера было 13 число"); break; case 15: printf("Вчера было 14 число"); break; case 16: printf("Вчера было 15 число"); break; case 17: printf("Вчера было 16 число"); break; case 18: printf("Вчера было 17 число"); break; case 19: printf("Вчера было 18 число"); break; case 20: printf("Вчера было 19 число"); break; case 21: printf("Вчера было 20 число"); break; case 22: printf("Вчера было 21 число"); break; case 23: printf("Вчера было 22 число"); break; case 24: printf("Вчера было 23 число"); break; case 25: printf("Вчера было 24 число"); break; case 26: printf("Вчера было 25 число"); break; case 27: printf("Вчера было 26 число"); break; case 28: printf("Вчера было 27 число"); break; case 29: printf("Вчера было 28 число"); break; case 30: printf("Вчера было 29 число"); break; case 31: printf("Вчера было 30 число"); break; default: printf ("Нужно ввести число от 1 до 31 включительно! "); } getch();
Решение задачи: «Как сделать так, чтобы можно вводить только целые цифры, без запятых?»
textual
Листинг программы
#include<stdio.h> #include<ctype.h> #include<locale.h> int main() { int W; setlocale (0, "Rus"); printf ("Ввести день месяца: "); scanf ("%d",&W); if(W>='0' && W<='9') switch (W) {case 1: printf("Вчера было 30 число"); break; case 2: printf("Вчера было 1 число"); break; case 3: printf("Вчера было 2 число"); break; case 4: printf("Вчера было 3 число"); break; case 5: printf("Вчера было 4 число"); break; case 6: printf("Вчера было 5 число"); break; case 7: printf("Вчера было 6 число"); break; case 8: printf("Вчера было 7 число"); break; case 9: printf("Вчера было 8 число"); break; case 10: printf("Вчера было 9 число"); break; case 11: printf("Вчера было 10 число"); break; case 12: printf("Вчера было 11 число"); break; case 13: printf("Вчера было 12 число"); break; case 14: printf("Вчера было 13 число"); break; case 15: printf("Вчера было 14 число"); break; case 16: printf("Вчера было 15 число"); break; case 17: printf("Вчера было 16 число"); break; case 18: printf("Вчера было 17 число"); break; case 19: printf("Вчера было 18 число"); break; case 20: printf("Вчера было 19 число"); break; case 21: printf("Вчера было 20 число"); break; case 22: printf("Вчера было 21 число"); break; case 23: printf("Вчера было 22 число"); break; case 24: printf("Вчера было 23 число"); break; case 25: printf("Вчера было 24 число"); break; case 26: printf("Вчера было 25 число"); break; case 27: printf("Вчера было 26 число"); break; case 28: printf("Вчера было 27 число"); break; case 29: printf("Вчера было 28 число"); break; case 30: printf("Вчера было 29 число"); break; case 31: printf("Вчера было 30 число"); break; default: printf ("Нужно ввести число от 1 до 31 включительно! "); } else printf("Такого дня не существует!!!"); getchar(); }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
stdio.h
для работы с вводом/выводом данныхctype.h
для работы с преобразованием символовlocale.h
для работы с локалью (в данном случае для русского языка)
- Устанавливаем локаль на русскую:
setlocale (0,
Rus);
- Выводим запрос на ввод:
printf (
Ввести день месяца:);
- Считываем введенное значение в переменную W типа int:
scanf (
%d,&W);
- Проверяем, что введенное значение находится в диапазоне от '0' до '9':
if(W>='0' && W<='9')
- Осуществляем перебор всех возможных значений от 1 до 31:
- switch (W): выполняет блок кода в зависимости от значения переменной W
- case 1: выводит сообщение, что вчера было 30 число
- case 2: выводит сообщение, что вчера было 1 число
- case 3: выводит сообщение, что вчера было 2 число
- ...
- case 31: выводит сообщение, что вчера было 30 число
- default: выводит сообщение, что нужно ввести число от 1 до 31
- switch (W): выполняет блок кода в зависимости от значения переменной W
- Если значение W не соответствует ни одному из перечисленных выше, выводим сообщение об ошибке:
printf (
Такого дня не существует!!!);
- Получаем символ ввода (для избежания выведения сообщения об ошибке при нажатии Enter):
getchar();
- Завершаем программу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д