📄 gaos.c
字号:
#include <stdio.h>
#include <math.h>
#define N 3
void Gauss(float sz[N][N+1])
{int i,j,k,t; //t记录最大下标
float s,c;
double p; //s交换中间变量
for(k=0;k<N-1;k++)
{
p=0;
for(i=k;i<N;i++)
{
if(p<fabs(sz[i][k])) //找最大行
{
p=fabs(sz[i][k]);
t=i;
}
}
if(k!=t) //交换
for(j=k;j<N+1;j++)
{s=sz[k][j];
sz[k][j]=sz[t][j];
sz[t][j]=s;
}
j=k+1;
while(j<N)
{ c=sz[j][k]/sz[k][k]; //变换系数
for(i=k;i<N;i++)
sz[j][i]=sz[j][i]-c*sz[k][k];
j++;
}
}
}
void qiuzhi( float sz[N][N+1]) //回代求值
{int i,j;
float s=0,X[N]={0};
X[N-1]=sz[N-1][N]/sz[N-1][N-1]; //先求得最后一个解
for(i=N-2;i>=0;i--)
{ for(j=i+1;j<N;j++)
s+=(sz[i][j]*X[j]);
X[i]=(sz[i][N]-s)/sz[i][i]; //回代公式求解
s=0;
}
printf("此题的结果为:");
for(i=0,j=1;i<N;i++,j++)
printf("X%d=%f ",j,X[i]);
}
main() //主函数
{float sz[N][4];
int i,j;
printf("请输入题目的增广矩阵:\n");
for(i=0;i<N;i++)
for(j=0;j<4;j++)
scanf("%f",&sz[i][j]); //高斯列主元消去法
Gauss(sz);
qiuzhi(sz); //回代求值
printf("\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -