在C++中是getchar()和for循环冲突吗?

这是一个读入大写字母转为小写字母的C++程序。

这里是程序代码:
#include<stdio.h>

int main()
{
for (;;)
{
printf("请输入一个大写字母:");
char x = getchar();
printf("对应的小写字母为:");
putchar(x + 32);
printf("\n\n");
}

return 0;

}

img

它总是会多空循环一次,老师也不给我们解答,还说没教到循环,用循环写的全部0分。

求求了谢谢各位orz!

多输入了换行符。getchar 和 scanf不一样,后者需要回车输入,而前者会把回车一起读入,相当于读入了2字符,因此需要跳过回车(再调用一次getchar)。

img


#include<stdio.h>
int main(){
char x,y;
for (;;)
{
printf("请输入一个大写字母:");
x = getchar();
y = getchar();
printf("对应的小写字母为:");
putchar(x + 32);
printf("\n\n");
}
return 0;
}
  • 因为你的循环没有退出循环的条件,所以在一直做循环,所以会一直提示你输入大写字母

  • 并不是什么冲突