轻量级前端框架助力开发者提升项目效率与性能
658
2022-10-01
入门经典编程题-菱形
题目
打印出n行的菱形(n为奇数) 例如:输入5 打印出如下图案(菱形):
* *** ***** *** *
分析
单层循环 此实现方法需要去寻找图形之间的数学规律
双层循环 将图形分割成上下两部分 分别打印 第一层循环按行打印 第二层循环:循环打印空格,循环打印*号
Java实现
单层循环的实现
首先理解此图形的代码实现
* *** *****
public static void example05(){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = 0; int mid = n/2; for (int i = 0; i < n*(n+1)/2; i++) { if (i % n == 0 && i != 0) { k++; mid += n; System.out.println(); } if ( mid-k <= i && i <= mid+k) { System.out.print("*"); }else{ System.out.print(" "); } } }
完整图形代码实现
public static void example05(){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = 0; int mid = n/2; for (int i = 0; i < n*(n+1)-1; i++) { if (i % n == 0 && i != 0) { mid += n; if (i < n*(n+1)/2) k++; else k--; System.out.println(); } if ( mid-k <= i && i <= mid+k) { System.out.print("*"); }else{ System.out.print(" "); } } }
双循环打印
public static void example05_2(){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = 0; int mid = n/2; for (int i = 0; i < mid+1; i++) { for (int j = 0; j < mid-k; j++) { System.out.print(" "); } for (int j = mid-k ; j <= mid+k; j++) { System.out.print("*"); } System.out.println(); k++; } k = k-2; for (int i = 0; i < mid ; i++) { for (int j = 0; j < mid-k; j++) { System.out.print(" "); } for (int j = mid-k ; j <= mid+k; j++) { System.out.print("*"); } System.out.println(); k--; } }
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~