首页 > 试题广场 >

X形图案

[编程题]X形图案
  • 热度指数:50123 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。

输入描述:
多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。


输出描述:

针对每行输入,输出用“*”组成的X形图案。

示例1

输入

5

输出

*   *
 * * 
  *  
 * * 
*   *
示例2

输入

6

输出

*    *
 *  * 
  **  
  **  
 *  * 
*    *
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) { 
            int a = in.nextInt();   //a表示一共有多少行
            for(int i=0;i<a;i++){
                for(int j=0;j<a;j++){
                    if(i==j||(i+j)==a-1){
                        System.out.print("*");
                    }else{
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
        }
    }
}

编辑于 2023-12-10 14:41:19 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) { 
            int n = in.nextInt();
            for(int i = 0; i < n; i++) {
                for(int j = 0; j < n; j++) {
                    if(i == j || i + j == n - 1) {
                        System.out.print("*");
                    } else {
                        System.out.print(" ");
                    }
                }
                //换行
                System.out.println();
            }
        }
    }
}
发表于 2023-10-27 19:42:43 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt();
            for(int i=1;i<=n;i++){
                for(int j=1;j<=n;j++){
                    if(i==j||j==n+1-i){
                        System.out.print("*");
                    }else{
                        System.out.print(" ");
                    }
                }
                System.out.println();                
            }                    
        }
    }
}

发表于 2022-11-03 16:49:46 回复(0)
import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNextInt()){
            int x=sc.nextInt();
            int[][] arr=new int[x][x];
            for(int i=0;i<x;i++){
                arr[i][i]=1;
                arr[i][x-i-1]=1;
            }
            for(int i=0;i<x;i++){
                for(int j=0;j<x;j++){
                    if(arr[i][j]==1) System.out.print("*");
                    else System.out.print(" ");
                }
                System.out.println();
            }
        }
    }
}

发表于 2022-08-18 20:04:25 回复(0)
//对称图形可以用坐标的思想来解决,假设图形被放在坐标方格中,
//*和_都有专属坐标,经过观察可以总结出*坐标的规律
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextInt()) {
            int n = sc.nextInt();
            //外循环(相当于坐标x):图形总共n行,我们就循环n次
            for (int i = 0; i < n; i++) {
                //内循环(相当于坐标y)结合上一行来看就是第i行第j个
                for (int j = 0; j < n; j++) {
                    //观察过坐标图不难发现*都处于【横纵坐标相等】或者【和等于n-1】时
                    if (i == j || (i + j) == n - 1) {
                        System.out.print("*");
                    } else {
                        System.out.print(" ");
                    }
                }
                //外循环完成一次,代表一行写完,此处换行进行下一次循环
                System.out.println();
            }
        }
    }
}

发表于 2022-07-06 17:31:52 回复(0)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()){
            int n = scanner.nextInt();
            for(int i = 0 ; i < n ;i++){
                for(int j = 0;j < n ;j++){
                    //对角线以及逆对角线
                    if(i == j || i + j == (n - 1)){
                        System.out.print("*");
                    }else{
                        System.out.print(" ");
                    }
                    
                }
                System.out.println("");
            }
        }
    }
}

发表于 2022-06-29 10:27:20 回复(0)
import java.util.Scanner;

/**
 * @Title: X形图案
 * @Remark: KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。
 * 输入描述:
 *      多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。
 * 输出描述:
 *      针对每行输入,输出用“*”组成的X形图案。
 * @Author: ijunfu
 * @Version: 1.0.0
 * @Date: 2022-03-20
 */
public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        while(in.hasNextLine()) {
            int count = Integer.parseInt(in.nextLine());

            for(int i=0; i<count; ++i) {

                for(int j=0; j<count; ++j) {
                    if(i == j || j == count-i-1) {  // 对角线 & 逆对角线
                        System.out.print("*");
                    } else {
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
        }
    }
}

发表于 2022-03-20 11:12:37 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNextInt()){ //注意这题是要多组输入的
           int n=sc.nextInt();  //进到循环后输入一个数
        for(int i=0;i<n;i++){   //开始循环
            for(int j=0;j<n;j++){
                if(i==j||(i+j==n-1)) {  //画图理解 发现i和j相等 或者 i+j==n-1的时候
                  System.out.print("*"); //就可以打印* 号 否则就直接打印空格,注意最后需要换行
                }
                else System.out.print(" ");
            }
            System.out.println();
        }
    }
}
}

发表于 2022-03-09 16:45:50 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    if (i == j) {
                        System.out.print("*");
                    }else if (i + j == n-1) {
                        System.out.print("*");
                    }else {
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
        }
    }
}

发表于 2021-12-16 23:35:38 回复(0)
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner reader =new Scanner(System.in);
        
                int i,j,x;
        while(reader.hasNext())
        {
            x=reader.nextInt();
            for(i=0;i<x;i++)
        {
            for(j=0;j<x;j++)
            {
                if(i==j||i+j==(x-1))
                {
                    System.out.print("*");
                }
                else
                {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
        }
        
        
        
                
    }

}
发表于 2021-10-20 00:27:37 回复(0)
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int n=sc.nextInt();
            for(int i=0;i<n;i++){
                for(int j=1;j<=n;j++){
                    if(i==(j-1) || (i+j)==n){
                        System.out.print("*");
                    }else{
                        System.out.print(" ");
                    }
                }
                System.out.println(" ");
            }
        }
    }
}

发表于 2021-10-15 16:40:15 回复(0)
  • 本质:对角线填充*号
  • 二维数组,初始化值都等于空格,然后给对角线填充*号即可
  • 多组输入,循环输入即可
发表于 2021-10-12 15:05:39 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            String[][] arr = new String[n][n];
            for(int i = 0; i < arr.length;i++){
                for(int j = 0; j < arr[i].length; j++){
                    if(i == j){
                        arr[i][j] = "*";
                    }else if(i == n-1 - j){
                        arr[i][j] = "*";
                    }else{
                        arr[i][j] = " ";
                    }
                }
            }
            for(int i = 0; i < arr.length;i++){
                for(int j = 0; j < arr[i].length;j++){
                    System.out.print(arr[i][j]);
                }
                System.out.println();
            }
        }
    }
}

发表于 2021-10-08 10:34:01 回复(0)
import java.util.Scanner;
public class Main{
    public static void main(String args[]){
        Scanner scan=new Scanner(System.in);
       while(scan.hasNext()){
        int n=scan.nextInt();
        String res[][]=new String[n][n];
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
            res[i][j]=" ";
        }
        }
        for(int i=0;i<n;i++){
            res[i][i]="*";
            res[i][n-1-i]="*";
        }
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
            System.out.print(res[i][j]);
        }
            System.out.println();
        }
       }
    }
}
这道题需要点耐心
发表于 2021-01-05 17:21:25 回复(0)
做一道题=做三道题
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        while (input.hasNext()) {
            int n = input.nextInt();
            for(int i=0;i<n;i++){
                for(int j=0;j<n;j++){
                    if(j==n-i-1||j==i) System.out.print("*");
                    else System.out.print(" ");
                }
                System.out.println("");
            }
        }
    }
}


发表于 2020-10-30 22:03:20 回复(0)
import java.util.Collections;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int n = sc.nextInt();
            boolean flag = true;
            String str = String.join("",Collections.nCopies(n," "));
            for (int i = 0; i < n; i++) {
                char[] temp = str.toCharArray();
                temp[i] = '*';
                temp[n-i-1] = '*';
                System.out.println(new String(temp));
            }
        }
    }
}

发表于 2020-09-22 20:21:55 回复(0)
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int num=sc.nextInt();
        for(int i=1;i<=num;i++){
            for(int j=1;j<=num;j++){
                if(j==i||j==num-i+1){
                    System.out.print("*");
                }else{
                    System.out.print(" ");
                }
                
            }
            System.out.print("\n");
        }
        }
    }
}
发表于 2020-09-14 21:23:11 回复(0)

问题信息

上传者:牛客309119号
难度:
17条回答 3066浏览

热门推荐

通过挑战的用户

查看代码