1、打印空心三角形
输入一个数控制三角形的行数
* * * * * * * * * * * * * * * * * *******************
package test; import java.util.Scanner; public class demo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); double tmp = sc.nextInt(); // 如果是其他类型的数据,则改成相应的方法即可,如float类型,那么是nextFloat(); int num = (int) tmp; for (int i = 1; i <= num; i++) { // 行 for (int j = num - i; j > 0; j--) {// 列的空格和* System.out.print(" "); } for (int k = 1; k <= 2 * i - 1; k++) { if (k == 1 || k == 2 * i - 1 || i == num) { System.out.print("*"); } else { System.out.print(" "); } } System.out.print("\n"); } } }
2、输出正反三角形
使用循环结构打印下述图形,打印行数n由用户输入。图中每行事实上包括两部分,中间间隔空格字符数m也由用户输入。
注意:两行之间没有空行。
样例输入
5 4
样例输出
* ********* *** ******* ***** ***** ******* *** ********* *
package test; import java.util.Scanner; public class demo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) System.out.printf(" "); for (int j = n - i; j > 1; j--) System.out.printf(" "); for (int k = 0; k <= i * 2; k++) System.out.printf("*"); for (int j = 0; j < m; j++) System.out.printf(" "); for (int k = 1; k < (n - i) * 2; k++) System.out.printf("*"); System.out.printf("\n"); } } }
3、打印大X
小明希望用星号拼凑,打印出一个大X,他要求能够控制笔画的宽度和整个字的高度。 为了便于比对空格,所有的空白位置都以句点符来代替。
要求输入两个整数m n,表示笔的宽度,X的高度。用空格分开(0<m<n, 3<n<1000, 保证n是奇数)要求输出一个大X
例如,用户输入:
3 9
程序应该输出:
***********
*********
***********
用户输入
15 3
程序应该输出:
*** ***
*** ***
*** ***
*** ***
*** ***
*** ***
*****
***
*****
*** ***
*** ***
*** ***
*** ***
*** ***
*** ***
package test; import java.util.Scanner; public class demo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int m = sc.nextInt(); int n = sc.nextInt(); sc.close(); f(m, n); } static void f(int h, int w) { System.out.println(String.format("高度=%d, 笔宽=%d", h, w)); int a1 = 0; int a2 = h - 1; for (int k = 0; k < h; k++) { int p = Math.min(a1, a2); int q = Math.max(a1 + w, a2 + w); for (int i = 0; i < p; i++) System.out.print(" "); if (q - p < w * 2) { for (int i = 0; i < q - p; i++) System.out.print("*"); ; // 填空 } else { for (int i = 0; i < w; i++) System.out.print("*"); for (int i = 0; i < q - p - w * 2; i++) System.out.print(" "); for (int i = 0; i < w; i++) System.out.print("*"); } System.out.println(); a1++; a2--; } } }
4、字母图形
问题描述
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
输入格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式
输出n行,每个m个字符,为你的图形。
样例输入
5 7
样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
数据规模与约定
1 <= n, m <= 26。
package test; import java.util.Scanner; public class demo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt();// 行数 int m = sc.nextInt();// 列数 char[][] pattern = new char[26][26]; char str; int i, j; // 向pattern数组中添加字母元素 for (i = 0; i < n; i++) { str = 'A'; for (j = i; j < m; j++) { pattern[i][j] = str++; } str = 'A'; for (j = i - 1; j >= 0; j--) { pattern[i][j] = ++str; } } // 输出字符数组元素 for (i = 0; i < n; i++) { for (j = 0; j < m; j++) { System.out.print(pattern[i][j]); } System.out.println(); } } }