gpt4 book ai didi

C 程序将字母电话号码转换为数字形式

转载 作者:行者123 更新时间:2023-11-30 19:51:02 25 4
gpt4 key购买 nike

我正在开发一个 C 代码,它将接受字母电话号码并转换为数字。我被困在输出上。输出将减少所需的数字。例如 1-800-GATOR,将返回 42867,但不会返回 1-800-42867。这就是我到目前为止所拥有的......

#include <ctype.h>  
#include <stdio.h>

int main (void)
{
char ch;
int num_vowels = 0;

printf("Please Enter a phone number: ");
while ((ch = getchar()) != '\n')
{
switch (ch) {
case 'A': case 'B': case 'C':
putchar('2');
break;
}
switch (ch) {
case 'D': case 'E': case 'F':
putchar ('3');
break;
}
switch (ch) {
case 'G': case 'H': case 'I':
putchar ('4');
break;
}
switch (ch) {
case 'J': case 'K': case 'L':
putchar ('5');
break;
}
switch (ch) {
case 'M': case 'N': case 'O':
putchar ('6');
break;
}
switch (ch) {
case 'P': case 'Q': case 'R': case 'S':
putchar ('7');
break;
}
switch (ch) {
case 'T': case 'U': case 'V':
putchar ('8');
break;
}
switch (ch) {
case 'W': case 'X': case 'Y': case 'Z':
putchar ('9');
break;
}

printf("%c", num_vowels);


}

return 0;
}

这是我在 printf("%c", num_vowels); 中遗漏的东西吗?

任何帮助都适用!

最佳答案

您可能误解了switch语句。虽然您的用法确实执行正确,但您只需要一个语句来处理多种情况:

switch (ch) {
case 'A': case 'B': case 'C':
putchar('2');
break;
case 'D': case 'E': case 'F':
putchar('3');
break;
case 'G': case 'H': case 'I':
putchar('4');
break;
/* ... */
}

请注意,当输入与任何情况都不匹配时,不会发生任何情况。这就是为什么只有大写字母被转换并发送到输出。一种简单的解决方案是添加一个 default 案例。这样,当输入字符不是任何大写字母时,它会直接发送到输出。将其添加到开关的末尾:

switch(ch) {
case 'A': case 'B':
/* ... */
default:
putchar(ch);
break;
}

您还可以执行其他检查,例如仅打印某些字符。

至于 printf("%c", num_vowels); 没有任何问题,只是 num_vowels 从未使用过。因此,您应该期望它在发送到输出的每个字符后打印一个空字符 ('\0')。我不确定您的意图,但如果它是一个计数器,您应该增加变量并仅在读取输入后在 while 循环之外打印它。

#include <stdio.h>
#include <ctype.h>

int
main(int argc, char **argv)
{
char ch;
int num_letters = 0;

printf("Please Enter a phone number: ");
while ((ch = getchar()) != '\n')
{
if (isupper(ch)) num_letters++;

switch (ch) {
case 'A': case 'B': case 'C':
putchar('2');
break;
case 'D': case 'E': case 'F':
putchar('3');
break;
case 'G': case 'H': case 'I':
putchar('4');
break;
case 'J': case 'K': case 'L':
putchar('5');
break;
case 'M': case 'N': case 'O':
putchar('6');
break;
case 'P': case 'Q': case 'R': case 'S':
putchar('7');
break;
case 'T': case 'U': case 'V':
putchar('8');
break;
case 'W': case 'X': case 'Y': case 'Z':
putchar('9');
break;
default:
putchar(ch);
break;
}

}
printf("\n-- %d alphabetic letters used.\n", num_letters);

return 0;
}

关于C 程序将字母电话号码转换为数字形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52340780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com