前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言经典100例002-将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中

C语言经典100例002-将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中

原创
作者头像
Python编程爱好者
修改2020-11-06 14:27:46
5.9K0
修改2020-11-06 14:27:46
举报

系列文章《C语言经典100例》持续创作中,欢迎大家的关注和支持。

喜欢的同学记得点赞、转发、收藏哦~

后续C语言经典100例将会以pdf和代码的形式发放到公众号

欢迎关注:计算广告生态 即时查收

1 题目

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

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

image.png
image.png

2 思路

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

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

3 代码

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

代码语言:txt
复制
#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));
}

示例结果:

代码语言:txt
复制
$ gcc ex002.c -o demo
$ ./demo
二维数组中元素:
M	M	M	M
S	S	S	S
H	H	H	H
按列的顺序依次:
MSHMSHMSHMSH

-- END --

喜欢本文的同学记得点赞、转发、收藏~

更多内容,欢迎大家关注我们的公众号:计算广告生态

后续C语言经典100例将会以pdf和代码的形式发放到公众号

同时也带来更多系列文章以及干货!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 题目
  • 2 思路
  • 3 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档