Code Bye

2*3矩阵转置

#include<stdio.h>
int main()
{
    void sort(int x[][3],int n);
    int a[2][3];
    int i,j;
    printf("请输入一个2*3矩阵\n");
    for(i=0;i<2;i++)
        for(j=0;j<3;j++)
            scanf("%d",&a[i][j]);
        sort(a,2);
        for(i=0;i<2;i++)
        {
            for(j=0;j<3;j++)
                printf("%d ",a[i][j]);
            printf("\n");
        }
}
void sort(int x[][3],int n)
{
    int i,j,t;
    for(i=0;i<n;i++)
        for(j=0;j<3;j++)
            if(i<j)
            {
                t=x[i][j];
                x[i][j]=x[j][i];
                x[j][i]=t;
            }
}

怎么改啊?

解决方案

80

1.申请的数组应当是 int a[3][3];否则会越界
2.输出的时候应该是输出3行2列,而不是2行3列
#include<stdio.h>
int main()
{
    void sort(int x[][3],int n);
    int a[3][3];
    int i,j;
    printf("请输入一个2*3矩阵\n");
    for(i=0;i<2;i++)
        for(j=0;j<3;j++)
            scanf("%d",&a[i][j]);
        sort(a,2);
        for(i=0;i<3;i++)
        {
            for(j=0;j<2;j++)
                printf("%d ",a[i][j]);
            printf("\n");
        }
}
void sort(int x[][3],int n)
{
    int i,j,t;
    for(i=0;i<n;i++)
        for(j=0;j<3;j++)
            if(i<j)
            {
                t=x[i][j];
                x[i][j]=x[j][i];
                x[j][i]=t;
            }
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明2*3矩阵转置