c语言求n元一次方程组的根的代码

2025-03-04 08:38:58
推荐回答(1个)
回答1:

功能:已知有一三元一次方程组如下
,
方程系数由键盘输入,求其
3
个根。

*/
# include

int main(void)
{

int i, j, m, n, r, k=0, t; //i,j,m,k,t
作为循环计数变量;
n
表示有
n
个未知数,即
n
元;
r
表示有
r
个方程组成方程组。

//
n = r = 3;

printf("
请输入未知数个数
n
和方程的个数
:\n");

scanf("%d %d", &n, &r); //n
表示有
n
个未知数,即
n
元;
r
表示有
r
个方程
组成方程组。

float a[11][20]; //
用二维数组存储方程组参数。
11

100
课改动。这里
的程序限
10

20
个方程的方程组。

float b[200]; //
原来存放之间变量。

printf("
请输入方程组参数
\n");

for(j=0; j
for(i=0; i
scanf("%f", &a[j][i]);

/*

for(j=0; j此段程序作为检测该程序正确性的试数作
用。

{

for(i=0; i
printf("%f ", a[j][i]);

printf("\n");

}

float a[10][20]={{2,2,-1,6},{1,-2,4,3},{5,7,1,28}};
*/

if(r
printf("
方程有无穷解
\n");

if(r==n)

{

printf("
方程有唯一解
\n");

for(t=0; t循环次数:当
t=0
时,仅将
a[1][0],a[2][0],a[2][1]
的值转换为
0

t=1
时,才将其转换成最简型阶梯矩阵。

{

for(m=0; m表示第
m


for(j=0; j表示第
j


if(j!=m)

{

b[k] = a[j][m]/a[m][m];

for(i=0; i因为一行的每个
元素均要进行运算等式两边才会相等。

a[j][i] -= a[m][i]*b[k];

b[k]=0; //
此处是必不可少的。因为内
存中会有垃圾值,必须要处理。

k++;

}

}

for(j=0; j为了将其转换成单位矩阵,见《线性代数》第
98
页。

{

a[j][n] /= a[j][j];

a[j][j] /=a[j][j];