黑马程序员技术交流社区
标题:
打印对齐~
[打印本页]
作者:
万大述
时间:
2013-6-27 13:43
标题:
打印对齐~
杨辉三角如何对齐成下图(下面代码给对歪了):
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
本人代码:
static void Main(string[] args)
{
int count=0;
bool flag = false;
count = ReadInt();
Console.WriteLine(".....................................................");
Console.WriteLine();
int [,] yanghui=new int[count,count]; //定义一个二维数组
int i=0,j=0;
for (i = 0; i < count; i++) //给杨辉三角赋值
{
yanghui[i, 0] = yanghui[i, i] = 1;
for (j = 1; j < i; j++)
{
yanghui[i, j] = yanghui[i - 1, j - 1] + yanghui[i - 1, j];
}
}
if (count % 2 == 1) //输入偶数和奇数是分开打印(输入为奇数时的输出)
{
for (i = 0; i < count; i++)
{
for (int x = (count - i - 1) / 2; x > 0; x--) //补空格
{
Console.Write(" ");
}
if ((i % 2) == 1) //奇数行输出
{
Console.Write(" "); //补空格
for (j = 0; j < (i + 1) / 2 - 1; j++) //输出右半边数
{
Console.Write((yanghui[i, j])); }
Console.Write((yanghui[i, j]));
Console.Write(" "); //补空格
int x = ++j;
for (j = x; j <= i; j++) //输出右半边数
{
Console.Write((yanghui[i, j]));
}
}
else //输出偶数行
{
for (j = 0; j <= i; j++)
{
Console.Write((yanghui[i, j]));
}
}
Console.WriteLine(); //换行
}
}
else //输入为偶数时的输出
{
for (i = 0; i < count; i++)
{
for (int x = (count - i - 1) / 2; x > 0; x--)
{
Console.Write(" ");
}
if ((i % 2) == 1)
{
for (j = 0; j < (i + 1) / 2 - 1; j++)
{
Console.Write((yanghui[i, j]));
}
Console.Write((yanghui[i, j]));
Console.Write(" ");
int x = ++j;
for (j = x; j <= i; j++)
{
Console.Write((yanghui[i, j]));
}
}
else
{
Console.Write(" ");
for (j = 0; j <= i; j++)
{
Console.Write((yanghui[i, j]));
}
}
Console.WriteLine();
}
}
Console.ReadKey();
}
static int ReadInt()
{
int number = 0;
do
{
try
{
Console.WriteLine("请输入一个正整数");
number = Convert.ToInt32(Console.ReadLine());
if (number > 0) //确保输入为正整数 {
break;
}
else
{
continue;
}
}
catch
{
continue;
}
} while (true);
return number; }
作者:
万琪
时间:
2013-6-27 14:13
用制表符 \t
作者:
庞登升
时间:
2013-6-27 14:21
\t就可以了呢。。。
作者:
彭家贰小姐
时间:
2013-6-27 16:40
本帖最后由 彭家贰小姐 于 2013-6-27 16:43 编辑
我试着用楼主的代码加制表符来控制,但不好弄,所以优化了代码
using System;
namespace test14
{
internal class Program
{
//杨辉三角
private static void Main(string[] args)
{
var p = new Program();
Console.WriteLine("请输入一个正整数:");
var strName = Console.ReadLine();
int value = Convert.ToInt16(strName);
p.Yanghui(value);
Console.ReadKey();
}
public void Yanghui(int value)
{
if (value < 3)
{
Console.WriteLine("请重新输入数组大于3的值!");
}
else
{
var arry = new int[value, value];
Console.WriteLine("杨辉三角形:");
for (var i = 0; i < value; i++)
{
var str = "";
str = str.PadLeft(value - i,'\t');
Console.Write(str);
for (var j = 0; j <= i; j++)
{
if (i == j || j == 0)
{
arry[i, j] = 1;
}
else
{
arry[i, j] = arry[i - 1, j - 1] + arry[i - 1, j];
}
Console.Write(arry[i, j] + "\t\t");
}
Console.WriteLine();
}
}
}
}
}
复制代码
33.png
(693.33 KB, 下载次数: 0)
下载附件
2013-6-27 16:41 上传
作者:
道法乾坤110
时间:
2013-6-27 18:36
我觉得,大家写代码的时候,是不是应该写上注释,要不然向我们这些新手,看不懂呀,本来就不怎么会,如果连个注释也没有,看蒙了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2