重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你的数组转置程序,主要有两个问题,
在同德等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站制作、成都做网站 网站设计制作按需设计网站,公司网站建设,企业网站建设,品牌网站设计,成都全网营销,外贸网站建设,同德网站建设费用合理。
一 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;
}
}
//try it 试试看
#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");
}
/*
函数功能:
对任意row行col列的矩阵转置
函数入口参数:
指向一维整型数组的指针变量a,指向单元存放转置前的矩阵元素
整型变量row,矩阵的行数即二维整型数组的行数
整型变量col,矩阵的列数即二维整型数组的列数
函数出口参数:
指向一维整型数组的指针变量at,指向单元存放转置后的矩阵元素
函数返回值:
无
*/
void
convert(int
(*a)[col],
int
(*at)[row],
int
row,
int
col)
{
int
i,
j;
for
(i=0;
irow;
i++)
{
for
(j=0;
jcol;
j++)
{
*(*(at+j)+i)
=
*(*(a+i)+j);
}
}
}
由于题目没有说明数组是方阵,所以本答案按一般二维数组处理。
代码文本:
#include "stdio.h"
#define N 3
#define M 5
void myf(int a[][M],int b[][N],int i,int j){//本函数将数组a转置为b
int t;
for(t=j-1,i--;i=0;i--)
for(j=t;j=0;b[j][i]=a[i][j--]);
}
int main(int argc,char *argv[]){
int a[N][M],b[M][N],i,j,t;
puts("Transpose before:");
for(t=i=0;iN;i++){//给数组a赋值并输出
for(j=0;jM;printf("%3d",a[i][j++]=++t));
putchar('\n');
}
myf(a,b,N,M);//调用转置函数
puts("Transpose later:");
for(i=0;iM;i++){//输出转置后的数组
for(j=0;jN;printf("%3d",b[i][j++]));
putchar('\n');
}
return 0;
}