您的位置:首页 > 其它

打印一个字符矩阵

2008-11-19 13:53 225 查看
/*
打印一个 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");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐