前几天看到一个题目,今天拿来做做,挺经典,拿出来与大家分享。大牛们看了别见/* 文件名:矩阵问题 创建:xtayaitak 于2010.9.8 功能:显示如下矩阵。 TTTTTTTTTTTTTTT TJJJJJJJJJJJJJT TJ11111111111JT TJ12222222221JT TJ12333333321JT TJ12344444321JT TJ12345554321JT TJ12345654321JT TJ12345554321JT TJ12344444321JT TJ12333333321JT TJ12222222221JT TJ11111111111JT TTTTTTTTTTTTTTT 思路:由图中可以看出,整幅矩阵由外向内每一圈都相同,因此可以由外由内一一赋值,在赋值的时候可以利用循环提高效率。 */ #include <iostream> using namespace std; #define N 15 //这种 矩阵 只支持N为奇数。 int main() { char a[N][N]; //定义矩阵 int i,j; int m=0,n=N-1; for(j=m;j<=n;j++) //给最外一圈 T 赋值。 { a[m][j]='T'; a[n][j]='T'; } for(i=m;i<=n;i++) { a[i][m]='T'; a[i][n]='T'; } m++;n--; for(j=m;j<=n;j++) //给第二圈 J 赋值 { a[m][j]='J'; a[n][j]='J'; } for(i=m;i<=n;i++) { a[i][m]='J'; a[i][n]='J'; } m++;n--; char temp='1'; while(m!=N/2+1) //利用循环 由外向内赋值。 { for(j=m;j<=n;j++) { a[m][j]=temp; a[n][j]=temp; } for(i=m;i<=n;i++) { a[i][m]=temp; a[i][n]=temp; } m++;n--;temp++; } for(i=0;i<N;i++) //显示矩阵 for(j=0;j<N;j++) { cout<<a[i][j]; if(j==(N-1)) { cout<<endl; } } return 0; } 笑哦。!题目是这样的:打印一个 N*N 的方阵,N为每边N=15打印出下面图形,把N的数字设置大一点打印出来有点让人晕~