A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 潘龙旺 中级黑马   /  2013-6-26 23:35  /  1476 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 潘龙旺 于 2013-6-27 21:33 编辑

当输入一个奇数时输出相对应的由*号组成的菱形如图,上为输出的菱形,下为输入的奇数。请教好方法!!!

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

7 个回复

倒序浏览
我记得我做过类似的题目,你可以改下就成
    int i, j, k;
            for (i = 1; i <= 4; i++)
            {
                for (j = 1; j <= 4 - i; j++)
                    Console.Write (" ");
                for (k = 1; k < 2 * i; k++)
                    Console.Write ("*");
                Console.WriteLine ();
            }
            for (i = 3; i > 0; i--)
            {
                for (j = 3; j >= i; j--)
                    Console.Write (" ");
                for (k = 1; k < 2 * i; k++)
                    Console.Write ("*");
                Console.WriteLine ();
            }
            Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
可以实现了 但感觉不是很好 同样求好方法
  1. using System;

  2. namespace test13
  3. {
  4. internal class Program
  5. {
  6. //当输入一个奇数时输出相对应的由*号组成的菱形如图,上为输出的菱形,下为输入的奇数。
  7. private static void Main(string[] args)
  8. {
  9. Console.WriteLine("请输入一个奇数:");
  10. try
  11. {
  12. var num = Convert.ToInt32(Console.ReadLine()); //接受用户输入的文本
  13. if (num % 2 == 0)
  14. {
  15. Console.WriteLine("您输入的不是奇数...");
  16. }
  17. else
  18. {
  19. for (var i = 1; i <= num; i++)
  20. {
  21. if (i%2 == 0) continue;
  22. for (var j = 0; j < (num-i)/2; j++)
  23. {
  24. Console.Write(" ");
  25. }
  26. for (var k = 0; k < i; k++)
  27. {
  28. Console.Write("*");
  29. }
  30. Console.WriteLine();
  31. }
  32. for (var x=num-1; x > 0; x--)
  33. {
  34. if (x%2 == 0) continue;
  35. for (var y = 0; y < (num - x) / 2; y++)
  36. {
  37. Console.Write(" ");
  38. }
  39. for (var z = 0; z < x; z++)
  40. {
  41. Console.Write("*");
  42. }
  43. Console.WriteLine();
  44. }
  45. }
  46. for (var q = 0; q < num/2; q++)
  47. {
  48. Console.Write(" ");
  49. }
  50. Console.Write(num);
  51. Console.ReadKey();
  52. }
  53. catch (Exception)
  54. {
  55. Console.WriteLine("格式错误...");
  56. }
  57. }
  58. }
  59. }
复制代码

回复 使用道具 举报
int d = 15 ;
            for (int i = 1; i <= d/2+1; i++)
            {
                for (int j=0; j < (d-2*i+1)/2; j++)
                {
                    Console.Write(" ");
                }
                for (int s = 0; s <2*i-1;s++ )
                {
                    Console.Write("*");

                }
                Console.WriteLine();

            }
            for (int i = d/2+2; i <= d; i++)
            {
                for (int j = 0; j <(2*i-d-1)/2; j++)
                {
                    Console.Write(" ");
                }
                for (int s = 0; s <2*(d-i)+1; s++)
                {
                    Console.Write("*");

                }
                Console.WriteLine();

            }
回复 使用道具 举报
谢谢您的回复
回复 使用道具 举报
彭家贰小姐 发表于 2013-6-27 00:24
可以实现了 但感觉不是很好 同样求好方法

你那个有没有太长了,能否假定用户就是输入的奇数,写的精简点!
回复 使用道具 举报
吕柳根 发表于 2013-6-27 11:48
你那个有没有太长了,能否假定用户就是输入的奇数,写的精简点!
  1. for (var i = 1; i <= num; i++)
  2. {
  3.         if (i%2 == 0) continue;
  4.         for (var j = 0; j < (num-i)/2; j++)
  5.         {
  6.                 Console.Write(" ");
  7.         }
  8.         for (var k = 0; k < i; k++)
  9.         {
  10.                 Console.Write("*");
  11.         }
  12.         Console.WriteLine();
  13. }
  14. for (var x=num-1; x > 0; x--)
  15. {
  16.         if (x%2 == 0) continue;
  17.         for (var y = 0; y < (num - x) / 2; y++)
  18.         {
  19.                 Console.Write(" ");
  20.         }
  21.         for (var z = 0; z < x; z++)
  22.         {
  23.                 Console.Write("*");
  24.         }
  25.         Console.WriteLine();
  26. }
  27. Console.Write(num);
  28. Console.ReadKey();
复制代码
回复 使用道具 举报
1、写一个得到一个正奇数的函数;2、打印前半段(补空格);3、打印后半段(补空格);4、打印输入数字。参考代码如下:
static void Main(string[] args)
        {
            int number=ReadIntOdd(); //调用函数得到一个正奇数
            for (int i = 0; i < number; i += 2) //打印“*”增加的前半段
            {
                for (int j = 0; j <(number-i)/2; j++) //补相应的空格,注意结束条件的设置
                {
                    Console.Write(" ");
                }
                for (int k = 0; k <= i; k++) //打印符合要的“*”数量
                {
                    Console.Write("*");
                }
                Console.WriteLine();
            }
            for (int i = number-3; i >=0; i -= 2) //打印“*”减少的后半段
            {
                for (int j = 0; j < (number - i) / 2; j++)
                {
                    Console.Write(" ");
                }
                for (int k = 0; k <= i; k++)
                {
                    Console.Write("*");
                }
                Console.WriteLine();
            }
            for (int x= 0; x < number/2; x++) //在数字前补相应的空格
            {
                Console.Write(" ");
            }
            Console.WriteLine(number); //打印输入数字
            Console.ReadKey();


        }
        
        static int ReadIntOdd() //该方法要求用户输入一个正奇数
        {
            int number = 0;
            do
            {
                try
                {
                    number = Convert.ToInt32(Console.ReadLine());
                    if (number >= 0&&number%2==1)
                    {
                        break;
                    }
                    else
                    {
                        Console.WriteLine("请输入一个正奇数!");
                        continue;
                    }
                }
                catch
                {
                    Console.WriteLine("请输入整数!");
                    continue;
                }
            } while (true);
            return number;
        }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马