美丽的字符正方形FINAL

输入一个长度不超过50的由小字字母构成的字符串,输出由这个字符序列构成的最大的正方形。

输入格式:
由小写字母构成的一个字符串。
输出格式:
将字符串围成最大可能的正方形输出,字符串从正方形的左上方开始,按顺时针方向绕行。

输入样例1:

 

a

 

 输出样例1:

 

a

 

 输入样例2:

happy

输出样例2:

ha
pp

输入样例3:

abcdefghijklmn

输出样例3:

abcd
l  e
k  f
jihg

(摘自pintia.cn)

 

 

解答:

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 int main()
 5 {
 6     string str;                    //输入的字符串
 7     int side,row(1);            //side是边长,row是第几行
 8     cin>>str;                    //输入字符串
 9     side=str.length()/4+1;        //计算边长
10     for(int i(0);i<side;i++)    //输出第一行,长度为side
11         cout<<str[i];
12     if(side>1)                    //如果行数大于1
13     {
14         cout<<endl;
15         for(;row<side-1;row++)    //输出剩余side-2行,不包括最后一行
16         {
17             cout<<str[(side-1)*4-row];
18             for(int k(0);k<side-2;k++)
19                 cout<<' ';
20             cout<<str[(side-1)+row]<<endl;
21         }
22         for(int i(0);i<side;i++)    //输出最后一行
23             cout<<str[(side-1)*3-i];
24     }
25     return 0;
26 }

解析:

  见代码注释。

  std::ends和‘ ’的输出不同,std::ends的输出结果为‘\0’,虽然输出的样式相同,但是不是同一个字符。

转载于:https://www.cnblogs.com/wzzdeblog/p/10615324.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值