c程序数组的转置?

Python024

c程序数组的转置?,第1张

你的数组转置程序,主要有两个问题,

一 C语言二维数组的参数声明和传参不正确

二 二维数组的转置,只需要以主对角线为轴翻转一次就行了,

因此,transport函数中for_j循环的终止条件应该为j<i

改正后的数组转置C语言程序如下(改动的地方见注释)

#include<stdio.h>

int main()

{

int a[3][3]

int i,j

void transport(int a[][3])//这里把返回值类型int改成void,把a[3][3]改成a[][3]

printf("input:")

for(i=0i<3i++)

for(j=0j<3j++)

{

scanf_s("%d",&a[i][j])//这里建议把scanf_s改成scanf

}

transport(a)//这里把a[3][3]改成a

for(i=0i<3i++)

{//这里加大括号

for(j=0j<3j++)

printf("%3d",a[i][j])

printf("\n")//这里加一句,换行

}//这里加大括号

return 0

}

void transport(int a[][3])//这里把返回值类型int改成void,把a[3][3]改成a[][3]

{

int i,j,t

for(i=0i<3i++)

for(j=0j<ij++)//这里把j<3改成j<i

{

t=a[i][j]

a[i][j]=a[j][i]

a[j][i]=t

}

}

//try it 试试看

#include <stdio.h>

void transpose( int a[6][6],int n)

{

int i,j,temp

for(i=0i<ni++)

for (j=0j<ij++)

{temp=a[i][j]a[i][j]=a[j][i]a[j][i]=temp}

}

void main()

{

int i,j,a[6][6],n

printf("please input the 维度<1-6>:")

scanf("%d",&n)

printf("请输入数组元素:\n")

for (i=0i<ni++)

for(j=0j<nj++)

scanf("%d",&a[i][j])

transpose(a,n)

printf("操作后的数组为:\n")

for (i=0i<ni++)

{

for(j=0j<nj++)

printf("%d ",a[i][j])printf("\n")

}