word2vector kmeans:关于do...while的问题

来源:百度文库 编辑:高考问答 时间:2024/04/30 02:17:36
大家帮忙看看为什么第一个程序能循环,第二个就不行,那里出的错?
第一个输入1就能循环:
#include<stdio.h>
void main()
{
int a;
do
{
printf("\n(1/0)?");
scanf("%d",&a);
}while(a==1);
}
第二个输入y也不能循环:
#include<stdio.h>
void main()
{
char a;
do
{
printf("\n(y/n)?");
scanf("%c",&a);
}while(a == 'Y'||a=='y');
}
运行时没有任何错误 和倒数第二行的空格也无关,我试过了

-_-!
运行第二个程序的时候你是输入一个'y'然后打回车吧?这样子当然就退出了。那是因为scanf("%c")是在输入缓冲区里顺序读取字符的(包括空格与回车等奇怪的字符),那么它第一次循环读取了你输入的那个y,然后马上执行第二次循环,这时候读取的是你打的那个回车符。回车符!=y,所以当然就退出循环了。要做到输入y就继续循环的话要这么写:
#include<stdio.h>
#include<string.h>
void main()
{
char a[100];
do
{
printf("\n(y/n)?");
scanf("%s",a);
}while(strcmp(a,"y")==0||strcmp(a,"Y")==0);
}
不知道这么说说清楚了没有....

会不会是倒数第二行的
}while(a == 'Y'||a=='y');
中间a == 'Y'多了两个空格啊
把它变成a=='Y'试试。
运行时它提示第几行出错了吗?