排版题.输出排列成菱形的字母Problem输入N值,编程输出如下图形。 Input一个整数N(1<=N<=7)。 Output排列成菱形的大写字符,首字符为Z,以后依次为Y,X... Sample Input3
Sample Output Z
Y X
W V
U T
S
=============================================分析: 我初步的思路:因为要输出的菱形是上下对称的,因此只需要考虑图形的上半部分,并且将上半部分中特殊的第一行和中间的一行单独考虑,其他行一起考虑。 代码如下: //////////////////////
////1001.cpp ///////////////////// #include<stdio.h> charc='Z'; intn;![]() voidprintLineOne(intt)![]() ![]() { inti; for(i=1;i<=(t-1)*2;i++) printf(""); printf("%c/n",c); c=c-1; }![]() voidprintMiddleLine(intt)![]() ![]() { inti; printf("%c",c); c=c-1; for(i=1;i<=t*4-5;i++) printf(""); printf("%c/n",c); c=c-1; }![]() voidprintOtherLine(intt)![]() ![]() { inti; 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; }![]() intmain()![]() ![]() { inti; 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); } return0; }![]()
再仔细分析各行的特点之后,发现其实不用把第一行和中间行独立出来,而是可以综合各行一起考虑的。 代码如下: ![]() /**/////////////////////// ////1001.cpp ///////////////////// #include<stdio.h>![]() charch='Z'; intn;![]() voidprintLine(intt)![]() ![]() { inti; 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; } }![]() ![]() intmain()![]() ![]() { scanf("%d",&n); inti; if(n==1)![]() ![]() { printf("Z/n"); } else![]() ![]() { for(i=1;i<=n;i++)![]() ![]() { printLine(i); } for(i=n-1;i>=1;i--)![]() ![]() { printLine(i); } } return0; }
|
TOJ_1001解题报告
最新推荐文章于 2021-01-12 17:03:50 发布





}

}
548

被折叠的 条评论
为什么被折叠?



