例题2.5叠筐
#include<iostream>
using namespace std;
int main()
{
int n;
char x,y;
while(cin>>n>>x>>y)
{
char m[n+1][n+1];
m[(n+1)/2][(n+1)/2]=x; //最中间的
for(int i=1;i<=(n-1)/2;i++)//一共有几圈 (不算最中间)
{
char z;//当前圈该输出哪个字符
if(i%2==0)z=x;
else z=y;
m[(n+1)/2-i][(n+1)/2-i]=z;//左上角
for(int j=1;j<=2*i;j++)
{
m[(n+1)/2-i][(n+1)/2-i+j]=z;
m[(n+1)/2-i+j][(n+1)/2-i]=z;
}
for(int j=1;j<=2*i-1;j++)
{
m[(n+1)/2+i][(n+1)/2+i-j]=z;
m[(n+1)/2+i-j][(n+1)/2+i]=z;
}
m[(n+1)/2+i][(n+1)/2+i]=z;//右下角
}
m[1][1]=' ';
m[1][n]=' ';
m[n][1]=' ';
m[n][n]=' ';
for(int k=1;k<=n;k++)
{
for(int p=1;p<=n;p++)
{
cout<<m[k][p];
}
cout<<endl;
}
cout<<endl;
}
return 0;
}
//首先从里到外按照圈层的规律输出
//其次把每一圈分为4部分:左上、右下、左半圈、右半圈
//最后更改最外圈的4个角为空字符
using namespace std;
int main()
{
int n;
char x,y;
while(cin>>n>>x>>y)
{
char m[n+1][n+1];
m[(n+1)/2][(n+1)/2]=x; //最中间的
for(int i=1;i<=(n-1)/2;i++)//一共有几圈 (不算最中间)
{
char z;//当前圈该输出哪个字符
if(i%2==0)z=x;
else z=y;
m[(n+1)/2-i][(n+1)/2-i]=z;//左上角
for(int j=1;j<=2*i;j++)
{
m[(n+1)/2-i][(n+1)/2-i+j]=z;
m[(n+1)/2-i+j][(n+1)/2-i]=z;
}
for(int j=1;j<=2*i-1;j++)
{
m[(n+1)/2+i][(n+1)/2+i-j]=z;
m[(n+1)/2+i-j][(n+1)/2+i]=z;
}
m[(n+1)/2+i][(n+1)/2+i]=z;//右下角
}
m[1][1]=' ';
m[1][n]=' ';
m[n][1]=' ';
m[n][n]=' ';
for(int k=1;k<=n;k++)
{
for(int p=1;p<=n;p++)
{
cout<<m[k][p];
}
cout<<endl;
}
cout<<endl;
}
return 0;
}
//首先从里到外按照圈层的规律输出
//其次把每一圈分为4部分:左上、右下、左半圈、右半圈
//最后更改最外圈的4个角为空字符
全部评论
相关推荐
06-02 15:17
门头沟学院 Java 点赞 评论 收藏
分享