Как сделать так, чтобы можно вводить только целые цифры, без запятых? - 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(); - Завершаем программу.