Для заданного числа напечатать фразу "Мне n лет" - C (СИ)
Формулировка задачи:
помогите решить задачи оператор switch Дано целое число от 1 до 99. Определить возраст человека в годах. Для этого числа напечатать фразу -
Мне n лет. Участь, что внекорых ситуациях слово лет надо заменить на год или года.
Решение задачи: «Для заданного числа напечатать фразу "Мне n лет"»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
const char * years[] = {" год", " года", " лет"};
char *
foo (n)
{
char * ptr;
if(n > 20 || n < 5){
if(n % 10 == 1){
ptr = years[0];
} else if (n % 10 < 5){
ptr = years[1];
} else {
ptr = years[2];
}
} else{
ptr = years[2];
}
return ptr;
}
int
main(int argc, char ** argv)
{
int i = 1;
for(; i < 100; ++i){
printf("мне %d %s\n", i, foo(i));
}
exit(EXIT_SUCCESS);
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с стандартными функциями ввода-вывода и кодирования строк.
- Объявляем массив с возможными окончаниями числительных в зависимости от их количества.
- Создаём функцию foo, которая принимает целочисленный аргумент n и возвращает указатель на строку с окончанием.
- Проверяем, если число больше 20 или меньше 5, то выбираем окончание
годи возвращаем его. - Если число от 5 до 9 включительно, то выбираем окончание
годаи возвращаем его. - В остальных случаях возвращаем окончание
лет. - В функции main создаём цикл, который будет вызывать функцию foo для каждого числа от 1 до 100 и выводить результат на экран.
- Выполняем выход из программы с кодом успеха.