【每日练习】需要读题的codeforce5B

题目链接贴上,不多赘述

http://codeforces.com/problemset/problem/5/B

这道题首先是要读懂题,搞清楚题目的指示

即 将文本包围在一个符号*组成圈里面,字符串居中放置,若左右空格长度不一致,由上至下依次靠左再靠右交替

同时,在题目进行左右分隔时,不能采用if,而应该采用?:三目运算符,因为从逻辑上讲,是因为左右不同才需要左右交替,而不是因为左右不同且从上至下是第几个才会导致左右交替,这种小逻辑错误可能导致某些行出现左右对不齐的情况

另外,整理一下几个输入的关系

cin              
输入一个数字
接受一个字符串,遇“空格”、“TAB”、“回车”都结束
cin.get()
cin.get(字符变量名)可以用来接收字符
cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格

cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足

cin.getline() 接受一个字符串,可以接收空格并输出,属于istream流
getline() 接受一个字符串,可以接收空格并输出,需包含“#include”,getline()属于string流

 

除此之外

注意size()和length()两个函数的区别,牢记这两个函数有着不同的值

面对死循环时

Windows用Ctrl+z强制停止并调试

Linux用Ctrl+D

最后,贴代码

#include
using namespace std;
const int maxn=1005;

void outch(int n,char c)  //控制输出字符或空格个数
{
    while(n--)
    {
        cout<longest)
        {
            longest=str[cnt].length();
        }
        cnt++;
    }

    int flag=0; //确定是从上到下第几个,从而决定靠右还是靠左
    int left,right;

    outch(longest+2,'*');
    cout<

参考引用

https://blog.csdn.net/aholic/article/details/25920733

https://www.cnblogs.com/luolizhi/p/5746775.html

你可能感兴趣的:(数据结构与算法)