C++入门必做题 答案 03
2010-04-17 13:12
218 查看
小提示:部分题目的图形有偏移现象;解决办法为,将题目拷贝到记事本,字体设置为‘Fixedsys’。
(编译环境:windowsXP_sp3 + Visual_C++_2008,保证编译成功,正常运行。)
3. 打印一个 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
代码如下:
#include<iostream>
using namespace::std;
void main()
{
int N; //声明数组的维数
char **a; //声明一个二维数组指针
while(1)
{
cout<<"请输入每边的个数(N)"<<endl;
cin>>N;
cin.clear();
cin.sync();
if(N<=3)
{
cout<<"输入无效,请重新输入"<<"/n";
}
else
{
break;
}
}
/*
用户输入N值后,我们要动态生成数组a
*/
a = new char *
;
for(int i=0;i<N;i++)
a[i] = new char
;
int T = N-1, J = N-2; //定义最外层与第二层的维数T和J
char x = 'T';
char y = 'J';
/*
打印最外面一圈的‘T’
*/
for(int i=0;i<=T;i++)
{
a[i][0]=x;
a[i][T]=x;
}
for(int j=0;j<=T;j++)
{
a[0][j]=x;
a[T][j]=x;
}
/*
打印外数第二圈的‘J’
*/
for(int i=1;i<=J;i++)
{
a[i][1]=y;
a[i][J]=y;
}
for(int j=1;j<=J;j++)
{
a[1][j]=y;
a[J][j]=y;
}
char k='0';
int p=1, q=J;
while(p<=q)
{
p++;q--;k++;
for(int i=p;i<=q;i++)
{
a[i][p]=k;
a[i][q]=k;
}
for(int j=p;j<=q;j++)
{
a[p][j]=k;
a[q][j]=k;
}
}
/*
打印计算结果
*/
for(int i=0;i<N;i++)
{
cout<<endl;
for(int j=0;j<N;j++)
cout<<a[i][j];
}
cout<<endl<<endl;
system("pause");
}
(编译环境:windowsXP_sp3 + Visual_C++_2008,保证编译成功,正常运行。)
3. 打印一个 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
代码如下:
#include<iostream>
using namespace::std;
void main()
{
int N; //声明数组的维数
char **a; //声明一个二维数组指针
while(1)
{
cout<<"请输入每边的个数(N)"<<endl;
cin>>N;
cin.clear();
cin.sync();
if(N<=3)
{
cout<<"输入无效,请重新输入"<<"/n";
}
else
{
break;
}
}
/*
用户输入N值后,我们要动态生成数组a
*/
a = new char *
;
for(int i=0;i<N;i++)
a[i] = new char
;
int T = N-1, J = N-2; //定义最外层与第二层的维数T和J
char x = 'T';
char y = 'J';
/*
打印最外面一圈的‘T’
*/
for(int i=0;i<=T;i++)
{
a[i][0]=x;
a[i][T]=x;
}
for(int j=0;j<=T;j++)
{
a[0][j]=x;
a[T][j]=x;
}
/*
打印外数第二圈的‘J’
*/
for(int i=1;i<=J;i++)
{
a[i][1]=y;
a[i][J]=y;
}
for(int j=1;j<=J;j++)
{
a[1][j]=y;
a[J][j]=y;
}
char k='0';
int p=1, q=J;
while(p<=q)
{
p++;q--;k++;
for(int i=p;i<=q;i++)
{
a[i][p]=k;
a[i][q]=k;
}
for(int j=p;j<=q;j++)
{
a[p][j]=k;
a[q][j]=k;
}
}
/*
打印计算结果
*/
for(int i=0;i<N;i++)
{
cout<<endl;
for(int j=0;j<N;j++)
cout<<a[i][j];
}
cout<<endl<<endl;
system("pause");
}
相关文章推荐
- C++入门必做题 答案 02
- C++入门必做题 答案 10
- C++入门必做题 答案 04
- C++入门必做题 答案 11
- C++入门必做题 答案 05
- c++入门必做题答案
- C++入门必做题 答案 12
- C++入门必做题 答案 06
- C++入门必做题 答案 14
- C++入门必做题 答案 07
- C++入门必做题 答案 13
- C++入门必做题 答案 08
- C++入门必做题 答案 01
- C++入门必做题 答案 09
- 从一个小程序说起2 - C++快速入门03
- 从一个小程序说起2 - C++快速入门03
- C++入门必做题(经典的算法题)
- 算法竞赛入门经典课后习题答案:第一章(C++解法)
- C++入门篇03
- 蓝桥杯练习系统试题集(一)--入门练习(含C/C++答案)