本帖最后由 FrancisTan 于 2014-7-7 17:40 编辑
题目要求从键盘输入一个奇数,然后用“*”打印出所输入数字为行数的菱形。 如输入5,则输出:
*
***
*****
***
*
这个题目据说是很经典的一个练习for循环的习题,非常惭愧,不才用了一下午的时间才想出来。
在这里贴出自己的代码:
- Console.WriteLine("请输入一个奇数(1~20):");
- int input = Convert.ToInt32(Console.ReadLine());
- //下面分两部分输入结果
- //第一部分 输出前input/2-1行
- for (int i = 0; i < input/2 -1; i++)
- {
- //首先输出每行前面的空格
- for (int j = 0; j < input/2; j++)
- Console.Write(" ");
- //然后输出每行的星号
- for (int k = 0; k < 2*i + 1; k++)
- Console.Write("*");
- //一行结束 换行
- Console.WriteLine();
- }
- //第二部分 输出后input/2+1行
- for (int i = 0; i < input/2 + 1; i++)
- {
- for (int j = 0; j < i; j++)
- Console.Write(" ");
- //用input减去每行输出的空格数,剩下的就是该行应该输出的星号数
- for (int k = 0; k < input -2*i; k++)
- Console.Write("*");
- Console.WriteLine();
- }
复制代码 上述代码我自己都感觉挺乱的,看着也费事,但苦思更好的算法无果,还请各位指教!
|
|