电动车两轮改三轮:请帮看看我的C程序?

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 14:06:23
#include<stdio.h>
main()
{
char choose;
int n=0, N=1;
while(N)
{
printf("Are you want to go on : Y or N \n");
scanf("%c",&choose);
if(choose=='y'||choose=='Y')
{
N++;
n++;
}
else N=0;
}
}
当我输入N时运行成功,可我输入y或Y时,程序却循环运行到scanf("%c",&choose)时没有等待我输入就跳过去了,这是怎么回事?程序错在哪里?多谢了!高分悬赏!!!

因为你输入Y或者y后,必然按了回车留在缓冲区,所以scanf那句接收到的是回车,即choose的值为\'\\n\'
解决方法
在scanf(\"%c\",&choose)后面加一句getchar()来吃掉回车

#include<stdio.h>
main()
{
char choose; /*定义的为字符类型*/
int n=0, N=1;
while(N)
{
printf("Are you want to go on : Y or N \n");
choose=getchar(); /* 你在这儿输入的是字符不是整数 */
if(choose=='y'||choose=='Y')
{
N++;
n++;
}
else N=0;
}
}

试着用下%s而你不是%c,虽然这样不合道理,但是你可以把choose定义成一个字符串,然后比较字符串的第一位就可以了,呵呵