一个简单的数组练习,没做成函数,简单的实现了目的,效果图如下 :
代码如下 :
# include <iostream>
using namespace std ;
int main ()
{
int n;
int i , j ;
do
{
cout << "请输入n (n>3 && n<20)" ;
cin >> n ;
}while (n<=3||n>=20) ;
char array [19][19] ;
for (j=0;j<19;j++) //第一行的显示
{
if (j<n)
array[0][j] = 'T' ;
else
array[0][j] = 32 ;
}
for (j=0;j<19;j++) //最后一行的显示
{
if (j<n)
array[n-1][j] = 'T' ;
else
array[n-1][j] = 32 ;
}
for (i=0; i<19; i++)
{
for ( j=0; j<19;j++)
{
// n 行 以下 全是空格
if (i>=n)
array[i][j] = 32;
// 两边的显示 为 TJ JT
if(i>0 && i<n-1 )
{
array [i][0] = 'T';
array [i][1] = 'J';
array [i][n-1] = 'T' ;
array [i][n-2] = 'J' ;
}
//第二行和倒数第二行的 J
if (i==1 || i==n-2)
{
array [i][j] = 'J' ;
}
//右边 JT 后 显示空格
if (j>=n)
{
array [i][j] = 32 ;
}
//中间的数字
if (n>4)
{
if ( (i>=2 && i <= n-3 )&&(j==n-3 || j==2))
array[i][j]='1' ;
if ((i==2 || i==n-3) && (j>2 && j<n-3))
array [i][j] = '1';
}
if (n>5)
{
if (( i >=3 && i <= n -4) && (j==n-4 || j == 3))
array [i][j] = '2' ;
if ((i==3 || i==n-4) && (j>3 && j<n-4))
array [i][j] = '2';
}
if (n>6)
{
if ((i >=4 && i <= n -5) && (j==n-5 || j == 4))
array [i][j] = '3' ;
if ((i==4 || i==n-5) && (j>4 && j<n-5))
array [i][j] = '3';
}
if (n>7)
{
if ((i >=5 && i <= n -6) && (j==n-6 || j == 5))
array [i][j] = '4' ;
if ((i==5 || i==n-6) && (j>5 && j<n-6))
array [i][j] = '4';
}
if (n>8)
{
if ((i >=6 && i <= n -7) && (j==n-7 || j == 6))
array [i][j] = '5' ;
if ((i==6 || i==n-7) && (j>6 && j<n-7))
array [i][j] = '5';
}
if (n>9)
{
if ((i >=7 && i <= n -8) && (j==n-8 || j == 7))
array [i][j] = '6' ;
if ((i==7 || i==n-8) && (j>7 && j<n-8))
array [i][j] = '6';
}
if (n>10)
{
if ((i >=8 && i <= n -9) && (j==n-9 || j == 8))
array [i][j] = '7' ;
if ((i==8 || i==n-9) && (j>8 && j<n-9))
array [i][j] = '7';
}
if (n>11)
{
if ((i >=9 && i <= n -10) && (j==n-10 || j == 9))
array [i][j] = '8' ;
if ((i==9 || i==n-10) && (j>9 && j<n-10))
array [i][j] = '8';
}
}
}
for (i =0 ; i<19 ;i++)
{
for (j=0;j<19 ;j++)
{
cout << array[i][j] ;
}
cout << endl ;
}
return 0 ;
}
没用到什么高明的东西,
思路就是先编写上下两行的TJ 然后写代码输出周围的1,2,3,4,……,8, 这样写程序是不是有些麻烦,或许有更好的算法。
请各位多多指教