首页 > 代码库 > Problem 001——Tex Quotes

Problem 001——Tex Quotes

Problem 001
 TeXQuotes
 

TeX is a typesetting language developed by Donald Knuth. Ittakes source text together with a few typesetting instructions andproduces, one hopes, a beautiful document. Beautiful documents use`` and " to delimit quotations, rather than the mundane "which is what is provided by most keyboards. Keyboards typically donot have an oriented double-quote, but they do have aleft-single-quote ` and a right-single-quote .Check your keyboard now to locate the left-single-quote key` (sometimes called the ``backquote key") and theright-single-quote key (sometimes called the``apostrophe" or just ``quote"). Be careful not to confuse theleft-single-quote ` with the ``backslash" key\. TeX lets the user type two left-single-quotes`` to create a left-double-quote `` and tworight-single-quotes ‘‘ to create a right-double-quote ‘‘.Most typists, however, are accustomed to delimiting theirquotations with the un-oriented double-quote ".

If the source contained

"To be or not to be," quoth the bard, "that is thequestion."

then the typeset document produced by TeX would not contain thedesired form:

``To be or not to be," quoth the bard, ``that is thequestion."

In order to produce the desired form, the source file mustcontain the sequence:

``To be or not to be,‘‘ quoth the bard, ``that is thequestion.‘‘

You are to write a program which converts text containingdouble-quote (") characters into text that is identicalexcept that double-quotes have been replaced by the two-charactersequences required by TeX for delimiting quotations with orienteddouble-quotes. The double-quote (") characters should bereplaced appropriately by either `` if the "opens a quotation and by ‘‘ if the " closes aquotation. Notice that the question of nested quotations does notarise: The first " must be replaced by ``, thenext by ‘‘, the next by ``, the next by‘‘, the next by ``, the next by ‘‘, andso on.

Input andOutput

Input will consist of several lines of text containing an evennumber of double-quote (") characters. Input is ended withan end-of-file character. The text must be output exactly as it wasinput except that:

  • the first " in each pair is replaced by two `characters: `` and
  • the second " in each pair is replaced by two characters: ‘‘.

SampleInput

"To be or not to be," quoth the Bard, "thatis the question".The programming contestant replied: "I must disagree.To `C‘ or not to `C‘, that is The Question!"

Sample Output

``To be or not to be,‘‘ quoth the Bard, ``thatis the question‘‘.The programming contestant replied: ``I must disagree.To `C‘ or not to `C‘, that is The Question!‘‘

CODE
#include
int main()
{
    char a;
    long int i=1;
    while((a=getchar())!=EOF)
    {
        if(a==‘"‘&&i%2==1)
        {
            printf("``");
            i++;
        }
        else if(a==‘"‘&&i%2==0)
        {
            printf("‘‘");
            i++;
        }
        if(a!=‘"‘)
            printf("%c",a);

    }
    return 0;
}


MY WAY
    这个是第一个题,首先应该做的是用EOF,这个比较简单。程序最开始的难处是我不明白如何让让电脑获得这些输入,经过查书自学得知getchar的用法。getchar可以输入单个字符,让计算机读取。在程序的中间部分则是用来判断输入是否是引号,并且判断出是第几个引号,然后对应的输出题目所要求的符号。最后一定要加上return返回值。这样,这个题目一遍就获得了AC,这真是件令人欢欣鼓舞的事!
    后来听好多人说这个题超级水,但是我想说,没有水的题目,只有水平烂的人。只有总这样的简单的题目开始,一步一个脚印的去做,一步一步的深入program,总有一天会懂得编程的真谛。
    I‘m ACMer.I‘m on my way.

Problem 001——Tex Quotes