UVA272 TeX Quotes

问题描述:

将字符串中的前引号变成`` , 后引号变成''。

 

输入:

多行输入,并且保证输入的引号成对出现

输出:

转变后的字符串,逐行输出

 

解题思路:

逐字符遍历,利用标记判断前引号和后引号

 

 

AC:

#include "cstdio"


int main(int argc, char const *argv[])
{
    bool flag = true;
    char c;

    while((c = getchar()) != EOF)
    {
        if(c == '"')
        {
            if(flag) printf("``");
            else printf("''");
            flag = !flag;
        }
        else
        {
            printf("%c", c);
        }
    }
    return 0;
}

 

 

一种错误的代码:

#include "cstdio"
#include "iostream"
#include "cstring"

using namespace std;

const int MAX_N = 100000;
char s[MAX_N];

int main(int argc, char const *argv[])
{
    while(scanf("%s", s) != EOF)
    {
        bool flag = true;
        int len = strlen(s);

        for(int i = 0; i < len; i++)
        {
            if(s[i] == '"')
            {
                if(flag) printf("``");
                else printf("''");

                flag = !flag;
            }
            else
            {
                printf("%c", s[i]);
            }
        }
    }
    return 0;
}

由于scanf("%s")无法读取换行符,所以不能采用这种方式,只能逐字符读取。

 

 

 

总结:

此题简单,但需要注意输入的方式,避免格式错误。

posted @ 2015-11-30 20:44  小图书馆  阅读(59)  评论(0)    收藏  举报