作者:手机用户2502891053 | 来源:互联网 | 2023-01-31 09:18
对于C语言,我知道我很接近,但对于输入的任何字符,打印输出是"辅音".我的switch case语句有什么问题.我需要if
陈述吗?
#include
#include
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;
}
Jonathan Lef..
6
请注意,Microsoft页面上scanf_s()
写着:
对于字符,可以按如下方式读取单个字符:
char c;
scanf_s("%c", &c, 1);
您的scanf_s()
通话失败,但您没有检查结果,所以您不知道.
总是检查输入功能的结果!
并确保您已阅读手册页以了解您正在使用的功能.
使用" %c"
格式字符串跳过空白区域可能也是个好主意.但是,这是后来的改进.
您没有案例标签中break;
的代码default:
.那不是个好主意.
您可以使用:
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");
请注意,所有大写字母,标点符号,空格和控制字符都被视为辅音.这不完全准确.
1> Jonathan Lef..:
请注意,Microsoft页面上scanf_s()
写着:
对于字符,可以按如下方式读取单个字符:
char c;
scanf_s("%c", &c, 1);
您的scanf_s()
通话失败,但您没有检查结果,所以您不知道.
总是检查输入功能的结果!
并确保您已阅读手册页以了解您正在使用的功能.
使用" %c"
格式字符串跳过空白区域可能也是个好主意.但是,这是后来的改进.
您没有案例标签中break;
的代码default:
.那不是个好主意.
您可以使用:
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");
请注意,所有大写字母,标点符号,空格和控制字符都被视为辅音.这不完全准确.