Простая программа для преобразования двух цифр в слова

То, что я пытаюсь сделать, это написать программу, в которой вы вводите две цифры, а затем они преобразуются в слова, которые печатаются. Проблема в том, что эта программа зависает после ввода двух цифр, и я понятия не имею, почему. Любая помощь приветствуется. Я новичок, и все, что я могу использовать для решения, это в основном, если и переключиться. Еще раз спасибо.

#include  int main (void) { int firstNum, secondNum; printf("Enter a two digit number: "); scanf("%d%d", &firstNum,&secondNum); if (firstNum == 1 && secondNum == 0){ printf("You entered the number ten\n");} if (firstNum == 1 && secondNum == 1){ printf("You entered the number eleven\n");} if (firstNum == 1 && secondNum == 2){ printf("You entered the number twelve\n");} if (firstNum == 1 && secondNum == 3){ printf("You entered the number thirteen\n");} if (firstNum == 1 && secondNum == 4){ printf("You entered the number forteen\n");} if (firstNum == 1 && secondNum == 5){ printf("You entered the number fifteen\n");} if (firstNum == 1 && secondNum == 6){ printf("You entered the number sixteen\n");} if (firstNum == 1 && secondNum == 7){ printf("You entered the number seventeen\n");} if (firstNum == 1 && secondNum == 8){ printf("You entered the number eighteen\n");} if (firstNum == 1 && secondNum == 9){ printf("You entered the number nineteen\n");} switch(firstNum){ case 2: printf("You entered the number twenty-");break; case 3: printf("You entered the number thirty-");break; case 4: printf("You entered the number forty-");break; case 5: printf("You entered the number fifty-");break; case 6: printf("You entered the number sixty-");break; case 7: printf("You entered the number seventy-");break; case 8: printf("You entered the number eighty-");break; case 9: printf("You entered the number ninty-");break; } switch (secondNum){ case 1: printf("one.\n");break; case 2: printf("two.\n");break; case 3: printf("three.\n");break; case 4: printf("four.\n");break; case 5: printf("five.\n");break; case 6: printf("six.\n");break; } return 0; } 

Ваша программа «зависает», потому что она ждет второго номера.

Вместо 4 2 ENTER введите 4 2 f o o ENTER .


Вам нужно проверить возвращаемое значение из scanf()

 if (scanf("%d%d", &firstNum, &secondNum) != 2) { fprintf(stderr, "Oops, the scanf didn't read 2 numbers.\n"); } else { /* continue with program */ /* you might as well see what scanf got from the input */ printf("scanf got the values %d and %d.\n", firstNum, secondNum); } 

Очень простой код (специально для новичков).

 #include  #include  int main() { int num,n,r; printf("Enter a two-digit number: "); scanf("%d",&num); n = num/10; r = num%10; switch(n) { case 1: switch(r) { case 0: printf("Ten"); break; case 1: printf("Eleven"); break; case 2: printf("Twelve"); break; case 3: printf("Thirteen"); break; case 4: printf("Fourteen"); break; case 5: printf("Fifteen"); break; case 6: printf("Sixteen"); break; case 7: printf("Seventeen"); break; case 8: printf("Eighteen"); break; case 9: printf("Nineteen"); } break; case 2: printf("Twenty-"); break; case 3: printf("Thirty-"); break; case 4: printf("Fourty-"); break; case 5: printf("Fifty-"); break; case 6: printf("Sixty-"); break; case 7: printf("Seventy-"); break; case 8: printf("Eighty-"); break; case 9: printf("Ninety-"); break; } if(n != 1) { switch(r) { case 1: printf("one"); break; case 2: printf("two"); break; case 3: printf("three"); break; case 4: printf("four"); break; case 5: printf("five"); break; case 6: printf("six"); break; case 7: printf("seven"); break; case 8: printf("eight"); break; case 9: printf("nine"); break; default: ; } } getch(); } 

Ваша программа считывает данные с консоли, а консоль находится в режиме «приготовленного». В этом режиме консоль собирает вход и позволяет пользователю редактировать его. Данные будут отправлены в программу после нажатия кнопки « Ввод» или « Ввод» .

Режим, который вы хотите, является «сырым» режимом. Существуют различные способы входа в режим raw, но это зависит от вашей ОС.

Быстрое исправление заключается в том, чтобы ввести две цифры и нажать Return