C 开关/机箱问题
对于C语言,我知道我很接近,但对于输入的任何字符,打印输出都是“辅音”。我的switch case语句有什么问题。我需要C 开关/机箱问题,c,C,对于C语言,我知道我很接近,但对于输入的任何字符,打印输出都是“辅音”。我的switch case语句有什么问题。我需要if语句吗 #include <stdio.h> #include <stdlib.h> int main() { char name; printf("Enter a character: "); scanf_s("%c", &name); switch (name) { case 'a':
if
语句吗
#include <stdio.h>
#include <stdlib.h>
int main()
{
char name;
printf("Enter a character: ");
scanf_s("%c", &name);
switch (name)
{
case 'a':
printf("Vowel");
break;
case 'e':
printf("Vowel");
break;
case 'i':
printf("Vowel");
break;
case 'o':
printf("Vowel");
break;
case'u':
printf("Vowel");
break;
case 'y':
printf("Sometimes");
break;
default:
printf("Consonant");
}
return 0;
}
#包括
#包括
int main()
{
字符名;
printf(“输入字符:”);
扫描单位(“%c”和名称);
交换机(名称)
{
案例“a”:
printf(“元音”);
打破
案例“e”:
printf(“元音”);
打破
案例“i”:
printf(“元音”);
打破
案例“o”:
printf(“元音”);
打破
案例“u”:
printf(“元音”);
打破
案例“y”:
printf(“有时”);
打破
违约:
printf(“辅音”);
}
返回0;
}
请注意,的Microsoft页面上显示:
对于字符,单个字符可按如下方式读取:
char c;
scanf_s("%c", &c, 1);
您的scanf_s()
调用失败,但您没有检查结果,因此您不知道这一点
始终检查输入函数的结果
并确保您已经阅读了手册页中所使用的功能
使用“%c”
作为跳过空白的格式字符串可能也是一个好主意。不过,这是以后的改进
您没有
中断代码>在默认值:
案例标签中的代码之后。那不是个好主意
您可以使用:
if (scanf_s("%c", &name, 1) == 1)
{
switch (name)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
printf("Vowel\n");
break;
case 'y':
printf("Sometimes\n");
break;
default:
printf("Consonant\n");
break;
}
}
else
fprintf(stderr, "Failed to read a character\n");
请注意,所有大写字母、标点符号、空格和控制字符均视为辅音。这并不完全准确。您输入的是大写字符吗?您尝试过调试器吗?cmd中的输出会询问一个问题“输入字符:”。因此,当输入任何字符时,下一行将打印“辅音”。如果我从代码中删除默认部分,那么在输入字符后将不会打印输出。当然,第一步是打印name
的值,这样您就可以看到您正在玩什么了?它实际上工作正常,显示您正在输入的内容。您没有包括引号(例如,'a'
)是吗?嗯。。。最后没有违约造成的损失,还有其他原因让我错过吗?(只是好奇,不是批评)谢谢你,乔纳森!这很有帮助,是扫描线内的1。另外,还感谢您提供关于将案例a、e、i、o、u后跟printf(“元音\n”)的额外建议。也添加了break.1,在扫描行中,所有粗体和斜体字的内容以及关于良好实践的解释都被忽略了!smh