打印一个 N*N 的方阵
打印一个 N*N 的方阵,N为每边 N=15 打印出下面图形
字符的个数(3<N<20), 要求最 TTTTTTTTTTTTTTT
外一层为"T", 第二层为"J", 从第三层 TJJJJJJJJJJJJJT
起每层依次打印数字 1,2,3,... TJ11111111111JT
(右图以N为15为例) TJ12222222221JT
TJ12333333321JT
TJ12344444321JT
TJ12345554321JT
TJ12345654321JT
TJ12345554321JT
TJ12344444321JT
TJ12333333321JT
TJ12222222221JT
TJ11111111111JT
TJJJJJJJJJJJJJT
TTTTTTTTTTTTTTT
用循环打印,不要用swicsh;
问题点数:20、回复次数:4Top
1 楼sinkileu(小心)回复于 2006-06-04 11:47:33 得分 0
下面代码试验成功:
#include <iostream>
#include <iomanip>
using namespace std;
#define N 15
char c[N][N];
int main()
{
for(int i=0; i<N; i++)
for(int j=0; j<N; j++)
{
int temp;
if(i<=j && i+j<=N-1)
temp = i;
else if(i>j && i+j>N-1)
temp = N-1 - i;
else if(i>j && i+j<=N-1)
temp = j;
else
temp = N-1 - j;
if(temp == 0)
c[i][j] = 'T';
else if(temp == 1)
c[i][j] = 'j';
else
c[i][j] = '1' + temp - 2;
}
for(int i=0; i<N; i++)
{
for(int j=0; j<N; j++)
{
cout << setw(5) << c[i][j];
}
cout << endl;
}
}Top
2 楼sinkileu(小心)回复于 2006-06-04 11:50:01 得分 0
把setw(5)改为setw(2)打印出来会更漂亮一点.Top
3 楼SamuelKevin(曼陀罗)回复于 2006-06-09 04:02:50 得分 0
///////////楼上的,不必开数组。。。。。。
#include <stdio.h>
void input_T(int n);
void input_J(int n);
void input_mid(int n);
int main()
{
int N; //N>3
int len; //矩阵中间段的长
int mid;
int i,j;
scanf("%d", &N);
input_T(N);
input_J(N);
input_mid(N-4);
input_J(N);
input_T(N);
return 0;
}
void input_T(int n)
{
int i;
for (i=1; i<=n; i++)
{
putchar('T');
}
putchar('\n');
}
void input_J(int n)
{
int i;
putchar('T');
for (i=2; i<=n-1; i++)
{
putchar('J');
}
putchar('T');
putchar('\n');
}
void input_mid(int n)
{
int i,j,k;
int flag = (n%2==1?1:0);
int mid = (n/2)+flag;
for (i=1; i<=mid; i++) //前面的部分
{
putchar('T');
putchar('J');
for (j=1; j<=i; j++)
{
printf("%d", j);
}
for (k=1; k<=n-2*i; k++)
{
printf("%d", j-1);
}
j = (i==mid?i-flag:i);
while (j>=1)
{
printf("%d", j);
j--;
}
putchar('J');
putchar('T');
putchar('\n');
}
for (i=mid-flag; i>=1; i--)
{
putchar('T');
putchar('J');
for (j=1; j<=i; j++)
{
printf("%d", j);
}
for (k=1; k<=n-2*i; k++)
{
printf("%d", j-1);
}
j = (i==mid?i-flag:i);
while (j>=1)
{
printf("%d", j);
j--;
}
putchar('J');
putchar('T');
putchar('\n');
}
}
Top
4 楼sinkileu(小心)回复于 2006-06-09 22:14:23 得分 0
嗯 , 开数组只是为了看起来更明了.当然可以直接在for中打印.Top




