一 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")
}