📄 gaussqj.txt
字号:
#include "math.h"
#define eps 1e-7
#define Max 20
#include "stdio.h"
int sortgauss(double a[Max][Max],double *p,int n)
{
int k,r,i,j,m;
double t,s,u;
//选主元
for(k=0;k<n-1;k++)
{
t=a[k][k];
r=k;
for(i=k+1;i<n;i++)
if(t<a[i][k])
{
r=i;t=fabs(a[i][k]);
}
if(t<eps)
return(0);
//换行
if(r!=k)
{
*p=-*p;
for(j=k;j<n+1;j++)
{
u=a[r][j];
a[r][j]=a[k][j];
a[k][j]=u;
}
}
//消元
for(i=k+1;i<n;i++)
{
a[i][k]=a[i][k]/a[k][k];
for(j=k+1;j<n+1;j++)
a[i][j]=a[i][j]-a[i][k]*a[k][j];
}
*p=*p*a[k][k];
}
*p=*p*a[k][k];
//回带
a[n-1][n]=a[n-1][n]/a[n-1][n-1];
for(m=n-2;m>=0;m--)
{
s=0;
for(j=m+1;j<=n-1;j++)
{
s=s+a[m][j]*a[j][n];
}
a[m][n]=(a[m][n]-s)/a[m][m];
}
}
main()
{
int i,j,n;
double p=1,a[Max][Max]={0.00};
char path [80],ch;
//通过文件读入系数矩阵
printf("请输入系数矩阵文件路径:");
scanf("%s",path);
FILE *fp;
fp=fopen(path,"r");
if(fp==NULL)
return(0);
else
{
rewind(fp);
fscanf(fp,"%d",&n);
// ch=fgetc(fp);
for(i=0;i<n;i++)
{
for(j=0;j<n+1;j++)
{
fscanf(fp,"%lf ",&a[i][j]);
// ch=fgetc(fp);
}
}
}
if( sortgauss( a,&p,n)==0)
{
printf("fails!!\n");
return(1);
}
for(i=0;i<n;i++)
{ printf("x[%d]=%f\t",i,a[i][n]);
if((i+1)%4==0)
printf("\n");
}
printf("\n det=%f\n",p);
fclose(fp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -