分类：电脑/网络-程序设计-C/C++
问题：打印一个N*N的方阵，N为每边字符的个数（3〈N〈20），要求最 
N为每边字符的个数（ 3〈N〈20 ），要求最外层为"X"，第二层为"Y"，从第三层起每层依次打印数字0，1，2，3，...例子：当N =5，打印出下面的： X X X X X X Y Y Y X X Y 0 Y X X Y Y Y X X X X X X  
回答：#include <tream.h>void main(){  int i, j, n;  cout<<"Input length: ";  cin>>n;  int *buf = new int[n*n];  int *p = buf, count = -2;  for (i=0; i<(n+1)/2; i++, count++)  {    int tmp = n - 2 * i;    for (j=0; j<tmp; j++, p+=n) *p = i==0?'X':(i==1?'Y':count);    for (j=1, p+=1-n; j<tmp; j++, p++) *p = i==0?'X':(i==1?'Y':count);    for (j=1, p+=-1-n; j<tmp; j++, p-=n) *p = i==0?'X':(i==1?'Y':count);    for (j=2, p+=n-1; j<tmp; j++, p--) *p = i==0?'X':(i==1?'Y':count);    p += n + 1;  }  for (i=0, p=buf; i<n; i++, cout<<endl)    for (j=0; j<n; j++, p++)      if (i<2||i>n-3||j<2||j>n-3) cout<<' '<<(char)*p;      else cout<<' '<<*p;  delete[] buf;}