TOJ_1001解题报告
来源:互联网 发布:java状态机配置 编辑:程序博客网 时间:2024/05/22 08:25
排版题.输出排列成菱形的字母
Problem
输入N值,编程输出如下图形。
Input
一个整数N(1<=N<=7)。
Output
排列成菱形的大写字符,首字符为Z,以后依次为Y,X...
Sample Input
3
Sample Output
Z Y X W V U T S=============================================
分析:
我初步的思路:因为要输出的菱形是上下对称的,因此只需要考虑图形的上半部分,并且将上半部分中特殊的第一行和中间的一行单独考虑,其他行一起考虑。
代码如下:
//////////////////////
////1001.cpp
/////////////////////
#include <stdio.h>
char c='Z';
int n;
void printLineOne(int t)
{
int i;
for(i=1;i<=(t-1)*2;i++)
printf(" ");
printf("%c/n",c);
c=c-1;
}
void printMiddleLine(int t)
{
int i;
printf("%c",c);
c=c-1;
for(i=1;i<=t*4-5;i++)
printf(" ");
printf("%c/n",c);
c=c-1;
}
void printOtherLine(int t)
{
int i;
for(i=1;i<=(n-t)*2;i++)
printf(" ");
printf("%c",c);
c=c-1;
for(i=1;i<=t*4-5;i++)
printf(" ");
printf("%c/n",c);
c=c-1;
}
int main()
{
int i;
scanf("%d",&n);
if(n==1)
{
printf("Z/n");
}
else
{
printLineOne(n);
for(i=2;i<=n-1;i++)
{
printOtherLine(i);
}
printMiddleLine(n);
for(i=n-1;i>1;i--)
{
printOtherLine(i);
}
printLineOne(n);
}
return 0;
}
////1001.cpp
/////////////////////
#include <stdio.h>
char c='Z';
int n;
void printLineOne(int t)
{
int i;
for(i=1;i<=(t-1)*2;i++)
printf(" ");
printf("%c/n",c);
c=c-1;
}
void printMiddleLine(int t)
{
int i;
printf("%c",c);
c=c-1;
for(i=1;i<=t*4-5;i++)
printf(" ");
printf("%c/n",c);
c=c-1;
}
void printOtherLine(int t)
{
int i;
for(i=1;i<=(n-t)*2;i++)
printf(" ");
printf("%c",c);
c=c-1;
for(i=1;i<=t*4-5;i++)
printf(" ");
printf("%c/n",c);
c=c-1;
}
int main()
{
int i;
scanf("%d",&n);
if(n==1)
{
printf("Z/n");
}
else
{
printLineOne(n);
for(i=2;i<=n-1;i++)
{
printOtherLine(i);
}
printMiddleLine(n);
for(i=n-1;i>1;i--)
{
printOtherLine(i);
}
printLineOne(n);
}
return 0;
}
再仔细分析各行的特点之后,发现其实不用把第一行和中间行独立出来,而是可以综合各行一起考虑的。
代码如下:
//////////////////////
////1001.cpp
/////////////////////
#include <stdio.h>
char ch='Z';
int n;
void printLine(int t)
{
int i;
for(i=1;i<=(n-t)*2;i++)
{
printf(" ");
}
printf("%c",ch);
ch=ch-1;
if(t==1)
{
printf("/n");
return;
}
else
{
for(i=1;i<=t*4-5;i++)
{
printf(" ");
}
printf("%c/n",ch);
ch=ch-1;
}
}
int main()
{
scanf("%d",&n);
int i;
if(n==1)
{
printf("Z/n");
}
else
{
for(i=1;i<=n;i++)
{
printLine(i);
}
for(i=n-1;i>=1;i--)
{
printLine(i);
}
}
return 0;
}
////1001.cpp
/////////////////////
#include <stdio.h>
char ch='Z';
int n;
void printLine(int t)
{
int i;
for(i=1;i<=(n-t)*2;i++)
{
printf(" ");
}
printf("%c",ch);
ch=ch-1;
if(t==1)
{
printf("/n");
return;
}
else
{
for(i=1;i<=t*4-5;i++)
{
printf(" ");
}
printf("%c/n",ch);
ch=ch-1;
}
}
int main()
{
scanf("%d",&n);
int i;
if(n==1)
{
printf("Z/n");
}
else
{
for(i=1;i<=n;i++)
{
printLine(i);
}
for(i=n-1;i>=1;i--)
{
printLine(i);
}
}
return 0;
}
- TOJ_1001解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- Antiprime解题报告
- expr解题报告
- 华容道解题报告
- tju解题报告
- zju1062/pku1095解题报告
- UsacoGate解题报告 --- 序曲
- ZJU 2060 解题报告
- ZJU 1331 解题报告
- ZJU 1115 解题报告
- ZJU1057解题报告
- 《Java编程思想》读书笔记(12)
- [转]最长递增子序列问题的求解
- TOJ_1003题解
- 《Java编程思想》读书笔记(11)
- TOJ_1002解题报告
- TOJ_1001解题报告
- 《Java编程思想》读书笔记(10)
- 《Java编程思想》读书笔记(9)
- 《Java编程思想》读书笔记(8)
- 《Java编程思想》读书笔记(7)
- Java开发环境搭建全过程(下)
- 《高质量java程序设计》读书笔记之----异常处理(1)
- Java开发环境搭建全过程(上)
- 《Java编程思想》读书笔记(6)