c语言 控制台输入3个小写字母,输出对应的大写字母,如果输入字符不符合要求,要求能提示错误并重新循环输入,直到输入形式正确后执行大小写转换并退出
为什么第一次输入错误后 第二次即使输入正确格式 也会先提示错误再给出转换后的答案呢?
在每个scanf语句值后加一个getchar(),接收到换行符。
#include <stdio.h>
int main()
{
char a, b, c;
do
{
scanf("%c%c%c", &a, &b, &c); //切记输入字母之间不要加空格,否则空格会被读到变量中
if (a >= 'a' && a <= 'z' && b >= 'a' && b <= 'z' && c >= 'a' && c <= 'z')
{
a -= 32;
b -= 32;
c -= 32;
printf("%c %c %c\n", a, b, c);
break;
}
else
{
printf("输入错误,请重新输入:\n");
}
//用来清理\n
getchar();
} while (1);
return 0;
}