|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
从键盘输入整数n(2<n<10)的值,输入一个二维整型数组(n×n)。对该二维数组所构成的矩阵进行主对角线和次对角线元素的位置进行交换,输出变换后的数组。
【样例输入】
4
3 5 6 7
8 5 6 2
4 6 2 1
9 6 8 3
【样例输出】
7 5 6 3
8 6 5 2
4 2 6 1
3 6 8 9
#include <stdio.h>
int main()
{
int n,temp;
scanf("%d",&n);
int i,j,a[n][n];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
temp=a[i][n-i-1];
a[i][n-i-1]=a[i][i];
a[i][i]=temp;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}
这个为什么不对啊
你的代码中只进行了主对角线元素和次对角线元素的交换,而没有进行主对角线和次对角线的交换。所以你需要再添加一次循环,将主对角线和次对角线的元素进行交换。具体代码如下:
#include <stdio.h>
int main()
{
int n, temp;
scanf("%d", &n);
int i, j, a[n][n];
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
scanf("%d", &a[i][j]);
}
}
for (i = 0; i < n; i++)
{
temp = a[i][i];
a[i][i] = a[i][n - i - 1];
a[i][n - i - 1] = temp;
}
for (i = 0; i < n / 2; i++)
{
for (j = 0; j < n; j++)
{
temp = a[i][j];
a[i][j] = a[n - i - 1][n - j - 1];
a[n - i - 1][n - j - 1] = temp;
}
}
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
这个代码中,我们首先对主对角线和次对角线的元素进行了交换,然后再对主对角线和次对角线进行了交换,即将第 i 行和第 n-i-1 行进行交换。
|
|