#include<iostream> using namespace std; // 因为n最大不超过30,足够用 char a[150][150]; void hua(int m,int temp){ int up=temp+3; int x1,y1,x2,y2,x3,y3,x4,y4; // 向上画 for(int i=0;i<up;i++){ x1=m-i; y1=m-4-temp; a[x1][y1]='$'; } // 向右画 for(int i=1;i<3;i++){ x2=x1; y2=y1+i; a[x2][y2]='$'; } // 向上画 for(int i=1;i<3;i++){ x3=x2-i; y3=y2; a[x3][y2]='$'; } //向右画 int right=temp+2; for(int i=1;i<=right;i++){ x4=x3; y4=y3+i; a[x4][y4]='$'; } } int main() { int n; cin>>n; // 全部打印“.” // 边长:中间十字+两边各2*n int r=5+n*4; // 中心位置横纵坐标 int m=r/2; for(int i=0;i<r;i++){ for(int j=0;j<r;j++){ a[i][j]='.'; } } // 打印中间十字左上角 for(int i=0;i<3;i++){ a[m][m-i]='$'; a[m-i][m]='$'; } // 画出全图左上角 int temp=0; while(n--){ hua(m,temp); temp=temp+2; } // 上下对称 for(int i=1;i<=m;i++){ for(int j=0;j<r;j++){ a[m+i][j]=a[m-i][j]; } } // 左右对称 for(int i=0;i<r;i++){ for(int j=0;j<m;j++){ a[i][r-j-1]=a[i][j]; } } // 输出 for(int i=0;i<r;i++){ for(int j=0;j<r;j++){ cout<<a[i][j]; } cout<<endl; } return 0; }
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:1486 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:603 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:686 |
回文数字 (C语言代码)浏览:2539 |
简单的a+b (C语言代码)浏览:572 |
排序算法(选择,插入,冒泡)浏览:876 |
C语言训练-8除不尽的数 (C语言代码)浏览:1469 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:461 |
逆反的01串 (C语言代码)浏览:1528 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:526 |