![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/*
0 12 9 0 0 0 0
0 0 0 0 0 0 0
-3 0 0 0 0 14 0
0 0 24 0 0 0 0
0 18 0 0 0 0 0
15 0 0 -7 0 0 0
*/
#include <stdio.h>
#include <stdlib.h>
#define ROW 6
#define COL 7
#define V 8
typedef struct
{
int i, j;
int v;
}Node;
int main()
{
int i, j, k, p, matrix[ROW][COL];
Node ma[V+1]; Node mb[V+1];
ma[0].i = ROW;
ma[0].j = COL;
ma[0].v = V;
k = 1;
for ( i = 0; i < ROW; i++ )
{
for ( j = 0; j < COL; j++ )
{
scanf( "%d", &matrix[i][j] );
if ( matrix[i][j] )
{
ma[k].i = i + 1;
ma[k].j = j + 1;
ma[k].v = matrix[i][j];
k++;
}
}
}
//转置前
printf( "转置前:\n" );
for ( i = 0; i <= V; i++ )
{
printf( "%2d %2d %2d", ma[i].i, ma[i].j, ma[i].v );
putchar( '\n' );
}
putchar( '\n' );
putchar( '\n' );
mb[0].i = ma[0].j;
mb[0].j = ma[0].i;
mb[0].v = ma[0].v;
k = 1;
p = mb[0].v;
for ( i = 1; i <= COL; i++ )
{
for ( j = 1; j <= p; j++ )
{
if ( ma[j].j == i )
{
mb[k].i = ma[j].j;
mb[k].j = ma[j].i;
mb[k].v = ma[j].v;
k++;
}
}
}
//转置后
printf( "转置后:\n" );
for ( i = 0; i <= V; i++ )
{
printf( "%2d %2d %2d", mb[i].i, mb[i].j, mb[i].v );
putchar( '\n' );
}
system( "pause" );
return 0;
}