
c语言中 将数组列换行 行换列
5个回答
展开全部
1、如果是二维数组,将就可按行输出就行:
for(i=0;i<3;i++) //按每一行输出,每循环一次输出一行
{ for(j=0;j<3;j++) //输出每一行中的每一列
printf("%3d",a[i][j]);
printf("\n"); //每输出一行,输出一个换行符
}
2、如果是一维数组,可按每行输出的数的个数来控制:
for(i=0;i<9;i++)
{ printf("%3d",a[i]); //a为一维数组
if((i+1)%3==0) printf("\n"); //每行输出三个数,因为数组的下标i从0开始,所以先加个1再除3取余数
}
for(i=0;i<3;i++) //按每一行输出,每循环一次输出一行
{ for(j=0;j<3;j++) //输出每一行中的每一列
printf("%3d",a[i][j]);
printf("\n"); //每输出一行,输出一个换行符
}
2、如果是一维数组,可按每行输出的数的个数来控制:
for(i=0;i<9;i++)
{ printf("%3d",a[i]); //a为一维数组
if((i+1)%3==0) printf("\n"); //每行输出三个数,因为数组的下标i从0开始,所以先加个1再除3取余数
}
展开全部
for(i=1;i<n;i++)
for(j=0;j<n;j++)
{
if(j<i)
{
k=a[i][j];a[i][j]=a[j][i];a[j][i]=k;
}
if(j>=i) break;
}
n为数组的行数和列数,此代码只能判断行列数一样(可以理解为矩形数组吧),如果不一样会产生未知错误,C语言是不会检查数组边界的哦!如果用楼上的方法自己画一画就会知道转来转去的,n为奇数或偶数时只有一个是正确的输出结果!
for(j=0;j<n;j++)
{
if(j<i)
{
k=a[i][j];a[i][j]=a[j][i];a[j][i]=k;
}
if(j>=i) break;
}
n为数组的行数和列数,此代码只能判断行列数一样(可以理解为矩形数组吧),如果不一样会产生未知错误,C语言是不会检查数组边界的哦!如果用楼上的方法自己画一画就会知道转来转去的,n为奇数或偶数时只有一个是正确的输出结果!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是我遇到这种问题,我不对原数组做任何操作,
而是用一个函数来实现转置后的操作,
假设原数组为a[m][n];
converse函数返回a[row][col]对应转置位置的元素a[col][row]。
int converse(int pArray[][n],unsigned int row, unsigned int col)
{
if (row>m-1||col>n-1)
{
printf ("下标错误!\n");
return 0;
}
int a=*(*(pArray+col)+row);
return a;
}
而是用一个函数来实现转置后的操作,
假设原数组为a[m][n];
converse函数返回a[row][col]对应转置位置的元素a[col][row]。
int converse(int pArray[][n],unsigned int row, unsigned int col)
{
if (row>m-1||col>n-1)
{
printf ("下标错误!\n");
return 0;
}
int a=*(*(pArray+col)+row);
return a;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if(i!=j)
{
k=a[i][j];a[i][j]=a[j][i];a[j][i]=k;
}
自己加循环
{
k=a[i][j];a[i][j]=a[j][i];a[j][i]=k;
}
自己加循环
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
嘻嘻
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询