c语言 数组交换,C语言数组交换最小值与最大值

kodinid 6 0

大家好,今天小编关注到一个比较意思的话题,就是关于c语言 数组交换问题,于是小编就整理了3个相关介绍c语言 数组交换的解答,让我们一起看看吧。

  1. C语言二维数组如何交换两行或者两列?
  2. 如果将一个数组中的两元素的地址交换,它们的值会不会也交换啊?
  3. C语言数组元素逆序排列怎么做?

C语言二维数组如何交换两行或者两列?

方法很多

1、可以直接找到数组对应行的元素进行交换数据,改变原数组内容

c语言 数组交换,C语言数组交换最小值与最大值-第1张图片-安济编程网
(来源网络,侵删)

2、可以定义指针数组指向每行的首地址,交换指针地址,按顺序打印每个指针为首的行数据,得到数据交换效果,原数组内容不变。我这里用第2种方法给你写了一个,你参考吧。#include <stdio.h>int main (){ int nArry[4][4]={{1,2,3,4},{2,3,4,5},{3,4,5,6},{4,5,6,7}}; int *p[4],i,j,*ps***e,index[2];//p[]分别指向每行首地址 printf("打印原数组:"); i=16; p[0]=&nArry[0][0]; while(i-->0) { if((i+1)%4==0) printf("\n"); printf("%d ",*(p[0])); p[0]++; } while(1) { printf("\n\n输入2个你要交换的行号:"); scanf("%d%d",&index[0],&index[1]); for(i=0;i<4;i++) { p[i]=&nArry[i][0]; } ps***e=p[index[0]-1]; p[index[0]-1]=p[index[1]-1]; p[index[1]-1]=ps***e; printf("第%d行和第%d行调换后的数组为:\n",index[0],index[1]); for(i=0;i<4;i++) //按顺序打印 首地址指针开头的行数字 { for(j=0;j<4;j++) { printf("%d ",*(p[i]+j)); } printf("\n"); } } return 0;}

如果将一个数组中的两元素的地址交换,它们的值会不会也交换啊?

数组名即指向一段存储空间的首地址,实际上不存在交换地址这一说。

你所谓交换地址可能只是把两个指向相应元素的指针对调了,那么指针指向的内容也产生了相应的变化,并不是什么交换地址。

C语言数组元素逆序排列怎么做?

逆序排列的本质就是交换。首先获取数组的长度然后将第一个与最后一个交换;第二个与倒数第二个交换;以此类推,直到在中间相遇,完成逆序。

c语言 数组交换,C语言数组交换最小值与最大值-第2张图片-安济编程网
(图片来源网络,侵删)

int main(){ int sz[10]={1,2,3,4,5,6,7,8,9,10}; int i, tmp; for (i=0; i<10/2; i++) { tmp = sz[i]; sz[i] = sz[10-i-1]; sz[10-i-1] = tmp; } for (i=0; i<10; i++) { printf("%d ", sz[i]); } return 0;}

到此,以上就是小编对于c语言 数组交换的问题就介绍到这了,希望介绍关于c语言 数组交换的3点解答对大家有用。

c语言 数组交换,C语言数组交换最小值与最大值-第3张图片-安济编程网
(图片来源网络,侵删)

标签: 数组 交换 地址