C++:输入一个数n; 输出的是一个有*和#构成的n*n的正方形; 一圈套一圈~~~~

输入一个数n; 输出的是一个有*和#构成的n*n的正方形; 一圈套一圈~~~~蛮漂亮的,下面看看怎么实现。。找规律是重点,,这是个高度对称的图形,所以要充分利用对称性,尽量少的循环人工赋值,多采用数组复制数值。。。更好想~~~~
#include
using namespace std;

int main(){
    int n;
    while(cin>>n){
        char x[n][n];
        for(int i=1;i<=(n+1)/2;i++){
            if(i%2==1){
                for(int j=i;j<=(n+1)/2;j++){
                    x[j][i]='*';
                    x[i][j]='*';
                }
            }
            if(i%2==0){
                for(int j=i;j<=(n+1)/2;j++){
                    x[j][i]='#';
                    x[i][j]='#';
                }

            }
        }//把左上角四分之一的小正方形画出来,其他的都对称就行!!
        for(int i=1;i<=(n+1)/2;i++){
            for(int j=(n+1)/2+1;j<=n;j++){
                x[j][i]=x[n-j+1][i];
            }
        }//右上角四分之一;
        for(int i=1;i<=n;i++){
            for(int j=(n+1)/2+1;j<=n;j++){
                x[i][j]=x[i][n-j+1];
            }
        }//下面一半
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                if(j!=n){
                    cout<


你可能感兴趣的:(C++:输入一个数n; 输出的是一个有*和#构成的n*n的正方形; 一圈套一圈~~~~)