| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9995 人关注过本帖
标题:判断输入的两个字符串是否相等(顺序不是问题,只要字符相等就可以)
只看楼主 加入收藏
甜甜的惟
Rank: 2
等 级:论坛游民
帖 子:66
专家分:19
注 册:2016-11-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:13 
判断输入的两个字符串是否相等(顺序不是问题,只要字符相等就可以)
程序代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void Sort(char a[]);
int main()
{
    int i = 0;
    char *a = malloc(50);
    char *b = malloc(50);

    scanf("%s",a);
    scanf("%s",b);
    if(strlen(a)!=strlen(b))
    {
        printf("No\n");
    }

    Sort(a);
    Sort(b);
    if(strcmp(a,b));
        printf("YES\n");
    else 
        printf("NO\n");
    return 0;
}


void Sort(char a[])
{
    int i,j;
    char c;

    for(i=0;i<strlen(a)-1;i++)
    {
        for(j=0;j<strlen(a)-i;j++)//先排序//
        {
            if(a[j]>a[j+1])
            {
                c=a[j];
                a[j]=a[j+1];
                a[j+1]=c;
            }
        }
    }
}



error C2181: illegal else without matching if
E:\71.c(34) : warning C4018: '<' : signed/unsigned mismatch
E:\71.c(36) : warning C4018: '<' : signed/unsigned mismatch一直是这样的错误
搜索更多相关主题的帖子: 字符串 color 
2016-12-05 18:50
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
收藏
得分:3 
if(strcmp(a,b));   多了一个分号!!!

~~~~~~我的明天我知道~~~。
2016-12-05 20:32
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:3 
比较字符串是不是太麻烦了?
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>
void Sort(char a[]);
int main()
 {
     int i = 0;
     char *a = malloc(50);
     char *b = malloc(50);

     scanf("%s",a);
     scanf("%s",b);
     /*if(strlen(a)!=strlen(b))
     {
         printf("No\n");
     }*/

  //   Sort(a);
    // Sort(b);
     if(!strcmp(a,b))
         printf("YES\n");
     else
         printf("NO\n");
     return 0;
 }


/*void Sort(char a[])
 {
     int i,j;
     char c;

     for(i=0;i<strlen(a)-1;i++)
     {
         for(j=0;j<strlen(a)-i;j++)//先排序//
        {
             if(a[j]>a[j+1])
             {
                 c=a[j];
                 a[j]=a[j+1];
                 a[j+1]=c;
             }
         }
     }
 }

*/

早知做人那么辛苦!  当初不应该下凡
2016-12-05 21:02
甜甜的惟
Rank: 2
等 级:论坛游民
帖 子:66
专家分:19
注 册:2016-11-26
收藏
得分:0 
回复 3楼 炎天
大哥,你没看懂我的问题
2016-12-05 21:18
luoj75
Rank: 2
等 级:论坛游民
帖 子:17
专家分:55
注 册:2016-11-28
收藏
得分:3 
int main()
{
    int i = 0;
     char ary1[50];
     char ary2[50];
   

    scanf("%s",ary1);
    scanf("%s", ary2);
    if (strlen(ary1) != strlen(ary2))
    {
        printf("NO\n");
        return 0;
    }
    Sort(ary1);
    Sort(ary2);
    if (strcmp(ary1, ary2))
    {
        printf("NO\n");
    }
    else
    {
        printf("YES\n");
    }
    return 0;
}
2016-12-05 23:13
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:3 
之前有个“异构体”问题的贴,好象有点类似。
#include <stdio.h>

int _strlen(char *s)
{
    char *p=s;
    int count=0;
    for (; *p; p++) count++;
    return count;
}

int cmp(char *s1, char *s2)
{
    if (_strlen(s1) != _strlen(s2))
        return 0;
    unsigned int a1[256]={0}, a2[256]={0};
    char *p=s1;
    for (; *p; p++) a1[(unsigned char)*p]++;
    p=s2;
    for (; *p; p++) a2[(unsigned char)*p]++;
    int i;
    for (i=0; i<256; i++)   
        if (a1[i] != a2[i])
            return 0;
    return 1;
}

main()
{
    char *s1="abcd一国", *s2="d一c国ba";
    printf("%s\n", (cmp(s1,s2)?"YES":"NO"));
    char *s3="abcd", *s4="abcde";
    printf("%s\n", (cmp(s3,s4)?"YES":"NO"));
}

[此贴子已经被作者于2016-12-5 23:24编辑过]

2016-12-05 23:22
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:3 
这题应该不需要排序的,六楼答主使用asc码表计数的方式可行,突然想到一个另类方法,我称为奇偶校验法,估计能有99%的正确率,代码如下:
程序代码:
#include<stdio.h>
int cmp(char* s1,char* s2)
{
    int ss1[2]={0},ss2[2]={0};
    for(;*s1||*s2;)
    {
        ss1[((unsigned char)*s1)%2]+=(unsigned char)*s1;
        ss2[((unsigned char)*s2)%2]+=(unsigned char)*s2;
        if(*s1)s1++;
        if(*s2)s2++;
    }
    return ss1[0]==ss2[0]&&ss1[1]==ss2[1];
}
void main()
{
    char s1[]="中华人民共和国001a",s2[]="a100共和国人民中华";
    if(cmp(s1,s2))printf("Yes\n");
    else printf("No\n");
}


欢迎题主测试,如要提高准确度甚至可以用增加校验位数解决。
针对校验和特意构建的字符串还有缺陷,如字符串“ceg”“ack”就会输出yes,这时如再增减奇偶异或校验,将会将准确率提高很多。题主可自行添加奇偶异或校验功能。

[此贴子已经被作者于2016-12-6 11:16编辑过]

2016-12-06 10:36
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:3 
诶,今天下午忙没电脑开,在构思如何优化这题~就弄了这题~,根据7楼的算法,翻译了一下~应该是这个样子的~
程序代码:
#include<stdio.h>
#include<string.h>
int fun(char s1[],char s2[])
{
    char *p;
    int ss[256]={0};
    int l=0;

    if (strlen(s1)!=strlen(s2))
        return 0;

    for (p=s1;*p;p++)
        ss[*p]++;

    for (p=s2;*p;p++)
        if(ss[*p]--)
            l++;

    return (l==strlen(s1));
}
int main()
{
    char s1[80],s2[80];

    if (fun(gets(s1),gets(s2)))
        printf("Yes\n");
    else
        printf("No\n");

    return 0;
}


//诶,想不到和吹水佬的做法差不多~

[此贴子已经被作者于2016-12-6 17:30编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-06 17:25
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 8楼 九转星河
请原谅我有强化代码强迫症~上楼咋没想深一层呢?????
程序代码:
[code]#include<stdio.h>
#include<string.h>
int fun(char s1[],char s2[])
{
    char *p;
    int ss[256]={0};

    if (strlen(s1)!=strlen(s2))
        return 0;

    for (p=s1;*p;p++)
        ss[(int)*p]++;

    for (p=s2;*p;p++)
        if(--ss[(int)*p]<0)
            return 0;

    return 1;
}
int main()
{
    char s1[80],s2[80];

    if (fun(gets(s1),gets(s2)))
        printf("Yes\n");
    else
        printf("No\n");

    return 0;
}
[/code]

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-06 19:07
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
回复 9楼 九转星河
既然不用支持中文,那你的字符表就不需要定义到256,int ss[128]={0}就可以了。
2016-12-06 19:30
快速回复:判断输入的两个字符串是否相等(顺序不是问题,只要字符相等就可以)
数据加载中...
 
   



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

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