输出菱形

第一次想到的是数组来表示,

//打印菱形 
#include<iostream>
#include<cstring>
using namespace std;
int  map[50][50];
int main()
{
int n;
while(cin>>n){
    memset(map,0,sizeof(map));
    if(n%2==0){
        cout<<"重新输入"<<endl;
        continue;
    }
    int t=n/2+1;
    int x=1+n;
    int y=n/2+1;
    t++;
    for(int i=1;i<=y;i++){
        t--;
        cout<<"t=="<<t<<endl;
        map[i][t]=map[i][x-t]=1;
    }
    t=1;
//     y=1;
    for(int i=y+1;i<=n;i++){
        t++;
        map[i][t]=map[i][x-t]=1;
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++)
    if(map[i][j])  cout<<"x";else cout<<" ";
        cout<<endl;
    } 
}
    
} 
View Code

优化后不需要数组

//打印菱形 不需要数组 
#include<iostream>
#include<cstring>
using namespace std;
int  map[50][50];
int main()
{
int n;
cin>>n; 
int x=n+1;
int t=n/2+1;//作为中点不动
int y=t,i,j;//变化y  t...1
y++;
for(i=1;i<=t;i++){
    y--;
    for(j=1;j<=n;j++){
        if(j==y||j==(x-y)) cout<<"x";
        else cout<<" ";
    }
//    System.out.println();
cout<<endl;
}
y=1;
for(i=t+1;i<=n;i++){
    y++;
    for(j=1;j<=n;j++){
        if(j==y||j==x-y) cout<<"x";
        else  cout<<" ";
    }
//    System.out.println();
cout<<endl;
}
    }
    
View Code

 

posted @ 2019-03-16 17:17  Hello_World2020  阅读(118)  评论(0编辑  收藏  举报