第一次想到的是数组来表示,
//打印菱形 #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; } } }
优化后不需要数组
//打印菱形 不需要数组 #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; } }