最新文章:

首页 C/C++

C语言解多元一次方程组(矩阵法)

发布时间:2016年06月08日 评论数:抢沙发 阅读数:468

    #include <stdio.h>
    #include <math.h>
    #define Han 200//(可自设)多元一次方程组有n行n+1列(多的一列是等号右边的值),给出行数就能确定矩阵,
    #define JUZHEN {1,1,1,1,5},{1,2,-1,4,-2},{2,-3,-1,-5,-2},{3,1,2,11,0}//示例一个
    int main()
    {
        int i,j,k,m,n,t,cf,hang=4;//行数为4
        float temp;
        float AA[Han][Han+1]={JUZHEN};//定义所要计算的数组//4行5列
        do{//判断是否重试
            for(i=0;i<hang;i++)//输出所定义的数组
            {
            printf("\n");
            for(j=0;j<hang+1;j++)
            {
                printf("%g\t",AA[i][j]);
            }
        }
        printf("\n");
        printf("是否自己输入?是:1;否:0");
        scanf("%d",&t);
        if(t==1)//判断是否自己输入数组
        {
            printf("输入未知数的个数");
            scanf("%d",&hang);
            for(i=0;i<hang;i++)//输入所定义的数组
            {
                for(j=0;j<hang+1;j++)
                {
                    printf("第%d行第%d列的数为:",i+1,j+1);
                    printf("j=%d hang=%d\n",j,hang);
                    scanf("%f",&AA[i][j]);
                }
            }
        }
        for(k=0;k<hang;k++)//这个大循环将数组的左下角转化为0
        {
            while(AA[k][k]==0)//如果第K行K列的那个数为0,则加和重组一行。
            {
                for(m=k+1;m<hang;m++)
                    for(n=k;n<hang+1;n++){
                        AA[k][n]+=AA[m][n];
                    }
            }
            for(i=k;i<hang;i++)//将第K列下面变为1
            {
                temp=AA[i][k];
                for(j=k;j<hang+1;j++)//将每列变为1
                {
                    AA[i][j]/=temp;
                }
            }
            for(i=k+1;i<hang;i++)//将下面的数列与上面的数列相减使其下面为0
            {
                for(j=0;j<hang+1;j++)
                {
                    AA[i][j]-=AA[k][j];
                }
            }
        }
        for(k=hang-2;k>=0;k--)//这个大循环将数组的右上角转化为0
        {
            for(i=k+1;i<hang+1-1;i++)//将第i列上面变为0
            {
                AA[k][hang+1-1]-=AA[k][i]*AA[i][hang+1-1];
                AA[k][i]=0;
            }
        }
        for(i=0;i<hang;i++)//输出该矩阵(也就是多元一次方程组)的解
        {
            printf("\n");
            for(j=0;j<hang+1;j++)
            {
                printf("%g\t",AA[i][j]);
            }
        }
        printf("\n未知数的值为:\n");
        for(i=0;i<hang;i++)//输出该矩阵(也就是多元一次方程组)的解
        {
            printf("x(%d)=\t%g\n",i+1,AA[i][hang+1-1]);
        }
        printf("\n");
        printf("是否再试一次?是:1;否:0");
        scanf("%d",&cf);
        }while(cf==1);//判断是否重试
    }
    
二维码加载中...
本文作者:HDC      文章标题: C语言解多元一次方程组(矩阵法)
本文地址:http://hdcin.cn/?post=73
版权声明:若无注明,本文皆为“小胖Blog's”原创,转载请保留文章出处。
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论