首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

烦劳来看看这个数字三角形怎样打印出来~

2012-09-29 
麻烦来看看这个数字三角形怎样打印出来~~~~如果用户输入5的话,就输出这样一个结果12123131141415 1056789

麻烦来看看这个数字三角形怎样打印出来~~~~
如果用户输入5的话,就输出这样一个结果
1
2 12  
3 13 11
4 14 15 10
5 6 7 8 9

三角形差不多就是这样,想了很久都没有做出来,如果有知道的,提供一个思路就可以了,让我再试试~~~

[解决办法]
或者把n值变化改得更“一致”一些:

C# code
using System;namespace ConsoleApplication1{    class Program    {        static void Main(string[] args)        {            画三角形(1, 1, 1, 9);            Console.ReadKey();        }        private static void 画三角形(int x, int y, int a, int n)        {            for (var i = 0; i < n - 1; i++)                输出(x, y++, a++);            for (var i = 0; i < n - 1; i++)                输出(x++, y, a++);            for (var i = 0; i < n - 1; i++)                输出(x--, y--, a++);            n -= 3;            if (n > 0)            {                x++;                y += 2;                画三角形(x, y, a, n);            }        }        private static void 输出(int x, int y, int a)        {            Console.CursorLeft = x * 4;            Console.CursorTop = y * 2;            Console.Write(a);        }    }}
[解决办法]
有啦,不知道C#如何实现,但是我的想法可能太绕了。
比如 输入 5
计算一个值 1+2+3+4+5=15 则所有打印的数字为1~15
1~15 分别存入 一个数组,比如数组A[0]=1 ..类推
现在,我们找数字的打印顺序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
我们用坐标标示
11 21 31 41 51[1结束的顺序已输入的数字5为结束标志]
然后是最低下 52 53 54 55
这个三角形式逆时针包围,所以,紧接着是上一行缩进
44 33 22 接着笔直下来

32 42 然后横行走 43 如果还有就继续上一行缩进

这些坐标可以是对应地址,可以是数组的下标。
排列下就是 11~55

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
11 21 31 41 51 52 53 54 55 44 33 22 32 42 43

11 
21 22
31 32 33
41 42 43 44
51 52 53 54 55

1
2 12
3 13 11
4 14 15 10 
5 6 7 8 9
 
[解决办法]
探讨
楼上的好专业,看不懂,O(∩_∩)O哈哈~。打个酱油。

热点排行