小明希望用星号拼凑,打印出一个大X,他要求能够控制笔画的宽度和整个字的高度。 为了便于比对空格,所有的空白位置都以句点符来代替。
要求输入两个整数m n,表示笔的宽度,X的高度。用空格分开(0<m<n, 3<n<1000, 保证n是奇数)要求输出一个大X
例如,用户输入:
3 9
程序应该输出:
…
.***…***.
…***.***…
…*****…
…***…
…*****…
…***.***…
.***…***.
…
(如有对齐问题,参看【图1.jpg】)
再例如,用户输入:
4 21程序应该输出
…
.….
………
………
………
………
………
………
…********…
…******…
…****…
…******…
…********…
………
………
………
………
………
………
.….
…
(如有对齐问题,参看【图2.jpg】)
解析:遇见这种题,我们要分析图形的结构,并根据结构的内容进行编码,这里我们可以看到,图形的每一行都是由“.” 和“*”组成的,顺序分别是“ 。” , “ * ” ,“ 。 ” , " * " , " 。";根据这个我们可以用二维for循环来迭代,到下面你会发现结构改变了,所以要根据下标变化灵活变动结构;话不多说,看代码。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n=in.nextInt();
int m=in.nextInt();
for(int i=0;i<m/2+1;i++) {
for(int j=0;j<i;j++) {
System.out.print(".");
}
for(int k=0;k<n;k++) {
System.out.print("*");
}
if(m-n-1-(i*2)>0)
{
for(int p=0;p<m-n-1-(i*2);p++) {
System.out.print(".");
}
for(int q=0;q<n;q++) {
System.out.print("*");
}
for(int w=0;w<i;w++) {
System.out.print(".");
}
}
else {
for(int q=0;q<m-1-(i*2);q++) {
System.out.print("*");
}
for(int p=0;p<i;p++) {
System.out.print(".");
}
}
System.out.println();
}//上半X
for(int i=m/2-1;i>=0;i--) {
for(int j=0;j<i;j++) {
System.out.print(".");
}
for(int k=0;k<n;k++) {
System.out.print("*");
}
if(m-n-1-(i*2)<0) {
for(int q=0;q<m-1-(i*2);q++) {
System.out.print("*");
}
for(int p=0;p<i;p++) {
System.out.print(".");
}
}
else {
for(int p=0;p<m-n-1-(i*2);p++) {
System.out.print(".");
}
for(int q=0;q<n;q++) {
System.out.print("*");
}
for(int w=0;w<i;w++) {
System.out.print(".");
}
}
System.out.println();
}//下半X
}
}