#include #include #include #include #include int main(){ char *ones[9] = { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; char *teens[10] = { "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" }; char *tens[9] = { "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" }; char *rest[6] = { "thousand", "million", "billion", "trillion", "quadrillion", "quintillion" }; size_t len; printf("enter integer: "); char *line = fgetln(stdin, &len); line[len] = 0; intmax_t num = strtoimax(line, NULL, 0); if(!num){ puts("zero."); return 0; } if(num < 0){ num *= -1; printf("negative "); } int parts[7]; int last = 0; for(int i = 0; i < 7; ++i){ parts[i] = num % 1000; if(!parts[i] && last == i) ++last; num /= 1000; } for(int i = 6; i >= 0; --i){ if(parts[i]){ int n = parts[i]; int o = n % 10; int t = (n / 10) % 10; int h = (n / 100) % 10; if(h) printf("%s %s%s", ones[h - 1], "hundred", t || o ? " " : ""); switch(t){ case 0: if(o) printf("%s", ones[o - 1]); break; case 1: printf("%s", teens[o]); break; default: if(o) printf( "%s-%s", tens[t - 1], ones[o - 1]); else printf("%s", tens[t - 1]); } if(i) printf(" %s%s", rest[i - 1], i == last ? "" : " "); } } puts("."); return 0; }