在3*3的二维数组中,使最大值和最小值和其关于主对角线对称的数互换位置。看一下以下程序有什么问题,已知最大或最小值在左上角是程序不起作用。
#include <stdio.h>
int main() {
int a[3][3], i, j, e, b, c, d, t, max, min;
for (i = 0; i <= 2; i++) {
for (j = 0; j <= 2; j++) {
scanf("%d", &a[i][j]);
}
}
max = a[0][0];
min = a[0][0];
for (i = 0; i <= 2; i++) {
for (j = 0; j <= 2; j++) {
if (max < a[i][j])
e = i, b = j, max = a[i][j];
if (min > a[i][j])
c = i, d = j, min = a[i][j];
}
}
if (w != s) {
a[e][b] = t, a[e][b] = a[b][e], a[b][e] = t;
}
if (c != d && (b != c || e != d)) {
a[c][d] = t, a[c][d] = a[d][c], a[d][c] = t;
}
for (i = 0; i <= 2; i++) {
for (j = 0; j <= 2; j++) {
if (j != 2)
{printf("%d ", a[i][j]);}
else
{printf("%d\n", a[i][j]);}
}
}
return 0;
}
如果最大值或最小值就在主对角线上,应该不需要交换吧,或者说交换和不交换是一样的
if (w != s) {
这w和s从哪里冒出来的啊?
if (w != s)
你w和s变量没有定义啊