c语言中二维数组如何交换行?

如题所述

C语言中交换二维数组的行,可以通过多种方式实现。其中一种方法是直接交换数组中对应行的元素。另一种方法是利用指针数组来指向每行的首地址,通过交换指针地址来实现行的交换,而不会改变原数组的内容。这种方法更直观,也更容易理解。

这里给出一种使用第二种方法的实现示例:

c
#include
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, *psave, 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];
psave = p[index[0] - 1];
p[index[0] - 1] = p[index[1] - 1];
p[index[1] - 1] = psave;
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;
}

这段代码首先定义了一个4x4的二维数组,并初始化了数组的值。接着,通过指针数组p来指向每行的首地址。程序会先打印原始数组的内容,然后不断循环等待用户输入要交换的行号,最后输出交换后的数组内容。

这种方式不仅展示了如何使用指针来交换数组行,也提供了用户交互的功能,使得程序更加灵活。通过这种方式,我们可以轻松地实现二维数组行的交换。

需要注意的是,这里的代码示例是一个完整的C语言程序,可以直接在支持C语言的编译环境下运行。
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜