解题思路:
步骤如下:
先将不带空格的图形显示出来
分层次显示,先显示
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 人评分
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:569 |
C语言考试练习题_排列 (C++代码)浏览:633 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:958 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:2092 |
字符逆序 (C语言代码)浏览:614 |
1048题解(读入回车问题)浏览:555 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:509 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:324 |
输入输出格式练习 (C语言代码)浏览:744 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:661 |