C语言,从键盘输入整数n(2<n<10)的值,输入一个二维整型数组(n×n)。对该二维数组所构成的矩阵进行主对角线和次对角线元素的位置进行交换,输出变换后的数组。
时间: 2024-05-04 17:15:36 浏览: 97
c语言+从键盘输入10个无序的整数,存放在数组中,找出数组中最大值与最小值的所在的位置,并输出数组元素所在的位置与数组元素的值
5星 · 资源好评率100%
好的,这是一道关于 C 语言数组操作的问题。我们可以使用循环结构和临时变量来实现对角线元素位置的交换。
以下是代码实现:
```c
#include <stdio.h>
int main() {
int n, i, j, temp;
printf("请输入 n 值:\n");
scanf("%d", &n);
int a[n][n];
printf("请依次输入二维数组各元素值:\n");
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
scanf("%d", &a[i][j]);
}
}
printf("变换前的数组为:\n");
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
// 主对角线元素位置交换
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; i++) {
for(j=0; j<n; j++) {
if(i+j == n-1 && i != j) {
temp = a[i][j];
a[i][j] = a[j][i];
a[j][i] = temp;
}
}
}
printf("变换后的数组为:\n");
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
```
希望对你有帮助。如果你有其他问题,尽管问吧。
阅读全文