用C#打印出这样一个菱形

图形是这样的*0*00*0*0*00*0*0*0*0*00*0*0*0*0*0*0*00*0*0*0*0*00*0*0*00*0**0*00*0*0*00*0*0*0*0... 图形是这样的
*
0*0
0*0*0*0
0*0*0*0*0*0
0*0*0*0*0*0*0*0
0*0*0*0*0*0
0*0*0*0
0*0
*
*
0*0
0*0*0*0
0*0*0*0*0*0
0*0*0*0*0*0*0*0
0*0*0*0*0*0
0*0*0*0
0*0
*
展开
 我来答
aund1986
2009-10-14 · TA获得超过1618个赞
知道小有建树答主
回答量:1000
采纳率:0%
帮助的人:484万
展开全部
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Answer
{
/// <summary>
/// 打印菱形的类
/// </summary>
class DiamondPrint
{
/// <summary>
/// 菱形的边长
/// </summary>
private int width;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="_width">菱形的边长</param>
public DiamondPrint(int _width)
{
width = _width;
}
/// <summary>
/// 计算要打印的菱形的最长行的长度
/// </summary>
/// <returns>最长行的长度</returns>
private int LongestRow()
{
if (width == 1)
return 1;
else
return (width - 2) * 4 + 3;
}
/// <summary>
/// 计算菱形的行数
/// </summary>
/// <returns>行数</returns>
private int RowNum()
{
return (width - 1) * 2 + 1;
}
/// <summary>
/// 菱形的每一行的集合
/// <para>每一行均为string</para>
/// </summary>
/// <returns>行的集合</returns>
public List<string> DiamondRows()
{
//菱形的前半部分行的集合,没有填充空格
List<string> HalfRowNS = HalfRowsNoSpace();
//菱形所有行的容器
List<string> diaRow = new List<string>();
//循环为前半部分行添加空格
for (int i = 0; i < width; i++)
{
string s = HalfRowNS[i];
//添加空格直到其长度等于最大行
while (s.Length < LongestRow())
{
s = " " + s + " ";
}
diaRow.Add(s);
}
//以中间行为对称轴,填充菱形后半部分的行
for (int i = width + 2; i < RowNum() + 2; i++)
{
diaRow.Add(diaRow[width * 2 - i]);
}
return diaRow;
}
/// <summary>
/// 菱形前半部分的行,(未填充空格)
/// </summary>
/// <returns>未填充空格的前半部分的行</returns>
private List<string> HalfRowsNoSpace()
{
//前半部分行容器
List<string> halfRows_no = new List<string>();
//第一行为固定的
string firstRow = "*";
//第二行为固定的
string secondRow = "0" + firstRow + "0";
//添加第一行
halfRows_no.Add(firstRow);
//若只有一行,则返回不添加后面的行
if (RowNum() == 1)
{
return halfRows_no;
}
//添加第二行
halfRows_no.Add(secondRow);
//若只有两行,也返回
if (RowNum() == 2)
{
halfRows_no.Add(firstRow);
return halfRows_no;
}
//循环添加后面的行,后面的行均是前一行前后拼接指定字符串形成
for (int i = 2; i < width; i++)
{
halfRows_no.Add("0*" + halfRows_no[i - 1] + "*0");
}
return halfRows_no;
}
}
}
测试代码:
static void Main(string[] args)
{
Console.WriteLine("请输入菱形边长:");
int wid = Convert.ToInt32(Console.ReadLine());
DiamondPrint d = new DiamondPrint(wid);
foreach (string s in d.DiamondRows())
Console.WriteLine(s);
}
骑着蜗牛来摆渡
2009-10-14 · TA获得超过1267个赞
知道小有建树答主
回答量:339
采纳率:0%
帮助的人:395万
展开全部
开始的时候这条路我也走过,怎能说是没事闲得
using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace DrawPic
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
static void Main()
{
Console.WriteLine(" *");
Console.WriteLine(" 0*0");
Console.WriteLine(" 0*0*0*0");
Console.WriteLine(" 0*0*0*0*0*0");
Console.WriteLine(" 0*0*0*0*0*0*0*0");
Console.WriteLine(" 0*0*0*0*0*0");
Console.WriteLine(" 0*0*0*0");
Console.WriteLine(" 0*0");
Console.WriteLine(" *");
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yang890511
2009-10-14 · TA获得超过648个赞
知道小有建树答主
回答量:570
采纳率:0%
帮助的人:490万
展开全部
这是一个算法,你看下这段代码就会明白了。

using System;

class Program
{
static void Main()
{
int i, j;
int num;
while (true)
{
Console.Write("请输入一个奇数:");
num = int.Parse(Console.ReadLine());
if (num % 2 != 0)
{
break;
}
}

for (i = 1; i <= num / 2 + 1; i++) //输出上三角形
{
for (j = 1; j <= num / 2 + 1 - i; j++)
{
Console.Write(" ");
}
for (j = 1; j <= 2 * i - 1; j++)
{
Console.Write("*");
}
Console.WriteLine();
}

for (i = 1; i <= num / 2; i++) //输出下三角形
{
for (j = 1; j <= i; j++)
{
Console.Write(" ");
}
for (j = 1; j <= num - 2 * i; j++)
{
Console.Write("*");
}
Console.WriteLine();
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-10-14
展开全部
没事闲得。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ershoushouji
2009-10-14 · 超过32用户采纳过TA的回答
知道答主
回答量:282
采纳率:0%
帮助的人:131万
展开全部
这就是个简单的算法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式