请教我如何创建一个C程序,以找到一个由二维(2D)数组表示的5阶矩阵的转置。使用元素初始化2D数组,如下所示,使用初始化程序列表在原始矩阵中显示。显示原始矩阵和转置。程序中必须只有一个二维数组。
示例:
原始矩阵
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25矩阵的转置:
1 6 11 16 21
2 7 12 17 22
3 8 13 18 23
4 9 14 19 24
5 10 15 20 25发布于 2014-12-04 07:50:50
由于程序中必须只有一个数组,一种有效的方法是在适当的情况下转换矩阵,这可以通过以下嵌套循环来完成。
for( int i = 0; i < n; i++)
{
for ( j = i+1; j < n; j++ ) // only the upper is iterated
{
swap(&(a[i][j]), &(a[j][i]));
}
}下面的子例程将执行交换,其中使用指向int的指针。在上面的调用代码中,这些都是通过使用要交换的元素的地址来获得的。
void swap(int* arg1, int* arg2)
{
int buffer = *arg1;
*arg1 = *arg2;
*arg2 = buffer;
}发布于 2017-01-10 14:45:30
可按以下方式计算给定矩阵的转置:
#include<stdio.h>
void main()
{
int c,r,i,j;
printf("Enter number of rows and columns : ");
scanf("%d %d",&r,&c);
int arr[r][c];
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
printf("\nEnter element : ");
scanf("%d",&arr[i][j]);
}
}
printf("\nOriginal array is : \n");
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
printf("%d\t",arr[i][j]);
}
printf("\n");
}
printf("\nTranspose array is : \n");
for(i=0;i<c;i++)
{
for(j=0;j<r;j++)
{
printf("%d\t",arr[j][i]);
}
printf("\n");
}
}发布于 2014-12-04 14:04:14
int array[5][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
//transpose
cout<<"TRANSPOSE"<<endl;
for(int i=0;i<=4;i++){
for(int j=0;j<=4;j++) {
if(array[i]>array[j]){
int temp;
temp=array[i][j];
array[i][j]=array[j][i];
array[j][i]=temp;
}
}
}https://stackoverflow.com/questions/27288694
复制相似问题