c语言二元一次方程组求解代码
时间: 2024-09-27 07:15:41 浏览: 36
求解二元一次方程组的C语言代码
在 C 语言中,解决二元一次方程组通常涉及高斯消元法或者矩阵运算。这里是一个简单的例子,展示如何使用高斯消元法来求解形如 ax + by = c 和 dx + ey = f 的线性方程组。请注意,这个示例假设输入是整数系数,实际应用中可能需要考虑浮点数计算。
```c
#include <stdio.h>
#include <stdlib.h>
// Function to solve a system of linear equations
void solveLinearSystem(int a, int b, int c, int d, int e, int f) {
// 创建一个增广矩阵
int matrix[2][3] = {{a, b, c}, {d, e, f}};
// 高斯消元(行变换)
for (int i = 0; i < 2; ++i) {
if (matrix[i][i] == 0) {
printf("Error: The coefficient of the leading variable is zero.\n");
return;
}
for (int j = i + 1; j < 3; ++j) {
float factor = (float)matrix[j][i] / matrix[i][i];
matrix[j][0] -= factor * matrix[i][0];
matrix[j][1] -= factor * matrix[i][1];
matrix[j][2] -= factor * matrix[i][2];
}
}
// 检查是否达到简化阶梯形式
if (matrix[1][1] != 0) {
matrix[1][0] /= matrix[1][1]; // x1 = M11 / M21
matrix[0][0] -= matrix[1][0] * matrix[0][1]; // M00 = M01 - M02 * M11 / M21
matrix[0][1] = 0; // M01 = 0 (eliminated)
} else if (matrix[0][1] != 0) {
matrix[1][0] = matrix[0][0]; // x1 = M00 (interchange rows if necessary)
matrix[0][0] = 0;
matrix[1][1] = 1; // M21 = 1 (make pivot 1)
matrix[0][1] = 1; // M01 = 1 (pivot row becomes identity row)
} else {
printf("No solution exists, or infinite solutions.\n");
return;
}
// 输出结果
printf("x1 = %d\n", (int)matrix[1][0]);
printf("x2 = %d\n", (int)matrix[0][0]);
}
int main() {
int a, b, c, d, e, f;
printf("Enter coefficients a, b, c, d, e, and f: ");
scanf("%d %d %d %d %d %d", &a, &b, &c, &d, &e, &f);
solveLinearSystem(a, b, c, d, e, f);
return 0;
}
```
阅读全文