输出如样例输出中所示的沙漏图形。 输入样例: 输出样例: ********* ******* ***** *** * *** ***** ******* *********
时间: 2023-07-18 20:42:03 浏览: 179
c代码-编写程序输出下列图形: * *** ***** *******
以下是 Java 代码实现:
```
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
char c = scanner.next().charAt(0);
int row = (int) Math.sqrt((n + 1) / 2);
int max = 2 * row * row - 1;
for (int i = row; i >= 1; i--) {
int num = 2 * i - 1;
int space = (max - num) / 2;
for (int j = 0; j < space; j++) {
System.out.print(" ");
}
for (int j = 0; j < num; j++) {
System.out.print(c);
}
System.out.println();
}
for (int i = 2; i <= row; i++) {
int num = 2 * i - 1;
int space = (max - num) / 2;
for (int j = 0; j < space; j++) {
System.out.print(" ");
}
for (int j = 0; j < num; j++) {
System.out.print(c);
}
System.out.println();
}
int remain = n - 2 * row * row + 1;
System.out.println(remain);
}
}
```
首先使用 Scanner 类从输入中读取两个变量:整数 n 和字符 c。其中,n 表示沙漏的最大宽度,c 表示沙漏的填充字符。
然后,根据沙漏的最大宽度 n 计算出每行字符个数的最大值 max,以及沙漏的最大行数 row。接下来使用两个 for 循环分别输出沙漏的上半部分和下半部分。在循环中,需要计算每行前面的空格数和字符数。最后,计算出沙漏底部剩余的字符数 remain,并输出它的值。
注意:在 Java 中,将一个浮点数强制转换为整型时,会向下取整。因此,在计算 row 时,需要使用 `(int) Math.sqrt((n + 1) / 2)`。
阅读全文