Как написать эту программу на C?
Для целого числа � K (от 1 до 99 включительно) напечатать фразу «Мне K лет», учитывая при этом, что при некоторых значениях
�
K слово «лет» надо заменить на слово «год» или «года». Например, 11 лет, 22 года, 51 год.
Входные данные: Одно целое число � K, 1 ≤ � ≤ 99 1≤k≤99
Выходные данные: Фраза с правильным окончанием
Подсказки:
Не нужно писать switch с 99 ветками case. Работать, конечно, будет, но лучше подумать головой.
Окончание почти всегда зависит только от последней цифры числа
Используйте вложенные switch
я пробовал сделать так
switch(k%10){
case 1:printf("год");break;
case 0:printf("года");break;
default:switch(){
}break;
}
Но вот после default я хз что туда поставить внутри switch. Вы должны понимать что 11 это "Мне 11 лет", но если его разделить с остатком на 10 или даже без остатака, ответ будет 1.1. То есть "Мне 11 года". И опять же 2 это лет, а не год. Голова запуталась, я хз что делать. If по условию задачи нельзя использовать.
int t = (k / 10 % 10 != 1) * k % 10;
if (t == 1) {
print("год");
} else if (t >= 2 && t <= 4) {
print("года");
} else {
print("лет");
}
Если количество десятков равно 1 - "лет".
Во всех прочих случаях анализируем количество единиц.
Если хочешь switch, то:
switch ((k / 10 % 10 != 1) * k % 10) {
case 1:
print("год");
break;
case 2: case 3: case 4:
print("года");
break;
default:
print("лет");
}
#include <stdio.h>
int main()
{
int K;
//setlocale(LC_ALL, "Russian"); // Русская локализация консоли
printf("Введи кол-во лет: ");
scanf("%d",&K);
int digit = K % 10;
printf("Мне %d ",K);
if (digit == 1 && K != 11) {
printf("год");
}
else if ((digit >= 2 && digit <= 4) || K > 20 ) {
printf("года");
} else {
printf("лет");
}
return 0;
}
А что конкретно не получается?
учи C#
вложенные switch не нужны, надо просто перебрать где "год", "года", а на всё остальное поставить "лет".