| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 983 人关注过本帖
标题:c++最简单程序的一点问题
只看楼主 加入收藏
〆﹏小白
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-2-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:13 
c++最简单程序的一点问题
程序代码:
#include<iostream>
using namespace std;
int main()
{
      int a,b,sum;
      cin >> a >> b;
      sum=a+b;
      cout <<"a+b=" << sum << endl;
      return 0;
}
我用的是devcpp4.9.9.2
这个运行之后,比如输入1 2 按回车之后窗口就关了,在return前加了system("pause");之后问题解决,但是老师讲的getch();怎么不行,还有那个按任意键继续怎么取?

新手第一次提问,木有积分,求好心大哥

[ 本帖最后由 〆﹏小白 于 2012-2-16 21:26 编辑 ]
2012-02-16 21:04
〆﹏小白
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-2-16
收藏
得分:0 
没人回答怎么回事儿,太简单了? 都睡了?
2012-02-16 21:35
闲出屁
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:420
专家分:612
注 册:2012-1-24
收藏
得分:0 
试试fflush(stdin);

[ 本帖最后由 闲出屁 于 2012-2-16 21:41 编辑 ]

乔布斯是神 宫崎骏也是神~~ 才知道 原来士兵突击的主题曲是久石让的 久石让的音乐 真传神
2012-02-16 21:40
〆﹏小白
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-2-16
收藏
得分:0 
这个~麻烦你回答下我提出的问题,我想先搞懂这个
2012-02-16 21:47
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:10 
3楼的意思是,让你在 getch(); 之前,先用 fflush(stdin); 清空一下输入缓冲

不过,我认为,无论是用 system("pause"); 还是 getch(); 都是一种外行的表现
一个程序运行完毕了,就应该结束,你看到系统自带的控制台程序中,哪个需要咸猪手去按一键再结束的?
如果你想一个保留输出结果,可以在cmd.exe中输入,也可以用 cmd.exe /k。
估计你听不懂,这么说吧:窗口是否关闭不是你应该管的事,那是控制台自己的事
2012-02-17 08:43
C_printf
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:122
注 册:2010-1-26
收藏
得分:5 
如果程序走到return 0; 就代表程序该完了。由于计算机很快,所以实际上输出了东西你只是看不到。
现在 要再return0;之前阻止程序结束,有很多做法,比如:
1,让电脑等待我们输入点东西  就是getch();   ??但是为什么不行,因为不输入2个数 再按回车  cin a,b 读了2个数,却留下了回车在缓冲区,getch()马上就读到了这个回车,
读到了就继续往下走,return0; 又结束了,又很快。。。。你再加个getch() 试试效果。2个getch 就没有问题,但是这样是繁琐的做法。
2,闲出屁说的,在getch之前,清空缓冲区中的回车,fflush(stdin);
3, system(“pause”); 类似 {fflush(stdin);printf(“按任意键继续”);getchar();}
4, 不要getch 不要fflush 不要system ,  而是在return0前面 来个 while(1); 注意while(1)后面的这个分号要带上。无限循环。
你只要阻止mian函数到return0;这一步  什么方法都行。。。。有点罗嗦
2012-02-17 10:16
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
如果是老师要求你们用的 devcpp4,我觉得老师就应该在一开始教给你们用它的方法。
初学都不会的东西很多,好容易写了一个程序又看不见结果,很伤心。我觉得最起码老师就应该在课上写一个很简单的程序,至少让学生能看看这个软件怎么使。

我觉得楼主就用 system("pause"),就行了。那行字你不用管。反正你知道那行字是 system("pause") 搞出来的就行了。你们平时写的程序,老师应该也不会验收的。
2012-02-17 10:32
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
哦。另外,楼主问为什么会 getch() 不行,就是因为楼上说的剩了个回车的原因。

在 c++ 里可以用 cin.get() 来代替 getch(),可以使用 cin.sync() 来刷缓冲区。
https://bbs.bccn.net/viewthread.php?tid=360369&page=1#pid2063147
有我写的一个小例子。

另外楼主大概有个认识,就是读取输入之类的其实是很麻烦的一件事就行了。学了一段时间的人也有好多不会的,如果初学,不用深究的太多。
2012-02-17 10:38
〆﹏小白
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-2-16
收藏
得分:0 
程序代码:
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
      int a,b,sum;
      cin >> a >> b;
      sum=a+b;
      cout <<"a+b=" << sum << endl;
      getch();
      return 0;
}

#include <iostream>
#include <cstdlib>                 // 注意该头文件一定要写
using namespace std;
int main()
{
      int a,b,sum;
      cin >> a >> b;
      sum=a+b;
      cout <<"a+b=" << sum << endl;
      system("pause");             // 调用系统命令,进行暂停。system("cls");调用系统命令,进行清屏。
      return 0;
}

这个是老师给的
2012-02-17 12:57
〆﹏小白
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-2-16
收藏
得分:0 
还有个问题,"按任意键继续" 这几个字怎么才能让他不显示呢
2012-02-17 13:02
快速回复:c++最简单程序的一点问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052542 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved