Реализовать функцию записи числа прописью.
int number_to_text(unsigned long long number, char *buf, size_t bufsize)
{
/* Преобразует число number в текст и записывает
в буфер buf, максимального размера bufsize. Если число
поместилось в буфер, возвращает 0, иначе 1. */
}
Провести тестирование функции с помощью макрооператора assert
.
Примечание. Тип unsigned long long
является 64-битным и поддерживает значения вплоть до 18446744073709551615 (18 квинтиллионов ...). Чтобы передавать такие числа в функцию, необходмо ставить суффикс UL
: 18446744073709551615UL
.
Примеры:
number_to_text(0, ...)
→ "ноль"number_to_text(934, ...)
→ "девятьсот тридцать четыре"number_to_text(1009, ...)
→ "одна тысяча девять"number_to_text(17301, ...)
→ "семнадцать тысяч триста один"number_to_text(18446744073709551615UL, ...)
→ "восемнадцать квинтиллионов четыреста сорок шесть квадриллионов семьсот сорок четыре триллиона семьдесят три миллиарда семьсот девять миллионов пятьсот пятьдесят одна тысяча шестьсот пятнадцать"Справка. Степени 10:
Пример работы с 64-битными числами:
#include <stdio.h>
void qq(unsigned long long x) {
printf("%llu\n", x);
}
void main(void) {
qq(4000000000000UL);
}