/*
3. 打印一个 N*N 的方阵,N为每边
字符的个数(3<N<20), 要求最
外一层为\"T\", 第二层为\"J\", 从第三层
起每层依次打印数字 1,2,3,...
*/
#include <iostream.h>
#define MAX 22int main()
{
int i=0,j=0,m=1,n=3;
char charr[MAX][MAX];
char ch1='T';
char ch2='J';
//char tmp[2];for(i=0;i<MAX-1;i++)
for(j=0;j<MAX-1;j++)
charr[i][j]='a';cout<<\"输入N的值:\";
cin>>n;
int a=0,b=n-1,c=n-1,d=0;
bool bo=false;while(m<=(n-4)/2+1)
{
for(i=0;i<n;i++)
{
if(a==0)
{
if(charr[a][i]=='a')
charr[a][i]=ch1;
continue;
}
if(a==1)
{
if(charr[a][i]=='a')
charr[a][i]=ch2;
continue;
}
if(charr[a][i]=='a')
charr[a][i]=(char)m+(char)48;
}
for(i=0;i<n;i++)
{
if(b==n-1)
{
if(charr[i][b]=='a')
charr[i][b]=ch1;
continue;
}
if(b==n-2)
{
if(charr[i][b]=='a')
charr[i][b]=ch2;
continue;
}
if(charr[i][b]=='a')
charr[i][b]=(char)m+(char)48;
}
for(i=n-1;i>=0;i--)
{
if(c==n-1)
{
if(charr[c][i]=='a')
charr[c][i]=ch1;
continue;
}
if(c==n-2)
{
if(charr[c][i]=='a')
charr[c][i]=ch2;
continue;
}
if(charr[c][i]=='a')
charr[c][i]=(char)m+(char)48;
}
for(i=n-1;i>=0;i--)
{
if(d==0)
{
if(charr[i][d]=='a')
charr[i][d]=ch1;
continue;
}
if(d==1)
{
if(charr[i][d]=='a')
charr[i][d]=ch2;
continue;
}
if(charr[i][d]=='a')
charr[i][d]=(char)m+(char)48;
bo=true;
}a++;d++;c--;b--;
if(bo==true)
m++;
}for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
cout<<charr[i][j]<<' ';
cout<<endl;
}
return 0;
}
[此贴子已经被作者于2007-6-27 21:38:23编辑过]
Viva,espana!