黑马训练营-用C#代码编写图形

 

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

            Console.WriteLine("请输入菱形\"◇\"的长度:");
            //菱形的上半部 (从顶点到到最多"*"的为上半部,剩下的为下半部)
            int num = int.Parse(Console.ReadLine());//转换用户输入的字符串格式的数字
            for (int i = 1; i <= num; i++)//循环开始,可以讲 i 理解为行。既 i =1 时,打印输出第一行;i =2 时,打印输出第二行...
            {
                for (int j = 1; j <= num - i; j++)// j 可以理解为列,当 j = 1 是判断并打印第一列的情况,j = 2 时,判断并打印第二列的情况...
                {
                    Console.Write(" ");
                }
                for (int j = 1; j <= i * 2 - 1; j++)
                {
                    Console.Write("*");
                }
                Console.WriteLine();
            }

//我们从上图中我们可以找到规律。上半部,第一行为1个"*",第二行为3个"*",第三行为5个"*",第四行为7个"*",我们能得出一个结论:当行数 为 i  时,"*" 的个数 (2*i-1) 个。与之相对的"*"前面的空格为 4-i (假设长度如上图的长度4)个。

那么上面的循环代码,我们就可以看明白了!


            //菱形的下半部分
            for (int i = 1; i <= num - 1; i++)
            {
                for (int j = 1; j <= i; j++)
                {
                    Console.Write(" ");
                }
                for (int j = 1; j <= (num * 2 - 1) - 2 * i; j++)
                {
                    Console.Write("*");
                }
                Console.WriteLine();
            }

//下半部的倒三角形 我们要再做个循环。同样,从上图中知道规律。第一行为5个"*",第二行为3个"*",第三行为1个"*",于只想对应的 第一行有1个空格,第二行有2个空格,第三行有3个空格。所以规律为:当行数 为 i 时,空格的个数于 i  相等。

而"*"的为((4 * 2 -1)-2*i)  4  是 菱形的长度  。所以上面的循环也就不难理解了!i  循环 控制行数,j 循环控制 列中是打印 " ",还是打印"*"。

            Console.ReadKey();

 

 

那么下面的代码,你能理解吗?

 int num = int.Parse(Console.ReadLine());

            for (int i = 1; i <= num; i++)
            {
                for (int j = 1; j <= num; j++)
                {
                    if (i == 1 || i == num)
                    {
                        Console.Write("* ");
                    }
                    else if (j == 1 || j == num)
                    {
                        Console.Write("* ");
                    }
                    else
                    {
                        Console.Write("  ");
                    }
                }
                Console.WriteLine();

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

 详细请查看:http://net.itheima.com/

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大文件拷贝实例源码,学习关于IO文件流、多线程相关使用做参考。 private void button4_Click(object sender, EventArgs e) { this.progressBar1.Value = 0; this.label1.Text = "0%"; if (!File.Exists(this.textBox1.Text)) { MessageBox.Show("找不到目标文件!"); return; } if (!Directory.Exists(this.textBox2.Text)) { MessageBox.Show("请选择有效的保存路径!"); return; } string fileRead = this.textBox1.Text; string fileSave = Path.Combine(this.textBox2.Text, _fileName); System.Threading.ThreadPool.QueueUserWorkItem((o) => { using (IDisposable file = new FileStream(fileRead, FileMode.Open, FileAccess.Read), fileWrite = new FileStream(fileSave, FileMode.Create, FileAccess.Write)) { int count = 0; long fileLength =((FileStream)file).Length; //目标文件大小 //根据目标文件大小创建byte数组长度 byte[] data = new byte[fileLength > 1024 * 1024 * 30 ? 1024 * 1024 * 30 : fileLength]; //30M 1024 * 1024 * 30 int step = (int)Math.Ceiling(fileLength * 1.0 / data.Length); //分流段数 double n = (100 * 1.0 / step); //每次进度条累加 double m = 0; //累加统计 int spam = 1; //时间间隔 double speed = 0; //拷贝速度 do { DateTime time = DateTime.Now; //文件流操作 count = ((FileStream)file).Read(data, 0, data.Length); ((FileStream)fileWrite).Write(data, 0, count); //保存时间间隔,单位毫秒 spam = (DateTime.Now - time).Milliseconds > 0 ? (DateTime.Now - time).Milliseconds : spam;//必须大于0 //计算速度 单位k/s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值