将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
标签:int,res,按列,char,++,二维,数组,字符串 来源: https://blog.csdn.net/yydsxizozhu/article/details/121226035