争问亭下打一个兰亭数字 vr

学习笔记——.Net(31)
有这样一道题,即按照如下图形的规律打印出这个图形:
这个图形外面一圈“*”号很容易打印,它的核心是怎样打印里面的数字。
上面的数列可以把它看成一个二维数组,然后我们可以按照数组下标的变化分别给数组赋值。这时主要难点就是如何来确定下标的变化值。
我们可以先把它拆分成几种情况,来观察它们变化的规律。假设n为行列数,i为1到n之间的数。
当i=1时,数列为:
当i=2时,数列为:
当i=3时,数列为:
当i=4时,数列为:
当i=5时,数列为:
这们我们不难发现,元素第一次坐标的变化都是从上一次变化的最后的位置(如4,9,16,...)开始的,它的变化分为两种情况:(i=1不在此变化之列,应自行赋值)
当i为偶数时,数组坐标的变化是先下再左的方向变化,即先是x轴坐标不变,y轴坐标自增1,然后在转折点,y轴坐标不变,x轴坐标自减1。
当i为奇数时,数组坐标的变化是先上再右的方向变化,即先是x轴坐标不变,y轴坐标自减1,然后在转折点,y轴坐标不变,x轴坐标自增1。
另外,我们还可以发现,
当i=2时,纵向的值变化2次,横向的值变化1次
当i=3时,纵向的值变化3次,横向的值变化2次
当i=4时,纵向的值变化4次,横向的值变化3次
...............
这样,规律就出来了,我们可以确定每次i值变化时,循环给数组赋值的条件。具体参考代码如下:static void Main(string[] args)
Console.WriteLine(&请输入n的值:&);
int n = Convert.ToInt32(Console.ReadLine());
//n代表要打印n行n列
int[,] Nums = new int[n, n];
//声明一个二维数组用来存储这些数字
m = (n - 1) / 2;
//m为变化起始坐标
int x = int y =
//数组下标,也是下面循环中数组随着i值变化的起点
int value = 1;
//value为从1开始的整数,最大值为n?
Nums[x, y] = value++;
//给数组中起始位置的元素赋值,赋值后让value自增1
for (int i = 2; i &= i++)
//在循环里面给数组其它位置赋值
if (i % 2 == 0)
//当i变为偶数时,数字是按先下再左的方向变化排列
//当变化开始时,是要给该数右边的第一个元素赋值,所以先让x=x+1
for (int j = 0; j & j++)
//然后x坐标不变,y轴的坐标依次变化自增
//y轴变化的次数等于当前i的值
Nums[x, y++] = value++;
//当y轴变化完之后,y会自增1,(x,y)表示的元素实际在转折点下面的第一个位置,所以让y自减1,回到转折点的位置
for (int k = 0; k & i - 1; k++)
//向左边赋值,y轴不变,x轴坐标依次变化自减
//x轴变化的次数为当前i-1的值
Nums[--x, y] = value++;
//当i变为奇数时,数字是按先上再右的方向变化排列
//此时要给左边的第一个元素赋值,因此让x=x-1
for (int j = 0; j & j++)
//然后x坐标不变,y轴的坐标依次变化自减
Nums[x, y--] = value++;
//当y轴变化完之后,y会自减1,(x,y)表示的元素实际在转折点上面的第一个位置,所以让y自增1,回到转折点的位置
for (int k = 0; k & i - 1; k++)
//向右边赋值,y轴不变,x轴坐标依次变化自增
Nums[++x, y] = value++;
//输出数组的值
for (int i = 0; i & i++)
for (int j = 0; j & j++)
Console.Write(Nums[j, i] + &\t&);
Console.WriteLine();
Console.ReadKey();
}示例结果如下:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:32941次
排名:千里之外
原创:39篇
转载:11篇
(3)(3)(9)(12)(14)(9)扫一扫,访问微社区
只需一步,快速开始
后使用快捷导航没有帐号?
查看: 12319|回复: 18
【求助】我想做一个从1到9999的数字滚动求指点啊
锐币 元推广 分
在线时间 小时
我在做一个关于川藏线骑行的ppt,从转山里看到海拔数字变化启发想在ppt中加入数字滚动,求指点
另外强烈建议楼主换头像!&
如果帮到您,建议你更换一下您的头像,乔装一下总是可以的吧?低调……&
锐币 元推广 分
在线时间 小时
等待专家。
锐币 元推广 分
在线时间 小时
本帖最后由 ppdong 于
18:35 编辑
做了个仿安卓系统的数字滚动效果,1-99的,掌握规律,很快就能做出1-9999的效果。规律就是简单的复制1-9,插入到原来1-9之间,改变上一位前一个数字的出现方式为“从上一项开始”,以此类推……9999……呵呵!希望帮到你,我做1-99用了2分钟吧!看你的了~呵呵
今天又有了个新方法实现你要的效果,借鉴了
给我的灵感!感谢锐普!
00:12 上传
点击文件名下载附件
52.65 KB, 下载次数: 640
18:33 上传
点击文件名下载附件
36.69 KB, 下载次数: 440
很多帖子就这样沉了……&
锐币 元推广 分
在线时间 小时
建议你搜一下,论坛里有相关的帖子……
锐币 元推广 分
在线时间 小时
没必要真的从1到9999吧?搞几张高斯模糊的数字图片晃一晃,最终出来个数字不行么?
锐币 元推广 分
在线时间 小时
工作量不少啊。
有个规律,做起来应该不是太难,就是每秒一个数,数到9999……那个时间耗不起……&
锐币 元推广 分
在线时间 小时
我也来学习一下&&
锐币 元推广 分
在线时间 小时
路过围观,等待高手。
锐币 元推广 分
在线时间 小时
路过!学习一下!
锐币 元推广 分
在线时间 小时
一个一个做起来工作量有些大,5楼的建议可以采取,最后建议楼主换一个头像~
Powered by
电话咨询
<span class="icoTl" title="客服电话&#8802请教一个与数字电路有关比较简单的问题,希望大神可以给个详细的答案 - FPGA|CPLD|ASIC论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
请教一个与数字电路有关比较简单的问题,希望大神可以给个详细的答案
23:28:17  
写了个一位全减器,发现不管怎么写,时序电路仿真中的输出都出现延迟的现象,发现延迟在其他的点路都存在,暂时在数字电路书本中并没有找到合适的答案,有冒险竞争,但只能解释毛刺的现象,不知道有没有大神可以指点下,是什么根本原因造成了延迟,或者可不可以告诉下数字电路的哪个知识点讲到了
(35.12 KB, 下载次数: 2)
23:23 上传
23:43:04  
描述错了,在quartus 2中出现时序仿真延迟的根本原因是什么?
11月注册新萌有奖哦
BUT!!“老”朋友不要看到这就走了!!!
小编这次不偏心新萌了
“老”司机们通过分享同样有奖哦
等不及了?快来加入吧!
美国高官内华达财政部长施瓦泽在接受新浪科技独家专访时,称“乐视是庞氏骗局”-庞氏骗局是对金融领域投资诈骗的称呼。乐视也是拆东墙补西墙,到处拢钱(借钱或要投资)。就和庞氏骗局模式相同。
Powered by

我要回帖

更多关于 兰亭数字 vr 的文章

 

随机推荐