1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 画十字

画十字

时间:2024-04-26 14:12:15

相关推荐

画十字

用$画十字

画出下面的图形:

与前面的用*画回型类似,思路都是画出组成图形每条边,组合成完整的图形,只是十字形更复杂而已,组成边数较多,总体思路是开一个合适的二维数组,把对应的位置赋值为$即可。先画十字最外边的一层,最难的是找准每条边的起始位置以及每条边的长度。

如下图所示:

图中所画的几条边是变化的,可以看出每一层都比最外层少4。

这个图中的几条短边是不变的,固定为3。

所以,画长边和短边的程序除了长度不同其他都是一样的。

每条边的起始位置也比较好找,最外层的初始位置为(0,0)。

最里层与其他是不一样的,结束递归的条件也是不一样的,最里层要比最外层提前结束。

编程代码如下:

//.03.29 by 迷糊狐狸import java.util.Scanner;public class MyWork3 {//开一个适当的数组static void h(int n){n = n + 1;char[][] cc = new char[5+4*n][5+4*n];h(cc,0,0,1+4*n);show(cc);}//画加号的每条边,找准起始位置static void h(char[][] cc, int x, int y, int n){if(n<=0)return;draw_x(cc,x,y,n);draw_x(cc,x,y+n-1,n);draw_y(cc,x,y,n);draw_y(cc,x+n-1,y,n);if(n<2)return;draw_y2(cc,x+2,y,3);draw_y2(cc,x+n-3,y,3);draw_x2(cc,x,y+2,3);draw_x2(cc,x+n-3,y+2,3);draw_x2(cc,x,y+n-3,3);draw_x2(cc,x+n-3,y+n-3,3);draw_y2(cc,x+2,y+n-3,3);draw_y2(cc,x+n-3,y+n-3,3);h(cc,x+2,y+2,n-4);}static void draw_x(char[][] cc, int x, int y, int len){for(int i=2; i<len-2; i++)cc[y][x+i] = '$';}static void draw_y(char[][] cc, int x, int y, int len){for(int i=2; i<len-2; i++)cc[y+i][x] = '$';}static void draw_x2(char[][] cc, int x, int y, int len){for(int i=0; i<len; i++) cc[y][x+i] = '$';}static void draw_y2(char[][] cc, int x, int y, int len){for(int i=0; i<len; i++)cc[y+i][x] = '$';}//显示数组static void show(char[][] cc){for(int i=0; i<cc.length; i++){for(int j=0; j<cc[i].length; j++){System.out.print(cc[i][j]==0? ' ' : cc[i][j]);}System.out.println();}}public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.print("请输入:");while(true){try{int n = Integer.parseInt(scan.nextLine().trim());if(n<1)throw new Exception();h(n);}catch(Exception e){System.out.println("输入有误!");System.out.print("请重新输入:");}}}}

程序输出结果如下:

示例1:

示例2:

示例3:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。