#include <stdio.h>
#include <math.h>
#define MAX 10
int main()
{
int num, change;
int m, n, score = 0;
int a[MAX][MAX] = { 0 };
int b[MAX][MAX] = { 0 };
int c[MAX] = { 0 };
int lienum = 0;
printf( "输入要输入的数据组数:\n" );
scanf( "%d", &num );
for ( num; num > 0; num-- )
{
change = 0;
printf( "输入行数&列数:\n" );
scanf( "%d %d", &m, &n );
for ( int i = 1; i <= m; i++ )
for ( int j = 1; j <= n; j++ )
{
scanf( "%d", &a[i][j] );
}
printf( "输入目标矩阵:\n" );
for ( int i = 1; i <= m; i++ )
for ( int j = 1; j <= n; j++ )
{
scanf( "%d", &b[i][j] );
}
for ( int i = 1; i <= m; i++ )
for ( int j = 1; j <= n; j++ )
{
if ( a[i][j] == b[i][j] )
{
score++;
}else {
c[lienum] = j; /* 记住不相同列 */
lienum++;
if ( lienum == n ) /*同一行所有列不同进行翻转 */
{
for ( int q = 1; q <= n; q++ )
{
b[i][q] = abs( b[i][q] - 1 );
}
change++;
printf( "所在行:%d 反转结果:%d\n", i, b[i][1] );
printf( "同一行所有列不同进行翻转一次%d\n", change );
}
if ( lienum == 2 ) /*有两列不同交换两列 */
{
int swap = b[i][c[0]];
b[i][c[0]] = b[i][c[1]];
b[i][c[1]] = swap;
change++;
printf( "同一行偶数列不同进行翻转一次%d\n", change );
printf( "交换了i:%d a:%db:%d\n", i, b[i][c[0]], b[i][c[1]] );
}
}
}
if ( change == 0 )
printf( "无法完成交换 -1" );
else
printf( "交换了:%d次\n", change );
}
return(0);
}
格式使用的在线代码美化器 http://web.chacuo.net/formatc