【基础算法】 将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

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/2427/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部