一个m行n列的整型矩阵A,编写一个函数,使得对A元素进行交换,第一个元素和倒数第一个元素交换,第二个元素和倒数第二个元素交换 ,不另外设置矩阵

一个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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值