L1-002. 打印沙漏
2017-11-13 20:07
246 查看
团体程序设计天梯赛-练习集
L1-002. 打印沙漏
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印***** *** * *** *****
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:
19 *
输出样例:
***** *** * *** *****
2
代码区
import java.util.*; public class Hourglass { public static void main(String[] args) { Scanner s=new Scanner(System.in); int x=s.nextInt(); char c=s.nextLine().charAt(1); getTier tier=new getTier(x); print p = new print(tier.i,c); System.out.println(tier.remainder); } } class getTier{ int i=0; int remainder=0; getTier(int x){ int y=1; int z=0; for(;y<=x;i++){ z=y; y+=(6+4*i); remainder=x-z; } i--; } } class print{ print(int i,char c){ int j=i,m=0,n=0,p=0; p=(3+(i-1)*2); while(j>0){ m=3+(j-1)*2; n=(p-m)/2; while(n>0){ System.out.print(" "); n--; } while(m>0){ System.out.print(c); m--; } System.out.println(); j--; } n=p/2; while(n>0){ System.out.print(" "); n--; } System.out.println(c); j=1; while(j<=i){ m=3+(j-1)*2; n=(p-m)/2; while(n>0){ System.out.print(" "); n--; } while(m>0){ System.out.print(c); m--; } System.out.println(); j++; } } }
本人一个刚刚学java的大学生,所有代码均为原创。转载请注明出处。
作者:Lwen
时间:2017年11月13日
8678
相关文章推荐