| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5239 人关注过本帖
标题:字符串的对比
只看楼主 加入收藏
不同认为
Rank: 1
等 级:新手上路
帖 子:93
专家分:3
注 册:2015-11-25
结帖率:57.14%
收藏
已结贴  问题点数:15 回复次数:7 
字符串的对比
问题描述
  给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一:
  1:两个字符串长度不等。比如 Beijing 和 Hebei
  2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing
  3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完全一致(也就是说,它并不满足情况2)。比如 beijing 和 BEIjing
  4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如 Beijing 和 Nanjing
  编程判断输入的两个字符串之间的关系属于这四类中的哪一类,给出所属的类的编号。

输入格式
  包括两行,每行都是一个字符串
输出格式
  仅有一个数字,表明这两个字符串的关系编号
样例输入
BEIjing
beiJing
样例输出
3
我的代码如下
#include<stdio.h>
#include<string.h>
int main()
{
    char a[100],b[100],q,w,i,t;
    gets(a);
    gets(b);
    q=strlen(a);
    w=strlen(b);
    if(q!=w)
        printf("0\n");
         return 0;
    for(i=0;i<q;i++)
        {
            if(a[i]==b[i]||a[i]==b[i]-32||a[i]==b[i]+32)
            {
                t=1;
              continue;
            }
            else
            break;
        }
    if(t==1)
        printf("3\n");
    for(i=0;i<q;i++)
        {
            if(a[i]==b[i])
            {
                t=2;
               continue;
            }
            else
            break;
        }
    if(t==2)
        printf("2\n");
    for(i=0;i<q;i++)
    {
        if(a[i]!=b[i])
        {
            printf("4\n");
            return 0;
            }
    }
    return 0;
}
只要输入长度相等的字符串就没有输入 这是为什么         
   


               
                                       


搜索更多相关主题的帖子: 区分大小写 beijing 字符串 而且 字母 
2016-01-27 18:48
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
    if(q!=w)
         printf("0\n");
          return 0;

除此之外,你的逻辑也不对。

重剑无锋,大巧不工
2016-01-27 21:36
不同认为
Rank: 1
等 级:新手上路
帖 子:93
专家分:3
注 册:2015-11-25
收藏
得分:0 
回复 2楼 beyondyf
改了一下 这个逻辑哪里错了
#include<stdio.h>
#include<string.h>
int main()
{
    char a[100],b[100],q,w,i,t;
    gets(a);
    gets(b);
    q=strlen(a);
    w=strlen(b);
    if(q!=w)
    {
        printf("0\n");
         return 0;
    }
    for(i=0;i<q;i++)
        {
            if(a[i]==b[i]||a[i]==b[i]-32||a[i]==b[i]+32)
            {
                t=1;
              continue;
            }
            else
            {
                t=0;
            break;
            }
        }
    if(t==1)
        printf("3\n");
    for(i=0;i<q;i++)
        {
            if(a[i]==b[i])
            {
                t=2;
               continue;
            }
            else
            {
                t=3;
               break;
            }
        }
    if(t==2)
        printf("2\n");
    for(i=0;i<q;i++)
    {
        if(a[i]!=b[i])
            t=4;
        else
        {
            t=5;
            break;
        }
         
    }
   if(t==4)
       printf("4\n");
   return 0;
}
2016-01-27 22:03
拉链
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:107
专家分:534
注 册:2016-1-22
收藏
得分:15 
这么长,实在不愿帮楼主排错,建议楼主学会调试,按题意写了个,供楼主参考:
程序代码:
#include<stdio.h>
int main()
{
    char a[100],b[100],ca,cb;
    int i,j,l,L;
    gets(a);
    gets(b);
    for(i=0,l=0,L=0;a[i]&&b[i];i++)
    {
        if(a[i]==b[i])l++;
        ca=a[i]>96?a[i]-32:a[i];
        cb=b[i]>96?b[i]-32:b[i];  //变成大写比较
        if(ca==cb)L++;
    }
    if(a[i]||b[i])j=1;            //两个字符长度不相等
    else
    {
        j=4;                      //两个字符长度相等,首先肯定是4
        if(l==i)j=2;              //两个字符完全一致,肯定是2
        if(j!=2&&L==i)j=3;        //不区分大小写,如为2必定为3,所以排除2
    }
    printf("%d\n",j);
    return 0;
}
2016-01-27 22:30
不同认为
Rank: 1
等 级:新手上路
帖 子:93
专家分:3
注 册:2015-11-25
收藏
得分:0 
回复 4楼 拉链
我已经把我原来的代码改好了
2016-01-27 22:41
不同认为
Rank: 1
等 级:新手上路
帖 子:93
专家分:3
注 册:2015-11-25
收藏
得分:0 
#include<stdio.h>
#include<string.h>
int main()
{
    char a[100],b[100],q,w,i,t;
    gets(a);
    gets(b);
    q=strlen(a);
    w=strlen(b);
    if(q!=w)
    {
        printf("0\n");
         return 0;
    }
    for(i=0;i<q;i++)
        {
            if(a[i]==b[i])
            {
               
                t=2;
               continue;
            }
            else
            {
                t=3;
               break;
            }
        }
    if(t==2)
    {
        printf("2\n");
        return 0;
    }
    for(i=0;i<q;i++)
        {
            if(a[i]==b[i]||a[i]==b[i]-32||a[i]==b[i]+32)
            {
                t=1;
              continue;
            }
            else
            {
                t=0;
            break;
            }
        }
    if(t==1)
    {
        printf("3\n");
       return 0;
    }
    for(i=0;i<q;i++)
    {
        if(a[i]!=b[i])
        {
            t=4;
            break;
        }
         
    }
   if(t==4)
       printf("4\n");
   return 0;
}
2016-01-27 22:42
ms268el8
Rank: 4
等 级:业余侠客
威 望:1
帖 子:84
专家分:299
注 册:2015-11-30
收藏
得分:0 
回复 6楼 不同认为
這暴力解法看著心塞
2016-01-27 23:21
不同认为
Rank: 1
等 级:新手上路
帖 子:93
专家分:3
注 册:2015-11-25
收藏
得分:0 
回复 7楼 ms268el8
看着是挺长 不过写起来挺快的
2016-01-27 23:25
快速回复:字符串的对比
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018065 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved