day1---彼得·潘框架---1.15
习题概述
“彼得·潘框架”是一种装饰文字,每一个字母都是由一个菱形框架。一个彼得·潘框架看起来像这样 (x是字母,#是框架):
..#..
.#.#.
#.X.#
.#.#.
..#..
然而,只是一个框架会有些沉闷,所以我们每遇到三个字母会把第三个字母用温迪框架把它框起来。温迪框架看起来像这样:
..*..
.*.*.
*.X.*
.*.*.
..*..
输入:DOG
输出 :
..#...#...*..
.#.#.#.#.*.*.
#.D.#.O.*.G.*
.#.#.#.#.*.*.
..#...#...*..
输入: ABCD
输出:
..#...#...*...#..
.#.#.#.#.*.*.#.#.
#.A.#.B.*.C.*.D.#
.#.#.#.#.*.*.#.#.
..#...#...*...#..
输入格式:一行包含至多15个英文字母的大写字母。
输出格式:输出使用彼得·潘和温迪框架写成的5行文字。
代码部分
#include <bits/stdc++.h>//万能头
using namespace std;
int main(int argc, char** argv)
{
string a,b,c,d;
int e;
cin>>a;
e=a.size();//拆字使用
b=b+".";
c=c+".";
d=d+"#";
for(int i=0;i<e;i++)
{
if((i+1)%3!=0)//彼得潘框架
{
b=b+".#..";
c=c+"#.#.";
if((i+1)%3==2)
{
if(i==e-1)//温迪覆盖彼得潘
d=d+"."+a[i]+".#";
else//彼得潘在最后不会被覆盖
d=d+"."+a[i]+".*";
}
else
d=d+"."+a[i]+".#";
}
else//温迪框架
{
b=b+".*..";
c=c+"*.*.";
d=d+"."+a[i]+".*";
}
}
cout<<b<<endl<<c<<endl<<d<<endl<<c<<endl<<b;//输出
return 0;
}
心得体会
1.记住这个万能头#include <bits/stdc++.h>该头文件包含了大部分标准库的头文件,可以方便地一次性引入多个标准库。
2.用到的循环条件语句
if((i+1)%3!=0)
:如果当前字符不在第 3、6、9 …… 个位置上,则执行以下操作。即根据题目要求,每三个字符为一组,中间的字符在第 3、6、9 …… 个位置上。
if((i+1)%3==2)
:如果当前字符在第 2、5、8 …… 个位置上。
if(i==e-1)
:如果当前字符是字符串的最后一个字符。
PS: a
是一个字符串数组,a[i]
表示取出 a
数组中索引为 i
的元素。
未完待续......