怎么没有输出就推出了?

ciappcia 2008-10-14 10:38:57
int main(){
int num;
int x;
char ch1='y';

while(ch1=='y')
{
printf("input x: ");
scanf("%d",&x);
printf("continue ? 'y' or 'n'\n");
ch1=getchar();
cout<<"ch1 is "<<ch1;
}

return 0;
}
...全文
108 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
kkndciapp 2008-10-14
  • 打赏
  • 举报
回复
加入fflush(stdin); 清空缓存,要不然读入的是回车,导致直接退出
muturenby 2008-10-14
  • 打赏
  • 举报
回复
在C++里,cout<<"ch1 is "<<ch1;
是一句无效代码,程序执行到该的下一句有效代码时,才执行该句.但你的代码下面没有了,所以没有输出就退出了!
要想使该句被执行,改为:cout<<"ch1 is "<<ch1<<endl;
加上endl后就成为有效的代码了!
这是VC里为了提高效率的一种缓冲机制!
kevin0716 2008-10-14
  • 打赏
  • 举报
回复
程序是对的,只是在后台处理了,自己看不到现实过程

可以将return0;这句去掉,在其前加一句getchar();就可以看到了

你自己试试吧,没问题的
xia0zhuge 2008-10-14
  • 打赏
  • 举报
回复

#include<iostream.h>
int main(){
int num;
int x;
char ch1='y';

while(ch1=='y')
{
printf("input x: ");
scanf("%d",&x);
printf("continue ? 'y' or 'n'\n");
fflush(stdin);//清除输入缓冲区
ch1=getchar();//getchar()从缓冲区中取数据,不一定是新鲜的输入
cout<<"ch1 is "<<ch1<<endl;
}

return 0;
}
  • 打赏
  • 举报
回复
没有输出就退出的话,那就在return 0;之前加getch(); 或者system(pause);

如果从命令行执行程序的话,这些都不用加,就能看到
xhs_lh04 2008-10-14
  • 打赏
  • 举报
回复
当回车之后,getchar才开始从stdin流中每次读入一个字符.getchar函数的返回值是输入的第一个字符的ASCII码,如出错返回-1,且将输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.

也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.

因为你之前scanf("%d",&x);等待输入时如果只输入数字,那getchar不会等待你输入
直接从缓冲区读!!!!那读出是空的,回显时当然是空的了


你去掉前面的scanf就能看到你输入的yn了
建议第二个输入不用getchar


  • 打赏
  • 举报
回复
int main(){
int num;
int x;
char ch1='y';

while(ch1=='y')
{
printf("input x: ");
scanf("%d",&x);
fflush(stdin); // ch1=getchar();也行。清空输入。因为:执行程序的时候输入数据最后有个回车,这个就是用来取回车符的,忽略回车之后,下面的ch1=getchar();才会正确取到y或者n或者其他,否则取到的就是回车
printf("continue ? 'y' or 'n'\n");
ch1=getchar();
cout<<"ch1 is "<<ch1;
}

return 0;
}
Dan_M 2008-10-14
  • 打赏
  • 举报
回复
int main(){
int num;
int x;
char ch1='y';

while(ch1=='y')
{
printf("input x: ");
scanf("%d",&x);
printf("continue ? 'y' or 'n'\n");
ch1=getchar();
cout<<"ch1 is "<<ch1;
}
sleep(100000);//加这句试试
return 0;
}
chenzhp 2008-10-14
  • 打赏
  • 举报
回复
ch1没有取得值,且这个时候又不等于'y',条件为假,就推出了
帅得不敢出门 2008-10-14
  • 打赏
  • 举报
回复

int main(){
int num;
int x;
char ch1='y';

while(ch1=='y')
{
printf("input x: ");
scanf("%d",&x);
printf("continue ? 'y' or 'n'\n");
fflush(stdin);
ch1=getchar();
cout<<"ch1 is "<<ch1;
}

return 0;
}
szhshaozhihua 2008-10-14
  • 打赏
  • 举报
回复
int main(){
int num;
int x;
char ch1='y';

while(ch1=='y')
{
printf("input x: ");
scanf("%d",&x);
printf("continue ? 'y' or 'n'\n");
ch1=getchar();
cout<<"ch1 is "<<ch1;
}

return 0;
getch();


}
这样应该就可以了。红色部分。
minorcxx 2008-10-14
  • 打赏
  • 举报
回复
int num;
int x;
char ch1='y';

while(ch1=='y')
{
printf("input x: ");
scanf("%d",&x);
printf("continue ? 'y' or 'n'\n");
ch1=getchar();
ch1=getchar();
cout<<"ch1 is "<<ch1<<endl;
}
ghoster1985 2008-10-14
  • 打赏
  • 举报
回复
在return 0;之前加上getch();
ghoster1985 2008-10-14
  • 打赏
  • 举报
回复
控制台程序吧,你输入了y之后程序只会一闪而过的,虽然正确执行但你看不到结果的
minorcxx 2008-10-14
  • 打赏
  • 举报
回复
getchar不能取回车, 你输入数字后按了回车

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧