将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中

1 题目

编写:fun()

功能:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中

例如:

二维数组中的数据为:

W W W W

S S S S

H H H H

则字符串中的内容是:WSHWSHWSH

2 思路

第一层循环按照列数进行,第二层循环按照行数

然后依次提出每一列的字符

3 代码

为了熟悉二维数组的指针表示,部分代码给出了数组表示和指针表示

#include<stdio.h> 
#include<string.h>
#define M 3 
#define N 4 
/**
编写:fun()
功能:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中

例如:
二维数组中的数据为:
W W W W
S S S S
H H H H
则字符串中的内容是:WSHWSHWSH
**/

//   0 1 2 3
// 0 W W W W
// 1 S S S S
// 2 H H H H


char *fun(char s[M][N], char *res) {
	int t = 0;
	for (int i = 0; i < N; ++i) {
		for (int j = 0; j < M; ++j) {
			res[t++] = s[j][i];
      // res[t++] = *(*(a*i)+i);   // 指针表示
		}
	}
	res[t] = '\0';
	return res;
}


int main(int argc, char const *argv[]) {
	char a[M][N] = {'M', 'M', 'M', 'M', 'S', 'S', 'S', 'S', 'H', 'H', 'H', 'H'};
	int size_res = M*N;
	char res[size_res];
	printf("二维数组中元素:\n");
	for (int i = 0; i < M; ++i) {
		for (int j = 0; j < N; ++j) {
			printf("%c\t", a[i][j]);
      // printf("%c\t", *(*(a*i)+j));   // 指针表示
		}
		printf("\n");
	}
	
	printf("按列的顺序依次:\n%s\n", fun(a, res));
}

示例结果:

$ gcc ex002.c -o demo
$ ./demo
二维数组中元素:
M	M	M	M
S	S	S	S
H	H	H	H
按列的顺序依次:
MSHMSHMSHMSH
### 回答1: 可以使用两层循环,先遍历,再遍历,将每个字符依次添加到字符串中即可。具体代码如下: ``` char[][] arr = new char[m][n]; String result = ""; for (int j = 0; j < n; j++) { for (int i = 0; i < m; i++) { result += arr[i][j]; } } ``` ### 回答2: 题目要求将mn二维数组中的字符数据顺序依次放到一个字符串中,需要遍历整个二维数组,将每个元素按照顺序依次添加到字符串中。 首先要声明一个字符串,用于存储最终生成的字符串。然后使用两层循环,外层循环控制数,内层循环控制数。对于每个元素,将其添加到字符串中即可。 具体步骤如下: 1. 声明一个字符串: ``` String result = ""; ``` 2. 使用两层循环遍历二维数组,将每个元素按顺序依次添加到字符串中: ``` for (int j = 0; j < n; j++) { // j代表数 for (int i = 0; i < m; i++) { // i代表数 result += array[i][j]; } } ``` 3. 遍历完成后,返回结果字符串: ``` return result; ``` 完整代码如下: ``` public static String convertArrayToString(char[][] array) { int m = array.length; // 数 int n = array[0].length; // 数 String result = ""; for (int j = 0; j < n; j++) { // j代表数 for (int i = 0; i < m; i++) { // i代表数 result += array[i][j]; } } return result; } ``` 需要注意的是,在实际编写代码的过程中,要考虑二维数组为空或数不符合条件等异常情况,需要进的处理。 ### 回答3: 对于mn二维数组,我们可以使用两个循环分别遍历每一和每一,然后将每个字符依次添加到一个字符串中,以实现按顺序将所有字符依次放到一个字符串中。 首先,我们可以定义一个字符串来存储每个字符,最终按顺序拼接后的结果。然后我们可以使用两个for循环分别遍历每一和每一,用str += arr[j][i]来将每个字符添加到新字符串的末尾。其中,j代表数,i代表数,arr[j][i]代表在第j第i字符。 最后,我们可以将拼接后的字符串返回即可。 以下是完整的Python代码实现: ```python def merge_columns(arr): m = len(arr) # 数 n = len(arr[0]) # 数 str = '' # 新字符串 # 遍历每一和每一,将每个字符依次添加到新字符串中 for i in range(n): for j in range(m): str += arr[j][i] return str # 返回拼接后的字符串 ``` 例如,如果给定以下二维字符数组: ```python arr = [ ['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'] ] ``` 则调用merge_columns(arr)将返回"adgbehcfi"。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值