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

[更新]
·
·
分类:互联网
3903 阅读

c语言怎么交换数组里的元素

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

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

数组名即指向一段存储空间的首地址,实际上不存在交换地址这一说。
你所谓交换地址可能只是把两个指向相应元素的指针对调了,那么指针指向的内容也产生了相应的变化,并不是什么交换地址。

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

逆序排列的本质就是交换。首先获取数组的长度,然后将第一个与最后一个交换;第二个与倒数第二个交换;以此类推,直到在中间相遇,完成逆序。
int main(){ int sz[10]{1,2,3,4,5,6,7,8,9,10} int i, tmp for (i0 ilt10/2 i ) { tmp sz[i] sz[i] sz[10-i-1] sz[10-i-1] tmp } for (i0 ilt10 i ) { printf(

C语言中如何将一个数组中的最大值和最小值互换?

找到最大和最小值的下标,然后交换,例如:
#include (){int a[10]{10,2,3,4,5,6,7,8,9,10},n10;int i1,i2,i;i10;for (i0;in;i )if (a[i]a[i1]) i1i;i20;for (i0;in;i )if (a[i]a[i2]) i2i;ia[i1]; a[i1]a[i2];a[i2]i;for (i0;in;i ) printf(%d ,a[i]); return 0;}

二维数组如何实现对角元素交换?

二维数组(N*N),沿主对角线方向,从右上角打印到左下角
输入:3
1 2 3
4 5 6
7 8 9
输出:3
2 6
1 5 9
4 8
7
解:
public class Main {public static void main(String[] args) {
Scanner in new Scanner();
int n ();
int[][] a new int[n][n];
for (int i 0; i n; i )
for (int j 0; j n; j )
a[i][j] ();
int x 0;//初始横坐标
int y n - 1;//初始纵坐标
while (x ! n) {
//每次循环内可以打印某条主对角线上的数
for (int i x, j y; i n - 1 j n - 1; i , j )
(a[i][j] );
();
if (y 0)
y--;//先往左走
else
x ;//往左走不动了再往下走
}}
}
二维数组(N*N),沿副对角线方向,从左上角打印到右下角
输入:3
1 2 3
4 5 6
7 8 9
输出:1
2 4
3 5 7
6 8
9
解:(解法和上面那个差不多)
public class Main {public static void main(String[] args) {
Scanner in new Scanner();
int n ();
int[][] a new int[n][n];
for (int i 0; i n; i )
for (int j 0; j n; j )
a[i][j] ();
int x 0;// 初始横坐标
int y 0;// 初始纵坐标
while (x n) {
// 每次循环内可以打印某条副对角线上的数
for (int i x, j y; i n - 1 j 0; i , j--)
(a[i][j] ( i , j ) );
();
if (y n - 1)
y ;// 先往右走
else
x ;// 往右走不动了再往下走
}}
}