就是这个,用了很多方法 循环和嵌套 所以到底怎么弄出来的有没有人知道给我解答一下
帮你写了一个
public class CSDNQ7911656 {
public static void main(String[] args) {
int n = 4;
for (int i = 1; i <= n; i++) {
for (int j = 1; j < i; j++) {
System.out.print(" ");
}
System.out.print(i);
for (int j = i + 1; j <= 2 * n - i; j++) {
System.out.print(" ");
}
System.out.println(i);
}
for (int i = 1; i <= 2 * n; i++) {
System.out.print(" ");
}
System.out.println(4);
for (int i = n; i >= 1; i--) {
for (int j = 1; j < i; j++) {
System.out.print(" ");
}
System.out.print(i);
for (int j = i + 1; j <= 2 * n - i; j++) {
System.out.print(" ");
}
System.out.println(i);
}
}
}
该回答引用自ChatGPT
GPT解决这种简单的程序还行,运行过,这个没错
public static void main(String[] args) {
for (int i = 1; i <= 4; i++) { // 打印上半部分
for (int j = 1; j <= i - 1; j++) {
System.out.print(" ");
}
System.out.print(i);
for (int k = 1; k <= 8 - 2 * i; k++) {
System.out.print(" ");
}
if (i < 4) {
System.out.print(i);
}
System.out.println();
}
for (int i = 3; i >= 1; i--) { // 打印下半部分
for (int j = 1; j <= i - 1; j++) {
System.out.print(" ");
}
System.out.print(i);
for (int k = 1; k <= 8 - 2 * i; k++) {
System.out.print(" ");
}
System.out.println(i);
}
}
可以想象成打印一个矩形,然后加上一个判断,当满足对角线(主副)的条件时候打印数字,负责就是打印空格,用两层循环即可.
#include<stdio.h>
#define MIN(x,y) ((x)<(y)?(x):(y))
int main(){
int n;
printf("请输入一个正整数:");
scanf("%d",&n);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(i==j || i+j+1==n){
//满足对角线要求输出数字(输出的数字也有联系)
printf("%d",MIN(i+1,n-i));
}else{
//负责输出空格
printf(" ");
}
}
//记得要换行
printf("\n");
}
return 0;
}
看错了,原来是java代码,我重写了一下,不好意思.
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("请输入一个正整数:");
int n=sc.nextInt();
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if(i==j || i+j+1==n){
System.out.printf("%d",Math.min(i+1,n-i));
}else {
System.out.print(" ");
}
}
System.out.println();
}
}
}
写的不好,你凑合看一下,应该是这个意思吧.