解题思路:
步骤如下:
先将不带空格的图形显示出来
分层次显示,先显示
XXXXX
XXX
再显示
X
XXX
XXXXX
再根据行的变化来显示前面的空,以及剔除中间的空
注意事项:(题目上面第一个演示中少去掉了一行)
参考代码:
import java.util.Scanner;
public class DNA {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
// 存储有几个数
int frequency = scanner.nextInt();
// 存储不同的DNA
int[][] DNA = new int[frequency][2];
for (int i = 0; i < frequency; i++) {
for (int j = 0; j < 2; j++) {
DNA[i][j] = scanner.nextInt();
}
}
// 表示有连个dna要显示
for (int i = 0; i < frequency; i++) {
// 循环几遍
for (int j = 0; j < DNA[i][1]; j++) {
// 上部分
if (j>0) {
for (int j2 = 0; j2 < DNA[i][0]/2; j2++) {
// 开始的空格
for (int k = 0; k < j2; k++) {
System.out.print(" ");
}
for (int k = 0; k <DNA[i][0]-2*j2; k++) {
if (j2==0) {
break;
}
if (k==0||k+1==DNA[i][0]-2*j2) {
System.out.print("X");
}else {
System.out.print(" ");
}
}
if (j2==0) {
continue;
}
// 换行,准备输出第二个
System.out.println();
}
}else {
for (int j2 = 0; j2 < DNA[i][0]/2; j2++) {
// 开始的空格
for (int k = 0; k < j2; k++) {
System.out.print(" ");
}
for (int k = 0; k <DNA[i][0]-2*j2; k++) {
if (k==0||k+1==DNA[i][0]-2*j2) {
System.out.print("X");
}else {
System.out.print(" ");
}
}
// 换行,准备输出第二个
System.out.println();
}
}
//下班部分
for (int j2 = 0; j2 <DNA[i][0]-DNA[i][0]/2; j2++) {
for (int k = 0; k < DNA[i][0]/2-j2; k++) {
System.out.print(" ");
}
for (int k = 0; k < 2*j2+1; k++) {
if (k==0||k+1==2*j2+1) {
System.out.print("X");
}else {
System.out.print(" ");
}
}
System.out.println();
}
}
// 换行,准备输出第二个
System.out.println();
}
}
}
0.0分
1 人评分
A+B for Input-Output Practice (III) (C语言代码)浏览:569 |
【金明的预算方案】 (C++代码)浏览:838 |
格式化数据输出 (C语言代码)浏览:811 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:2739 |
哥德巴赫曾猜测 (C++代码)浏览:735 |
世界杯来了浏览:914 |
IP判断 (C语言代码)浏览:495 |
纪念品分组 (C语言代码)浏览:873 |
数列有序 (C语言代码)浏览:611 |
WU-C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:1249 |