我这个程序里为什么要加2个cin.get()

GSTARRAW 2008-01-13 10:38:54
#include<iostream>

using namespace std;

int main()
{
int n,n1,n2,n3;
cout<<"Please enter 5 integers:";
cin>>n;
n1=n;
cin>>n;
if(n<n1)
{
n2=n1;
n1=n;
}
else
n2=n;
cin>>n;
if(n<n1)
{
n3=n2;
n2=n1;
n1=n;
}
else if(n<n2)
{
n3=n2;
n2=n;
}
else
n3=n;
cin>>n;
if(n<n1)
{
n3=n2;
n2=n1;
n1=n;
}
else if(n<n2)
{
n3=n2;
n1=n;
}
else if(n<n3)
n3=n;
cin>>n;
if(n<n1)
{
n3=n2;
n2=n1;
n1=n;
}
else if(n<n2)
{
n3=n2;
n1=n;
}
else if(n<n3)
n3=n;
cout<<"The median is :"<<n3<<endl;
cin.get();
cin.get();
return 0;
}
...全文
410 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
woshi60 2011-09-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 linlan999 的回复:]

http://zhidao.baidu.com/question/24457142.html?fr=qrl3
[/Quote]


woshi60 2011-09-08
  • 打赏
  • 举报
回复
cin.get()是保留回车在输入流队列中的.而cin是丢弃回车的.
ch=cin.get();是第一次输入,因为是刚开始,所以没有回车保留在输入流的队列中.这时你输入一个字符,然后回车.get()收到回车或空格或制表符就停止输入了.此时,输入流队列中留下一个回车.
num=cin.get();这是第二次输入.因为第一次用了get,所以输入流队列中有个回车.则get()接受这个回车.又因为get()收到回车或空格或制表符就停止输入.所以这一次的输入就是一个回车.
可以num=cin.get();之前把回车给弄了.你应该想到了.就用cin.get();把第一次输入留下的回车给弄走.则num=cin.get()就可以正常了.

<C++ primer plus>说得很详细你去看看就会明白了

这是二楼给的网址里的。感觉有道理。不过我测试发现里面存的是换行符?
GSTARRAW 2008-01-14
  • 打赏
  • 举报
回复
但有的情况下只要一个 cin.get()就行了。
Minkey 2008-01-14
  • 打赏
  • 举报
回复
第一个cin.get()用来清空输入缓冲区;当然这也不是必要的,完全可以交给操作系统去处理
第二个就是system("pause");的作用了
GSTARRAW 2008-01-14
  • 打赏
  • 举报
回复
怎么结,我不知道。给了你分我是不是要扣分?
coolage31 2008-01-14
  • 打赏
  • 举报
回复
编译器问题
请LZ结贴,记得给分 嘿嘿~~
linlan999 2008-01-13
  • 打赏
  • 举报
回复
http://zhidao.baidu.com/question/24457142.html?fr=qrl3
keith_d 2008-01-13
  • 打赏
  • 举报
回复
     int   n,n1,n2,n3; 
cout<<"Please enter 5 integers:";
cin>>n;
n1=n;
cin>>n;
if(n<n1)
{
n2=n1;
n1=n;
}
else
n2=n;
cin>>n;
if(n<n1)
{
n3=n2;
n2=n1;
n1=n;
}
else if(n <n2)
{
n3=n2;
n2=n;
}
else
n3=n;
cin>>n;
if(n<n1)
{
n3=n2;
n2=n1;
n1=n;
}
else if(n<n2)
{
n3=n2;
n1=n;
}
else if(n<n3)
n3=n;
cin>>n;
if(n<n1)
{
n3=n2;
n2=n1;
n1=n;
}
else if(n<n2)
{
n3=n2;
n1=n;
}
else if(n<n3)
n3=n;
cout<<"The median is :" <<n3<<endl;



system("PAUSE");
return EXIT_SUCCESS;
}

我是新手,不过我在dc里面去掉最后两个cin.get() 依然可以执行完毕,我感觉这里的cin.get()作用与dc里面的system("pause")性质是一样的,都是为了让程序结束以后 停留在输入字符状态,以便察看结果,而不是一闪而过

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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