为什么输入y以后只循环一遍啊?

来源:百度知道 编辑:UC知道 时间:2024/06/02 15:17:54
各位大侠看看下面代码,应该最后输入y就重新循环一遍的,但是为什么只能循环一遍就没法输入了呢?你们编译试试!

#include<stdio.h>
void main()
{
char ans;

do
{
printf("怎么不管用啊???");
printf("\n接着下一个号码请输入( y ):");
ans=getchar();

}while(ans=='Y'||ans=='y');

}

这是因为你在输入y后,实际上还输入了一个回车符号,在ans=getchar();的时候只取得了一个y字符,而回车符号保留了,等下次循环到ans=getchar();的时候,这个时候就是取得的回车符号,它的ASCII符号是10,不信你可以自己调试看看
我不知道还有没有更好的办法,但至少这样做是可以的
#include<stdio.h>
void main()
{
char ans;
char nouse;
do
{
printf("怎么不管用啊???");
printf("\n接着下一个号码请输入( y ):");
scanf("%c%c",&ans,&nouse);
}while(ans=='Y'||ans=='y');
}

这是因为你在输入y后,实际上还输入了一个回车符号,在ans=getchar();的时候只取得了一个y字符,而回车符号保留了,等下次循环到ans=getchar();的时候,这个时候就是取得的回车符号,它的ASCII符号是10,我试过了,是对的啊!#include<stdio.h>
#include<iostream.h>
void main()
{
char ans;

//ans=getchar();
do
{
printf("怎么不管用啊???");
printf("\n接着下一个号码请输入( y ):");
ans=getchar();
cout<<(int)ans<<endl;
}while(ans=='Y'||ans=='y');

}

VC++6.0好像就是这个样子的。