C语言如何用函数调用实现矩阵的三种初等行变换?

用函数的调用怎么实现矩阵的行变换,行倍加以及行辈乘???

你要哪的三种行变换?
能说二具体变换规则吗?


你题目的解答代码如下:

#include<stdio.h>

void fun1(int a[3][3])
{
    int b[3];
    int i,n,m;
    printf("请输入需要交换的两个行\n");
    scanf("%d%d",&m,&n);
    for(i=0;i<3;i++)
    {
        b[i]=a[m-1][i];
        a[m-1][i]=a[n-1][i];
        a[n-1][i]=b[i];
    }
}

void fun2(int a[3][3])
{
    int i,n,m;
    printf("请输入被加的行\n");
    scanf("%d",&m);
    printf("请输入加上的行\n");
    scanf("%d",&n);
    for(i=0;i<3;i++)
    {
        a[m-1][i] += a[n-1][i];
    }
}
void fun3(int a[3][3])
{
    int b[3];
    int i,n,m,k;
    printf("请输入被加的行\n");
    scanf("%d",&m);
    printf("请输入加上的行\n");
    scanf("%d",&n);
    printf("请输入乘数\n");
    scanf("%d",&k);
    for(i=0;i<3;i++)
    {
        a[m-1][i] += a[n-1][i]*k;
    }
}
int main()
{
    int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
    int b[3];
    int i,j,n;
    printf("现在有一个矩阵如下\n");
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
      printf("选择1任意两行交换\n");
      printf("选择2任意一行加到任意一行上\n");
      printf("选择3任意一行乘以一个数加到任意一行上\n");
      printf("请选择123:");
    scanf("%d", &n);
    switch (n)
    {
        case 1:fun1(a); break;
        case 2:fun2(a); break;
        case 3:fun3(a); break;
        default:
            printf("输入错误");
            return 0;
    }
    printf("现在开始输出...\n");
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img