一个m行n列的整型矩阵A,编写一个函数,使得对A元素进行交换,第一个元素和倒数第一个元素交换,第二个元素和倒数第二个元素交换 ,不另外设置矩阵
吉林大学计算机考研高级语言程序设计
思路:可以用指针的方式来交换元素,无论是几维数组,在地址上其实都是相邻的,可以参考一下这篇文章
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int m;
int n;
scanf("%d%d",&m,&n);
int a[m][n];
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
//p指针指向a[0][0],即是数组第一个元素的位置
int *p=&a[0][0];
//q指针指向最后一个元素位置
int *q=&a[m-1][n-1];
while(p<q)//终止条件是p和q相遇的时候
{
//交换所对应的元素的值
int temp=*p;
*p=*q;
*q=temp;
p++;//继续往后遍历
q--;//继续向前
}
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");//输出一行之后换行
}
return 0;
}