📄 c语言实现.cpp
字号:
#include<stdio.h>
#include<math.h>
#define n 3
void print(double a[n][n+1]);
void gauss(double a[n][n+1],double x[n])
{
int i,j,k;
double temp,s,l;
for(i=0;i<n-1;i++)
{
//选列主元
k=i;
for(j=i+1;j<n;j++)
{ if(fabs(a[j][i])>fabs(a[k][i]))
k=j;
}
//换行
if(k!=i)
for(j=i;j<=n;j++)
{
temp=a[i][j];
a[i][j]=a[k][j];
a[k][j]=temp;
}
//消元
for(j=i+1;j<n;j++)
{
l=1.0*a[j][i]/a[i][i];
for(k=0;k<n+1;k++)
a[j][k]=a[j][k]-a[i][k]*l;
}
print(a);
printf("\n");
}
print(a);
//回代
x[n-1]=a[n-1][n]/a[n-1][n-1];
for(i=n-2;i>=0;i--)
{
s=0.0;
for(j=i;j<n;j++)
{
if(j==i)
continue;
s+=a[i][j]*x[j];
}
x[i]=(a[i][n]-s)/a[i][i];
}
}
void print(double a[n][n+1])
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n+1;j++)
printf("%f\t",a[i][j]);
printf("\n");
}
}
void main()
{
int i,j;
double a[n][n+1]={{1,1,1,6},{-1,3,1,4},{2,-6,1,-5}},x[n]={1,2,3};
gauss(a,x);
printf("方程组的解为:");
for(i=0;i<n;i++)
printf("x%d=%f\n",i+1,x[i]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -