打印一个字符矩阵

/*
打印一个 N*N 的方阵,N为每边                   

字符的个数(3<N<20), 要求最              
外一层为"T", 第二层为"J", 从第三层              
起每层依次打印数字 1,2,3,...                    

(下图以N为15为例)                          

N=15  打印出下面图形
TTTTTTTTTTTTTTT

TJJJJJJJJJJJJJT

TJ11111111111JT
TJ12222222221JT
TJ12333333321JT
TJ12344444321JT
TJ12345554321JT
TJ12345654321JT
TJ12345554321JT
TJ12344444321JT
TJ12333333321JT
TJ12222222221JT
TJ11111111111JT
TJJJJJJJJJJJJJT
TTTTTTTTTTTTTTT

*/

void printMatrix(int n)
{
 int i = 0, j = 0, indexi = 0, indexj = 0;
 char arr[] = {'T','J','1','2','3','4','5','6','7','8'};

 if(n < 3)
 {
  cout << "n must be great than 3" << endl;
  return;
 }

 for(i = 0; i < n;i++)
 {
  indexi = i;
  if(i >= (n >> 1 )) //Here must be not less than
   indexi = n - i - 1; //Here must minus 1
  for(j = 0; j < n; j++)
  {
   indexj = j;
   if(j >= (n >> 1))//Here must be not less than
    indexj = n - j - 1;//Here must minus 1

   if(indexj > indexi)
    indexj = indexi;
   cout << arr[indexj];
  }
  cout << endl;
 }
}

void TestPrintMatrix()
{
 int i = 4;
 cout << endl;
 for(i = 4; i < 20; i++)
 {
  cout << "N = " << i << endl;
  printMatrix(i);
  system("pause");
 }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值