解题思路:
步骤如下:
先将不带空格的图形显示出来
分层次显示,先显示
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语言程序设计教程(第三版)课后习题6.11 (C语言代码)浏览:2098 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)万恶的long long浏览:906 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:672 |
【计算球体积】 (C语言代码)浏览:1158 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:651 |
母牛的故事 (C语言代码)浏览:594 |
格式化数据输出 (C语言代码)浏览:882 |
判定字符位置 (C语言代码)浏览:849 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:692 |
母牛的故事 (C语言代码)浏览:625 |