求解n元一次方程组的C语言程序,简单点的,网上的太复杂了 50

 我来答
百度网友a1e531d
2015-12-25 · TA获得超过1010个赞
知道小有建树答主
回答量:744
采纳率:50%
帮助的人:322万
展开全部
# include <stdio.h>
int main(void) 
{  
int i, j, m, n, r, k=0, t; //i,j,m,k,t 作为循环计数变量;n表示有n个未知数,即n元;r表示有r个方程组成方程组。 
printf("请输入未知数个数n和方程的个数:\n"); 
scanf("%d %d", &n, &r);  //n表示有n个未知数,即n元;r表示有r个方程组成方程组。  
float a[11][20];        //用二维数组存储方程组参数。11和100课改动。这里的程序限 10 元 20 个方程的方程组。  
printf("请输入方程组参数\n");  
for(j=0; j<n; j++)   
for(i=0; i<r+1; i++)   
scanf("%f", &a[j][i]); 
if(r<n)   
printf("方程有无穷解\n"); 
if(r==n) 
{   
printf("方程有唯一解\n"); 
for(t=0; t<n-1; t++)      //循环次数:当t=0时,仅将a[1][0],a[2][0],a[2][1]的值转换为0;t=1时,才将其转换成最简型阶梯矩阵。   
for(m=0; m<n; m++)   //m表示第m列     
for(j=0; j<n; j++)       //j表示第j行      
if(j!=m)     
{  
float b= a[j][m]/a[m][m]; 
for(i=0; i<n+1; i++) //因为一行的每个元素均要进行运算等式两边才会相等。        
a[j][i] -= a[m][i]*b;  

for(j=0; j<n; j++)      //为了将其转换成单位矩阵,见《线性代数》
{    
a[j][n] /=a[j][j];    
a[j][j] /=a[j][j]; 
}
}
for(j=0; j<r; j++)   
printf("x[%d] = %f\n", j, a[j][n]);  //输出最终结果,即未知数x,y,z...的值。
return 0;
}

输入为:2 2 -1 6 1 -2 4 3 5 7 1 28 

即方程组为:

2x+2y- z=6     

x-2y+4z=3  

5x+7y+ z=28 

其正确结果是:x=1,y=3,z=2 

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式