注册 登录
编程论坛 C++教室

c++最简单程序的一点问题

〆﹏小白 发布于 2012-02-16 21:04, 983 次点击
程序代码:
#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 编辑 ]
13 回复
#2
〆﹏小白2012-02-16 21:35
没人回答怎么回事儿,太简单了? 都睡了?
#3
闲出屁2012-02-16 21:40
试试fflush(stdin);

[ 本帖最后由 闲出屁 于 2012-2-16 21:41 编辑 ]
#4
〆﹏小白2012-02-16 21:47
这个~麻烦你回答下我提出的问题,我想先搞懂这个
#5
rjsp2012-02-17 08:43
3楼的意思是,让你在 getch(); 之前,先用 fflush(stdin); 清空一下输入缓冲

不过,我认为,无论是用 system("pause"); 还是 getch(); 都是一种外行的表现
一个程序运行完毕了,就应该结束,你看到系统自带的控制台程序中,哪个需要咸猪手去按一键再结束的?
如果你想一个保留输出结果,可以在cmd.exe中输入,也可以用 cmd.exe /k。
估计你听不懂,这么说吧:窗口是否关闭不是你应该管的事,那是控制台自己的事
#6
C_printf2012-02-17 10:16
如果程序走到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;这一步  什么方法都行。。。。有点罗嗦
#7
pangding2012-02-17 10:32
如果是老师要求你们用的 devcpp4,我觉得老师就应该在一开始教给你们用它的方法。
初学都不会的东西很多,好容易写了一个程序又看不见结果,很伤心。我觉得最起码老师就应该在课上写一个很简单的程序,至少让学生能看看这个软件怎么使。

我觉得楼主就用 system("pause"),就行了。那行字你不用管。反正你知道那行字是 system("pause") 搞出来的就行了。你们平时写的程序,老师应该也不会验收的。
#8
pangding2012-02-17 10:38
哦。另外,楼主问为什么会 getch() 不行,就是因为楼上说的剩了个回车的原因。

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

另外楼主大概有个认识,就是读取输入之类的其实是很麻烦的一件事就行了。学了一段时间的人也有好多不会的,如果初学,不用深究的太多。
#9
〆﹏小白2012-02-17 12:57
程序代码:
#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;
}

这个是老师给的
#10
〆﹏小白2012-02-17 13:02
还有个问题,"按任意键继续" 这几个字怎么才能让他不显示呢
#11
〆﹏小白2012-02-17 13:06
还有一个 ,就是 "gotoxy();"这个怎么用
程序代码:
#include<iostream>
using namespace std;
int main()
{
    cout<<"aaa.\n";
    gotoxy(35,6);
    getch();
    return 0;
}
要怎么改呢
#12
BCLT5402012-02-17 17:35
你用的什么编译环境?
#13
pangding2012-02-18 09:09
你不用管那几字,出那几个字就是为了让你看一眼程序的结果。不然就直接关了。

另外,我觉得你们老师确实很傻,请看 5楼 的点评。
#14
lucky5635912012-02-19 10:15
其实就是中断程序而已
1