重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
可以啊,给你写了个完整的程序,为了比较好理解,就把循环分开写了,实现就是这个意思,如果你想扩展的话可以用宏定义来实现。
成都创新互联电话联系:18982081108,为您提供成都网站建设网页设计及定制高端网站建设服务,成都创新互联网页制作领域十余年,包括玻璃钢雕塑等多个行业拥有多年的网站设计经验,选择成都创新互联,为企业锦上添花!
首先,你的程序逻辑有问题,在交换的时候,所有以对角线为中心的对称元素交换了两次,相当于没有交换;所以如果换成a[i][j]输出的话,结果与没有交换前的一样。
你的变量n是个整数吧,a是个二维数组,那么a[i]就是个一维数组。你把数组赋给整数当然无法通过啦。你把交换a[i]和a[j]的部分换成循环,a[i][x]与a[j][x]这样一个一个变量交换。
个人拙见:p= a 要改成 p = &a[0];指标是指向记忆体位址,字串也是指向一串字元的指标,资料交换得靠复制。
scanf那行里的a[i][j]要写成&a[i][j],输入就正常的输入就行了,其实scanf读入数字的时候,数字可以用空格、回车或者TAB间隔,比如说一个2x2的数组,你输入 10 11 12 13 或者输入10 11 12 13都是可以的。
比如我们定义一个二维数组为A(i,j)那么在以后的编程中转换为A(j,i)就可以了。其实可以这么转换。比如我们要让两个数组即交换前和交换后的分开显示。那么可以这样写。
1、使用memcpy直接将数组中的数据进行交换。
2、你原代码函数那样写是实现不了数组交换的,我用你的代码小做修改。你看下吧。说明:^=只是利用异或来实现2个地址的数值交换,和你定义一个变量做交换是一个效果。
3、定义一个structcjtemp;然后就直接交换啊。我把那块做成函数,楼主直接调用吧,主函数就没写完整了。
4、将两个数进行互换的方法有两种形式:借助中间变量完成,此方法直观,易理解,使用最多 不需要中间变量,通过变量身的运算完成交换。
5、你这个只是试图交换两个数组的首地址,而数组的首地址是常量,不会交换成功的。你的swap中要用循环一次交换两个数组的对应元素才能实现你想要的功能。
你原代码函数那样写是实现不了数组交换的,我用你的代码小做修改。你看下吧。说明:^=只是利用异或来实现2个地址的数值交换,和你定义一个变量做交换是一个效果。
逐个元素交换即可。前提是两个数组必须有同样的长度 否则无法交换。
你这个只是试图交换两个数组的首地址,而数组的首地址是常量,不会交换成功的。你的swap中要用循环一次交换两个数组的对应元素才能实现你想要的功能。
楼主,数组是不能增加长度的,两个不同大小的数组,小的可以传给大的,大的怎么也放不下小的啊。