[学习笔记]达内纪录片day05 思考题回型数组

    选择打赏方式

今天讲了数组和一点点函数,最有意思的就是这个回型数组了。

要求输出形式如下:

TIM截图20190704215114.png

代码如下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int arr[5][5] = { 0 };	//给定代码 不允许改变
	//重点是把数组理解为一个矩形,虽然它们在内存中实际上是连续的。
	//实质上依然是2个for循环,给每一个元素分别赋值,只不过加了个行列判断条件

	//赋值语句 row行 col列
	for(int row=0;row<=4;row++)
		for (int col=0; col <= 4; col++)
		{
			if (row == 0 && col < 4)
				arr[row][col] = 1;
			else if (row < 4 && col == 4)
				arr[row][col] = 2;
			else if (row ==4  && col >=1)
				arr[row][col] = 3;
			else if(row>=1 && col==0)
				arr[row][col] = 4;
		}


	//输出语句
	for (int row=0; row <= 4; row++) 
	{
		for (int col=0; col <= 4; col++)
			printf("%d", arr[row][col]);
		printf("\n");

	}

	system("pause");
	return 0;
}


输出结果:

TIM截图20190704222308.png


思考题:

TIM截图20190704222824.png

分析:这道题的本质依然是数字回型,在拿到这道题的一刻,我马上意识到,这道题的实质是把97-122以回型放入数组。

由此想到,应该有通用解法,在给定行列以及起始数字和结束数字后生成任意回型数组。

但是,我并没有第一时间想到这道题的解法,数学差,没办法。。。

参考网上的代码后,写出来答案

源码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
	char arr[5][5] = {0};
	int m = 5, n = 5;	//矩阵行列最大值	5*5=25 z不会被显示,没有它的位置
	int c = 0;	//字母序号
	int row = 0, col = 0;	//当前行列
	int start = 0, end = 1;  //start,end控制循环开始和结束的位置

	//注意:这次并没有在for循环内初始化当前行列,因为当前行列会被用于下一个for循环
	//while循环的执行过程,每一次开始一个while,相当于吃鸡缩圈
	while (c != n * n)
	{
		for (col = start; col < m; col++)
		{
			arr[row][col] = 97 + c;
			c++; 
		}   //注意一个循环结束后,i,j的值,

		for (row = end; row < m; row++)
		{
			arr[row][col - 1] = 97 + c;
			c++;
		}

		for (col = m - 2; col >= start; col--)
		{
			arr[row - 1][col] = 97 + c;
			c++;
		}

		for (row = m - 2; row >= end; row--)
		{
			arr[row][col + 1] = 97 + c;
			c++;
		}

		start++; 
		end++; 
		row = start; 
		col = start; 
		m--;
		 
	}

	//输出语句
	printf("\n回型数组:\n\n");
	int i = 0;
	for (int row = 0; row < n; row++)
		for (int col = 0; col < n; col++)
		{
			printf("%c\t", arr[row][col]);
			i++;
			if (i%n == 0) 
				printf("\n\n");
		}
	system("pause");
	return 0;
}

结果:

TIM截图20190704234551.png


版权声明:若无特殊注明,本文皆为《 8964CN 》原创,转载请保留文章出处。
本文链接:[学习笔记]达内纪录片day05 思考题回型数组 http://www.8964cn.net/?post=66
正文到此结束

热门推荐

发表吐槽

你肿么看?

你还可以输入 250 / 250 个字

嘻嘻 大笑 可怜 吃惊 害羞 调皮 鄙视 示爱 大哭 开心 偷笑 嘘 奸笑 委屈 抱抱 愤怒 思考 日了狗 胜利 不高兴 阴险 乖 酷 滑稽

评论信息框

吃奶的力气提交吐槽中...


既然没有吐槽,那就赶紧抢沙发吧!