美文网首页
2015年Java方向C组第九题

2015年Java方向C组第九题

作者: D丝学编程 | 来源:发表于2021-03-03 09:33 被阅读0次

    标题:打印大X

    小明希望用星号拼凑,打印出一个大X,他要求能够控制笔画的宽度和整个字的高度。

    为了便于比对空格,所有的空白位置都以句点符来代替。

    要求输入两个整数m n,表示笔的宽度,X的高度。用空格分开(0<m<n, 3<n<1000, 保证n是奇数)

    要求输出一个大X

    例如,用户输入:
    3 9
    程序应该输出:
    ***.....***
    .***...***.
    ..***.***..
    ...*****...
    ....***....
    ...*****...
    ..***.***..
    .***...***.
    ***.....***
    
    再例如,用户输入:
    4 21
    程序应该输出
    ****................****
    .****..............****.
    ..****............****..
    ...****..........****...
    ....****........****....
    .....****......****.....
    ......****....****......
    .......****..****.......
    ........********........
    .........******.........
    ..........****..........
    .........******.........
    ........********........
    .......****..****.......
    ......****....****......
    .....****......****.....
    ....****........****....
    ...****..........****...
    ..****............****..
    .****..............****.
    ****................****
    

    解析:

    (1)将整个图形看成一个矩阵,根据最中间一行得知矩阵的宽度为= n/2*2+m,高度为n

    (2)定义二维数组表示矩阵,数组元素内容全部设置为(.)。

    (3)根据规则将特定部分的(.)替换成(*)。

    Scanner input = new Scanner(System.in);
    int m = input.nextInt();  //笔的宽度
    int n = input.nextInt();    //矩阵的高度
    //根据最中间一行得知矩阵的宽度为= n/2*2+m,高度为n
    char[][] arr = new char[n][n/2*2+m];    
    //将二维数组元素全部设置为 .
    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {
            arr[i][j] = '.';
        }
    }
    //替换X图形内容为*号
    for (int i = 0; i < n; i++) {
        //将X图形从左向右的第一笔中的点替换成星号
        //当前行从左向右进行替换(起始位置为行号i)
        for (int j = i; j < i+m; j++) {
            arr[i][j] = '*';
        }
        //将X图形从右向左的第一笔中的点替换成星号
        //当前行从右向左进行替换(起始位置为矩阵宽度-1-行号i)
        for (int j = n/2*2+m-1-i; j > n/2*2+m-1-i-m; j--) {
            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();
    }
    

    相关文章

      网友评论

          本文标题:2015年Java方向C组第九题

          本文链接:https://www.haomeiwen.com/subject/ywzlxltx.html