用高斯消去法解线性方程组
#include<stdio.h>#define M 10 //可计算最大方程组个数
void jsValue(int n,float **a,float x[]); //函数声明
main()
{
int i,j,n;
float a[M][M+1],x[2]; //数组a为系数,数组x为方程的解
puts("input n:"); //输入方程组个数
scanf("%d",&n);
puts("input array a:");
for(i=0;i<n;i++) //输入方程组的系数增广矩阵
{
for(j=0;j<n+1;j++)
scanf("%f",&a[i][j]);
}
jsValue(n,a,x); //调用函数
for(i=0;i<n;i++) //输出方程的解
printf("%-10.2f",x[i]);
}
void jsValue(int n,float a[M][M+1],float x[])
{
// 高斯消去法
int i,j,k;
/**********消去过程***********/
for(k=0;k<n;k++)
{
for(j=k+1;j<n+1;j++)
a[k][j]/=a[k][k];
for(i=k+1;i<n;i++)
for(j=k+1;j<n+1;j++)
a[i][j]-=a[i][k]*a[k][j];
}
/**********回带过程**********/
for(i=n-1;i>=0;i--)
{
x[i]=a[i][n];
for(j=i+1;j<n;j++)
x[i]-=a[i][j]*x[j];
}
}