Записать число русскими словами - C (СИ)
Формулировка задачи:
Дано натуральное число n (n <= 1000). Записать это число русскими словами (семнадцать, двести пятьдесят три, тысяча и т. д. ).
#include <iostream>
#include <string.h>
using namespace std;
int main() {
int n;
string s;
cin >> n;
if(n==1000){
s="тысяча";
}else{
s="";
switch(n/100){
case 1:s="сто";break;
case 2:s="двести";break;
case 3:s="триста";break;
case 4:s="четыреста";break;
case 5:s="пятьсот";break;
case 6:s="шестьсот";break;
case 7:s="семьсот";break;
case 8:s="восемьсот";break;
case 9:s="девятьсот";break;
}
if(n >= 100 && n%100 >= 10){ s+=" ";}
switch((n%100)/10){
case 2:s=s+"двадцать";break;
case 3:s=s+"тридцать";break;
case 4:s=s+"сорок";break;
case 5:s=s+"пятьдесят";break;
case 6:s=s+"шестьдесят";break;
case 7:s=s+"семьдесят";break;
case 8:s=s+"восемьдесят";break;
case 9:s=s+"девяносто";break;
}
if(n%100>=10&n%100<20){
switch(n%100){
case 10:s=s+"десять";break;
case 11:s=s+"одиннадцать";break;
case 12:s=s+"двенадцать";break;
case 13:s=s+"тринадцать";break;
case 14:s=s+"четырнадцать";break;
case 15:s=s+"пятнадцать";break;
case 16:s=s+"шестнадцать";break;
case 17:s=s+"семнадцать";break;
case 18:s=s+"восемнадцать";break;
case 19:s=s+"девятнадцать";break;
}
}else{
if(n%10 != 0 && (n % 100 >= 20 || n >= 100)){ s+=" ";}
switch(n%10){
case 1:s=s+"один";break;
case 2:s=s+"два";break;
case 3:s=s+"три";break;
case 4:s=s+"четыре";break;
case 5:s=s+"пять";break;
case 6:s=s+"шесть";break;
case 7:s=s+"семь";break;
case 8:s=s+"восемь";break;
case 9:s=s+"девять";break;
}
}
}
cout << s << endl;
return 0;
}Решение задачи: «Записать число русскими словами»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
int main() {
int n;
char s[100];
scanf("%d", &n);
if(n==1000){
strcpy(s, "тысяча");
}else{
s[0]=0;
switch(n/100){
case 1:strcpy(s, "сто");break;
case 2:strcpy(s, "двести");break;
case 3:strcpy(s, "триста");break;
case 4:strcpy(s, "четыреста");break;
case 5:strcpy(s, "пятьсот");break;
case 6:strcpy(s, "шестьсот");break;
case 7:strcpy(s, "семьсот");break;
case 8:strcpy(s, "восемьсот");break;
case 9:strcpy(s, "девятьсот");break;
}
switch((n%100)/10){
case 2:strcat(s, " двадцать");break;
case 3:strcat(s, " тридцать");break;
case 4:strcat(s, " сорок");break;
case 5:strcat(s, " пятьдесят");break;
case 6:strcat(s, " шестьдесят");break;
case 7:strcat(s, " семьдесят");break;
case 8:strcat(s, " восемьдесят");break;
case 9:strcat(s, " девяносто");break;
}
if(n%100>=10&n%100<20){
switch(n%100){
case 10:strcat(s, " десять");break;
case 11:strcat(s, " одиннадцать");break;
case 12:strcat(s, " двенадцать");break;
case 13:strcat(s, " тринадцать");break;
case 14:strcat(s, " четырнадцать");break;
case 15:strcat(s, " пятнадцать");break;
case 16:strcat(s, " шестнадцать");break;
case 17:strcat(s, " семнадцать");break;
case 18:strcat(s, " восемнадцать");break;
case 19:strcat(s, " девятнадцать");break;
}
}else{
switch(n%10){
case 1:strcat(s, " один");break;
case 2:strcat(s, " два");break;
case 3:strcat(s, " три");break;
case 4:strcat(s, " четыре");break;
case 5:strcat(s, " пять");break;
case 6:strcat(s, " шесть");break;
case 7:strcat(s, " семь");break;
case 8:strcat(s, " восемь");break;
case 9:strcat(s, " девять");break;
}
}
}
printf("%s\n", s);
return 0;
}
Объяснение кода листинга программы
В этом коде на языке C представлена функция, которая принимает целое число от 1 до 999 и выводит его русское словесное представление. Список действий, выполняемых в коде:
- Объявляются две переменные:
nтипа int (целое число) иsтипа char с размером 100 символов. - С помощью функции
scanfв переменнуюnсчитывается целое число, которое затем проверяется на равенство 1000. - Если число равно 1000, то в переменную
sзаписывается словотысяча. - В противном случае, в
sзаписывается ноль, который необходим для корректной работы последующих операций со строками. - Далее, в зависимости от значения
nот 1 до 9, вsзаписывается соответствующее слово отстододевятьсот. - Затем, в зависимости от значения
nот 10 до 90, вsдобавляется слово, обозначающее количество отдесятьдодевяносто. - Если
nнаходится в диапазоне от 100 до 199, то вsдобавляется слово, обозначающее десятки отдесятьдодевятнадцать. - В противном случае, в
sдобавляется слово, обозначающее единицы отодиндодевять. - В конце функция выводит результат в консоль. Код довольно сложный из-за большого количества условий, но он выполняет свою задачу и может быть использован для обучения основам программирования и работы со строками.