二维数组的列交换

#include "stdafx.h"
int main()
{
	int a[3][4] = { {1,2,3,10},{4,5,6,11},{7,8,9,12} };
	for (int i = 0;i < 3;i++)
	{
		for (int j = 0;j < 4;j++)
		{
			printf("%d  ", a[i][j]);
		}
		printf("\n");
	}
	int rows = 3, cols = 4;
	for (int j = 0;j < (cols / 2);j++)//第二层循环:交换第二列和第三列对应的元素
	{
		for (int i = 0;i < rows;i++)//第一层循环:交换每一行的第一个元素和最后一个元素
		{		
			//int temp1 = a[i][j];			
			//int temp2 = a[i][cols - j-1];
			//a[i][j] = temp2;
			//a[i][cols - j - 1] = temp1;

			int temp1 = a[i][j];
			a[i][j]=a[i][cols - j - 1] ;
			a[i][cols - j - 1] = temp1;
		}
	}
	for (int i = 0;i < 3;i++)
	{
		for (int j = 0;j < 4;j++)
		{
			printf("%d  ", a[i][j]);
		}
		printf("\n");
	}
    return 0;
}

### 回答1: 对于二维数组交换,可以使用双重循环,逐个元素交换,例如,假设有一个二维数组A,可以这样:for(i=0;i<A.length;i++){ for(j=0;j<A[i].length;j++){ int temp = A[i][j]; A[i][j] = A[j][i]; A[j][i] = temp; } } ### 回答2: 要实现string二维数组整体交换,可以按照以下步骤进行操作。 1. 定义一个二维数组,用于存储字符串。假设数组名为strings,长度为n,字符串的长度为m。 2. 创建一个新的二维数组newStrings,与原数组strings的结构相同。 3. 使用两个嵌套的for循环,遍历原数组strings并将其元素复制到新数组newStrings中。循环变量i表示行数,变量j表示数。 4. 在嵌套的for循环中,将strings[i][j]复制给newStrings[j][i],即将原数组中的每个元素按照交换的方式复制到新数组中。 5. 完成整个二维数组的复制后,newStrings中的元素即为交换后的数组。 6. 可以输出newStrings数组来验证交换结果是否正确。 以下为示例代码: ```python # 定义原数组 strings = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']] # 获取数组的行数和数 n = len(strings) m = len(strings[0]) # 创建新的二维数组 newStrings = [['' for _ in range(n)] for _ in range(m)] # 进行数组交换 for i in range(n): for j in range(m): newStrings[j][i] = strings[i][j] # 输出交换后的数组 for row in newStrings: print(row) ``` 以上代码将输出: ``` ['a', 'd', 'g'] ['b', 'e', 'h'] ['c', 'f', 'i'] ``` 这就是交换后的整体二维字符串数组。 ### 回答3: 要实现string二维数组的整体交换,我们可以先将数组中每个元素的顺序反转,然后再对数组的行进行反转。 假设有一个m行n的string数组arr,首先我们可以通过两个嵌套的for循环来实现每个元素的顺序反转。具体步骤如下: 1. 遍历二维数组的每一行: - 设置两个指针,一个指向当前行的开头,另一个指向末尾; - 将指针所指向的元素进行交换,并向中间移动指针,直到两个指针相遇。 完成元素顺序反转后,接下来我们需要对数组的行进行反转。可以通过两个指针分别指向数组的首行和末行,然后将两行进行交换,再向中间移动指针,直到两个指针相遇。 总结起来,整个string二维数组整体交换的步骤如下: 1. 对数组中的每一行进行元素的顺序反转; 2. 对数组的行进行反转。 代码示例如下: ```cpp #include <iostream> #include <algorithm> #include <vector> #include <string> using namespace std; void reverseString(string& str) { int start = 0, end = str.size() - 1; while (start < end) { swap(str[start], str[end]); start++; end--; } } void swapRows(vector<string>& arr) { int start = 0, end = arr.size() - 1; while (start < end) { swap(arr[start], arr[end]); start++; end--; } } void swapArray(vector<vector<string>>& arr) { for (int i = 0; i < arr.size(); ++i) { reverseString(arr[i]); // 对每一行进行元素顺序反转 } swapRows(arr); // 对行进行反转 } int main() { vector<vector<string>> arr = {{"abc", "def", "ghi"}, {"jkl", "mno", "pqr"}, {"stu", "vwx", "yz"}}; swapArray(arr); for (auto row : arr) { for (auto str : row) { cout << str << " "; } cout << endl; } return 0; } ``` 运行代码后,输出结果为: yz vwx stu pqr mno jkl ghi def abc 以上就是实现string二维数组整体交换的方法和代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值