uva 272

来源:互联网 发布:开源cms系统 php商城 编辑:程序博客网 时间:2024/06/11 14:51

题目大意:

就是输入一长串,再输出一长串,其中某些特殊符号需要变一下,具体是啥,自己去题目网址去看;

基本思路:

输入是个问题,这里用getchar读一个出一个,然后也可以用fgets个gets,下面我都写一遍;还有个问题就是这个符号并不在ascii码表里,所以就用字符串输出,我也不知道为啥用字符串就能输出,反正以后遇到类似的用字符串试一下就好了;

代码如下:

getchar:

getchar是空格和回车(不同操作系统可能不同)都能都进去并且读出来;

然后学着这个flag的学法也不错,很容易想到;

这是这三种方法里面最快的!!!!!

#include<bits/stdc++.h>


int main()
{
    int flag=0;
    char c;
    while((c=getchar())!=EOF)
    {
        if(c=='"')
        {
            printf("%s",flag ? "''" : "``");
            flag=!flag;
        }
        else putchar(c);
    }
    return 0;
}

gets:

注意gets这个它是不会输出回车的记得自己换行;

然后这个用奇偶性还是很不错的,可以学一下,之所以能用奇偶性是应为也是对应着这两种状态;

#include<bits/stdc++.h>


char s[100000+10];
int main()
{
    int num=0;
    while(gets(s)!=NULL)
    {
        int l=strlen(s);
        for(int i=0;i<l;i++)
        {
            if(s[i]=='"')
            {
                if(num%2==0)
                    printf("%s","``");
                else printf("%s","''");
                num++;
            }
            else putchar(s[i]);
        }
        printf("\n");
    }
    return 0;
}


fgets:

fgets这个用法很值得学一学,就是三个参数,第一个一般就是一个char型数组,其他也可以,第二个参数就是最多都进去多少个该类型的元素,第三个就是读入方式,一般标准读入就是stdin,还有文件是fstream(输入输出都是);

#include<bits/stdc++.h>


char s[100000+10];


int main()
{
    int num=0;
    while(fgets(s,10000,stdin)!=NULL)
    {
        int l=strlen(s);
        for(int i=0;i<l;i++)
        {
            if(s[i]=='"')
            {
                if(num%2)
                    printf("%s","''");
                else printf("%s","``");
                ++num;
            }
            else putchar(s[i]);
        }
    }
    return 0;
}



原创粉丝点击