前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >NBUT 1117 Kotiya's Incantation

NBUT 1117 Kotiya's Incantation

作者头像
用户1624346
发布2018-04-11 17:16:58
发布2018-04-11 17:16:58
67700
代码可运行
举报
文章被收录于专栏:calmoundcalmound
运行总次数:0
代码可运行

题意:判断两个字符窜是否一样,不一样,或相似,字符窜包含大小写字母,'\n','\t','  ',‘\r’,所以一样所有的都一样,相似是只要字母顺序相同就行了,其他的都不一样

分析:这是一道好题,在给我几天如果不看别人代码和解题报告打死我想不到做不出来,比赛的时候没做出来,纯属正常确实不会,不过还是很多人做出来,厉害。这道题否定了我以前的看法,两个字符窜的区别一定是回车,但是这句话Each string is breaked by character '-'.也就是说每个字符窜遇到‘-’判断结束,第一个字符窜结束后不用在回车后进行输入第二个字符窜,若输入回车后则是第二个字符窜的第一个字符,这里还学到了知道EOF是两个字符所以scanf需要输入两次^z,如果在第二个字符窜中不去判断EOF的话很可能造成Runtime error [access violation],因为会在第二个字符窜那里死循环了,比如a-a-\n^z^z这样就死循环了

c=getchar()只要判断c是否等于-1就行输入依次就可以

还有输入字符除了getchar()还有scanf(“%c”)

代码语言:javascript
代码运行次数:0
复制
#include<stdio.h>
#include<string.h>

const int MAXN=10000;

int main()
{
    char str1[MAXN],str2[MAXN],rem1[MAXN],rem2[MAXN];
    int i;
    int cas1,cas2,tes1,tes2;
    char ch;
    while(scanf("%c",&ch)!=EOF)
    {
        tes1=0,tes2=0;
        cas1=0;
        if(ch=='-') 
        {
        }
        else
        {
            str1[0]=ch;
            cas1=1;
            while(1)
            {
                ch=getchar();
                if(ch==-1) return 0;//就是这里,EOF占两个字符。。。
                if(ch=='-') break;
                str1[cas1++]=ch;    
            }
            
        }
        str1[cas1]='\0';
        cas2=0;
        while(scanf("%c",&ch))
        {
            if(ch=='-') break;
            str2[cas2++]=ch;    
        }
        str2[cas2]='\0';
        if(!strcmp(str1,str2)) printf("SAME\n");
        else
        {
            for (i=0;i<str1[i];i++)
            {
                if( (str1[i]>='A' && str1[i]<='Z') || (str1[i]>='a' && str1[i]<='z')) rem1[tes1++]=str1[i];
            }
            rem1[tes1]='\0';
            for (i=0;str2[i];i++)
            {
                if( (str2[i]>='A' && str2[i]<='Z') || (str2[i]>='a' && str2[i]<='z')) rem2[tes2++]=str2[i];
            }
            rem2[tes2]='\0';
            if(!strcmp(rem1,rem2)) 
            {
                printf("SIMILAR\n");
            }
            else printf("DIFFERENT\n");
        }
    }
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2012-07-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档