//try it 试试看
成都创新互联,为您提供网站建设公司、成都网站制作公司、网站营销推广、网站开发设计,对服务三维植被网等多个行业拥有丰富的网站建设及推广经验。成都创新互联网站建设公司成立于2013年,提供专业网站制作报价服务,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏心悦目的作品。 与客户共同发展进步,是我们永远的责任!
#include stdio.h
void transpose( int a[6][6],int n)
{
int i,j,temp;
for(i=0;in;i++)
for (j=0;ji;j++)
{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=0;in;i++)
for(j=0;jn;j++)
scanf("%d",a[i][j]);
transpose(a,n);
printf("操作后的数组为:\n");
for (i=0;in;i++)
{
for(j=0;jn;j++)
printf("%d ",a[i][j]);printf("\n");
}
#includestdio.h
int main()
{int i,j,t,a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
printf("原来的数组:\n");
for(i=0;i3;i++)
{
for(j=0;j3;j++)
printf("%d ",a[i][j]);
printf("\n");
}
for(i=0;i2;i++)
for(j=i+1;j3;j++)
{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}
printf("转置后的数组:\n");
for(i=0;i3;i++)
{
for(j=0;j3;j++)
printf("%d ",a[i][j]);
printf("\n");
}
getch();
return 0;
}
你的数组转置程序,主要有两个问题,
一 C语言二维数组的参数声明和传参不正确
二 二维数组的转置,只需要以主对角线为轴翻转一次就行了,
因此,transport函数中for_j循环的终止条件应该为ji;
改正后的数组转置C语言程序如下(改动的地方见注释)
#includestdio.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=0;i3;i++)
for(j=0;j3;j++)
{
scanf_s("%d",a[i][j]);//这里建议把scanf_s改成scanf
}
transport(a);//这里把a[3][3]改成a
for(i=0;i3;i++)
{//这里加大括号
for(j=0;j3;j++)
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=0;i3;i++)
for(j=0;ji;j++)//这里把j3;改成ji;
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}