Извините, если название немного сбивает с толку, я попытаюсь объяснить лучше здесь. Итак, в основном я пытаюсь написать программу, в которой пользователь вводит номер телефона в буквенной форме, а затем переводит его в числовую форму. Как это:
Enter phone number: CALLATT
22555288
Где 2=ABC
, 3=DEF
, 4=GHI
, 5=JKL
, 6=MNO
, 7=PRS
, 8=TUV
, 9=WXY
Кроме того, если ввод номера телефона содержит символы, которые не являются алфавитными, их следует оставить как есть. Что значит:
Enter phone number: 1-800-COL-LECT
1-800-265-5328
Теперь я знаю, что это можно очень легко решить с помощью строк и массивов, но я не должен использовать их в этом упражнении. Я написал этот код:
#include <stdio.h>
int main() {
char two = '2', three = '3', four = '4', five = '5', six = '6',
seven = '7', eight = '8', nine = '9';
char num;
printf("Enter a phone number: ");
do {
num = getchar();
if(num == 'A' || num == 'B' || num == 'C'){
num = two;
}
else if(num == 'D' || num == 'E' || num == 'F'){
num = three;
}
else if(num == 'G' || num == 'H' || num == 'I'){
num = four;
}
else if(num == 'J' || num == 'K' || num == 'L'){
num = five;
}
else if(num == 'M' || num == 'N' || num == 'O'){
num = six;
}
else if(num == 'P' || num == 'R' || num == 'S'){
num = seven;
}
else if(num == 'T' || num == 'U' || num == 'V'){
num = eight;
}
else if(num == 'W' || num == 'X' || num == 'Y'){
num = nine;
}
printf("%c", num);
}while(getchar() != '\n');
return 0;
}
Что явно не работает. Я имею в виду, что он отлично работает, если пользователь вводит один символ, но не в том случае, если ввод состоит из более чем одного символа. Я не могу понять это... Я знаю, почему и где мой код неверен, но я не могу найти эффективное решение для решения проблемы без использования массивов.
Любая помощь? Большое спасибо :)
char num;
==›int num;
- person pmg   schedule 15.11.2018