水题---根据次数转换符号题

题目:TEX is a typesetting language developed by Donald Knuth. It takes source text together with a fewtypesetting instructions and produces, 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 do not have an oriented double-quote, but they do have a left-single-quote`anda right-single-quote'. Check your keyboard now to locate the left-single-quote key`(sometimescalled the “backquote key”) and the right-single-quote key'(sometimes called the “apostrophe” orjust “quote”). Be careful not to confuse the left-single-quote`with the “backslash” key\. TEX letsthe user type two left-single-quotes``to create a left-double-quote “ and two right-single-quotes''to create a right-double-quote ”. Most typists, however, are accustomed to delimiting their quotationswith the un-oriented double-quote".If the source contained"To be or not to be," quoth the bard, "that is the question."then the typeset document produced by TEX would not contain the desired form:“To be or not to be,” quoth the bard, “that is the question.”In order to produce the desired form, the source file must contain the sequence:``To be or not to be,'' quoth the bard, ``that is the question.''You are to write a program which converts text containing double-quote (") characters into textthat is identical except that double-quotes have been replaced by the two-character sequences requiredby TEX for delimiting quotations with oriented double-quotes. The double-quote (") characters shouldbe replaced appropriately by either``if the"opens a quotation and by''if the"closes a quotation.Notice that the question of nested quotations does not arise: The first"must be replaced by``, thenext by'', the next by``, the next by'', the next by``, the next by'', and so on.

InputInput

will consist of several lines of text containing an even number of double-quote (") characters.Input is ended with an end-of-file character.OutputThe text must be output exactly as it was input except that:the first"in each pair is replaced by two`characters:``andthe second"in each pair is replaced by two'characters:''.Sample Input"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!''

题解:

1.字符除了转义序列之外都当字符串处理,用“”。

2.getchar返回类型为int类型,做题无需考虑。

 getchar优先级过低,需要用()括起来。

3.因为需单字符单字符处理,所以不能用cin,因为会忽略空格

ac代码

1.scanf的

#include<iostream>
#include<cstdio> using namespace std; int main() { char ch; int flag,num=0; while(scanf("%c",&ch)!=EOF) { if(ch!='"') cout<<ch; else { num++; num%=2; if(num==0) cout<<"''"; else cout<<"``"; } } return 0; }
2.getchar
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    char ch;
    int flag,num=0;
    while((flag=getchar())!=EOF)//也可以直接写ch=getchar()勿忘括号
    {
        ch=(char)flag;
        if(ch!='"') cout<<ch;
        else
        {
            num++;
            num%=2;
            if(num==0) cout<<"''";
            else cout<<"``";
        }
    }
    return 0;
}


猜你喜欢

转载自www.cnblogs.com/Joe2019/p/12654216.html