Top.Mail.Ru
Ответы

Как написать эту программу на 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 по условию задачи нельзя использовать.

По дате
По Рейтингу
Аватар пользователя
Новичок
12345678
 int t = (k / 10 % 10 != 1) * k % 10;
if (t == 1) {
  print("год");
} else if (t >= 2 && t <= 4) {
  print("года");
} else {
  print("лет");
} 

Если количество десятков равно 1 - "лет".
Во всех прочих случаях анализируем количество единиц.

Если хочешь switch, то:

12345678910
 switch ((k / 10 % 10 != 1) * k % 10) {
  case 1:
    print("год");
    break;
  case 2: case 3: case 4:
    print("года");
    break;
  default:
    print("лет");
} 
Аватар пользователя
Просветленный
1234567891011121314151617181920
 #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 не нужны, надо просто перебрать где "год", "года", а на всё остальное поставить "лет".