C中如何编写函数将给定二维数组转置
时间: 2023-10-26 09:07:38 浏览: 123
以下是一个将给定二维数组转置的C语言函数:
```c
void transpose(int arr[][3], int rows, int cols) {
int temp;
for (int i = 0; i < rows; i++) {
for (int j = i; j < cols; j++) {
temp = arr[i][j];
arr[i][j] = arr[j][i];
arr[j][i] = temp;
}
}
}
```
此函数的参数为一个二维数组和该数组的行数和列数。函数使用两个嵌套的for循环遍历数组,将每个元素与其对称位置的元素进行交换,从而实现转置。在循环中,只需交换上半部分或下半部分的元素即可,因为对称元素会被重复交换两次。
相关问题
写一个函数名为Transp,使得给定的一个2x2的二维数组转置,即行列互换。 要求: (1)在主函数main中调用子函数Transp实现二维数组转置; (2)输入输出二维数组在主函数main中实现。
以下是一个实现这个功能的示例代码:
```c++
#include <iostream>
using namespace std;
void Transp(int arr[][2]) {
int temp = arr[0][1];
arr[0][1] = arr[1][0];
arr[1][0] = temp;
}
int main() {
int arr[2][2];
cout << "请输入一个2x2的二维数组:" << endl;
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
cin >> arr[i][j];
}
}
Transp(arr);
cout << "转置后的数组为:" << endl;
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
首先在主函数中定义了一个2x2的二维数组`arr`,然后通过两个for循环分别输入二维数组中的每一个元素。接着调用`Transp`函数实现二维数组的转置,最后再通过两个for循环输出转置后的二维数组。`Transp`函数中,通过交换数组中的两个元素实现了行列互换。
编写一个函数,是给定的二维数组转置,在主函数中输出装置二维数组c语音代码
以下是一个简单的函数,用于将给定的二维数组转置:
```c
void transpose(int arr[][N], int transposed[][M]) {
int i, j;
for(i = 0; i < N; i++) {
for(j = 0; j < M; j++) {
transposed[j][i] = arr[i][j];
}
}
}
```
在主函数中,您可以声明原始数组和转置数组,然后使用该函数进行转置:
```c
#include <stdio.h>
#define N 3
#define M 4
void transpose(int arr[][N], int transposed[][M]);
int main() {
int arr[N][M] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}};
int transposed[M][N];
transpose(arr, transposed);
int i, j;
for(i = 0; i < M; i++) {
for(j = 0; j < N; j++) {
printf("%d ", transposed[i][j]);
}
printf("\n");
}
return 0;
}
```
输出结果如下:
```
1 5 9
2 6 10
3 7 11
4 8 12
```
阅读全文