使用C语言和指针利用行指针传参实现二维数组的每一行按从小到大排序排序,(排序算法采用选择法排序)
时间: 2023-11-02 07:12:20 浏览: 194
C语言程序设计-编写函数用选择排序法对数组中的数据进行从小到大的排序;
5星 · 资源好评率100%
下面是使用行指针传参实现二维数组每一行按从小到大排序的C语言代码:
```c
#include <stdio.h>
void sort_row(int *p, int n) {
int i, j, temp;
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
if (*(p + j) < *(p + i)) {
temp = *(p + i);
*(p + i) = *(p + j);
*(p + j) = temp;
}
}
}
}
int main() {
int a[3][4] = {{9, 8, 7, 6}, {5, 4, 3, 2}, {1, 0, -1, -2}};
int i, j;
for (i = 0; i < 3; i++) {
sort_row(*(a + i), 4); // 传入第i行的地址和列数
}
printf("排序后的二维数组:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
```
首先定义一个 `void` 类型的函数 `sort_row`,它接收一个指向一维数组的指针 `p` 和数组的列数 `n`。该函数使用选择法排序算法对一维数组进行排序。
然后在 `main` 函数中定义一个 `int` 类型的二维数组 `a`,并使用两个嵌套循环分别处理每一行的排序,调用 `sort_row` 函数并传入每一行的地址以及列数。
最后输出排序后的二维数组。
注意:在使用行指针传参时,需要使用 `(a + i)` 或 `&a[i]` 来获取第 i 行的地址。在函数中使用 `(p + i)` 来访问第 i 个元素。
阅读全文