程序运行后自动关闭

肥多罗 2008-03-30 03:42:42
在VC 6.0编了个程序,在程序中编译运行没问题,打开DEBUG文件夹,打开里面的exe文件后,运行后,结果闪一下就看上去关了,getch()..system("pause")..都试过了,还是不行
以下是源码:
#include <iostream.h>
#include <math.h>
#define N 50
int GS1(int n,double matrix[N][N]){
int i;
int j;
int k;
int p;
int I;
double temp;
for(k=1;k<=n-1;k++)
{
p=fabs(matrix[k][k]); //选主元
I=k;
for(i=k+1;i<=n;i++)
{
if (p<fabs(matrix[i][k]))
{ I=i;
p=fabs(matrix[i][k]);
}//取得该列的对角线上的最大行
}
if(I!=k)
{
for(j=k;j<=n+1;j++)
{
temp=matrix[I][j];
matrix[I][j]=matrix[k][j];
matrix[k][j]=temp;
}
}//换行
if (matrix[k][k]==0) {cout<<"对角元为零,消元失败。";return 0;}
for(i=k+1;i<=n;i++)
{
matrix[i][k]=matrix[i][k]/matrix[k][k];
for (j=k+1;j<=n+1;j++)
{
matrix[i][j]=matrix[i][j]-matrix[i][k]*matrix[k][j];
}
}//消元
}
for(k=n;k>=1;k--)//回代,求解
{
temp=0;
for(i=k+1;i<=n;i++)
temp=temp+matrix[k][i]*matrix[i][n+1];
matrix[k][n+1]=(matrix[k][n+1]-temp)/matrix[k][k];
}
cout<<"该方程组的解为:"<<endl;
for(k=1;k<=n;k++)
{
cout<<"x"<<k<<"="<<matrix[k][n+1]<<" ";
}
return 0;

}


int main()
{

cout<<"Example**** x1+3*x2+2*x3=1 *****"<<endl;
cout<<"*********** x1+2*x2+3*x3=2 *****"<<endl;
cout<<"*********** x1+2*x2+4*x3=3 *****"<<endl;
cout<<"该方程组为3阶,加上b的列,共输入3行4列"<<endl;

int i;
int j;
int n;
double matrix[N][N];

cout<<"请输入所求方程组的阶数:";
cin>>n;

for (i=1;i<=n;i++) //输入矩阵
{
cout<<"输入第"<<i<<"行,每个数用空格隔开;输完一行后回车 ";
for (j=1;j<=n+1;j++)
{
cin>>matrix[i][j];
}
}
GS1(n,matrix);
return 0;

}
...全文
1106 17 打赏 收藏 转发到动态 举报
写回复
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
qmm161 2008-03-31
  • 打赏
  • 举报
回复
cout <<endl;
不仅仅是回车,还起到清空流的作用!
肥多罗 2008-03-31
  • 打赏
  • 举报
回复
为什么要清空流?
帅得不敢出门 2008-03-31
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 qmm161 的回复:]
cout < <endl;
不仅仅是回车,还起到清空流的作用!
[/Quote]

如果不清空流难道就会自动退出????
liveforme 2008-03-31
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 qmm161 的回复:]
cout < <endl;
不仅仅是回车,还起到清空流的作用!
[/Quote]
silent_shadow 2008-03-31
  • 打赏
  • 举报
回复
你的程序是在执行过程中出错而退出的,你设置的拦截函数getch()...等等都没被执行到.你可以单步调试找到程序终止的原因
gl0312 2008-03-31
  • 打赏
  • 举报
回复
同意12楼
肥多罗 2008-03-30
  • 打赏
  • 举报
回复
问题已经解决了。。太奇怪了 修改方法是:
为什么要加个回车啊?

cout < <"输入第" < <i < <"行,每个数用空格隔开;输完一行后回车 ";
for (j=1;j <=n+1;j++)
{
cin>>matrix[i][j];
}
}
GS1(n,matrix);

cout < <endl;
system("pause");
return 0;

}
肥多罗 2008-03-30
  • 打赏
  • 举报
回复
问题已经解决了。。太奇怪了 修改方法是:
为什么要加个回车啊?

cout < <"输入第" < <i < <"行,每个数用空格隔开;输完一行后回车 ";
for (j=1;j <=n+1;j++)
{
cin>>matrix[i][j];
}
}
GS1(n,matrix);

[b]cout<<endl;
system("pause");
[/b]
return 0;

}
wave_bit 2008-03-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wave_bit 的回复:]
用两个getch()看看能不能拦住
[/Quote]

getch();
cout<<"------- 结束 ---------"<<endl;
getch();

我试验了下,单独运行Debug目录下的程序也没有出现中途退出的问题,我用的是VC8.
中途退出的话应该是你的程序有问题(比如除0),因为我发现结果有乱码.
wave_bit 2008-03-30
  • 打赏
  • 举报
回复
用两个getch()看看能不能拦住
肥多罗 2008-03-30
  • 打赏
  • 举报
回复
那要怎么写的:int GS1(int n,double matrix[][N]) int GS1(int n,double matrix[N][])一样啊 [Quote=引用 4 楼 hastings 的回复:]
int GS1(int n,double matrix[N][N])
这个函数不对,第二个参数不能这样写.
[/Quote]
hoohag 2008-03-30
  • 打赏
  • 举报
回复
程序是没什么错误的, 我试过, 可以运行到return 0, 不过说的system不起作用, 我的确还没有遇到过. 哪位遇到的, 解决一下吧
abupie 2008-03-30
  • 打赏
  • 举报
回复
程序中途退出了吧。。。
单步调试。
hastings 2008-03-30
  • 打赏
  • 举报
回复
int GS1(int n,double matrix[N][N])
这个函数不对,第二个参数不能这样写.
hoohag 2008-03-30
  • 打赏
  • 举报
回复
你在文件前加上#include<stdlib.h>试试看
肥多罗 2008-03-30
  • 打赏
  • 举报
回复
return 0;前也加过。。。后也加过。。。也没用。。。
hoohag 2008-03-30
  • 打赏
  • 举报
回复
你的system("pause")加在什么地方的啊
相关推荐

63,596

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下