| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 433 人关注过本帖
标题:求两字符串并集,为什么没有输出,求大神解答
只看楼主 加入收藏
tugangkai
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-9-17
结帖率:0
收藏
已结贴  问题点数:20 回复次数:8 
求两字符串并集,为什么没有输出,求大神解答
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void sort(char *s);
char *bingji(char *s,char *s1,char *s2)//求并集
{
      int len1=strlen(s1);
   int len2=strlen(s2);
    s=(char *)malloc(len1+len2+1);
   int i;
   for(i=0;i<len1;i++)
   {
      *(s+i)=*(s1+i);
   }
   for(i=0;i<len2;i++)
   {
       *(s+len1+i)=*(s2+i);
   }
  *(s+len1+len2)='\0';
  sort(s);
  return s;



}

void sort(char s[])//按asii排序
{
    int len=strlen(s);
    int i,j;
    for(i=0;i<len-1;i++)
    {
        for(j=0;j<len-1-i;j++)
        {
            if(s[j]>s[j+1])
            {
                char temp;
                temp=s[j];
                s[j]=s[j+1];
                s[j+1]=temp;
            }
        }

    }
    for(i=0;i<len-1;i++)//去重
    {
        if(s[i]==s[i+1])
        {
            for(j=i+1;j<len-1;j++)
            {
                s[j]=s[j+1];
            }
            s[len-1]='\0';
            len--;
            i--;
        }

    }


}

int main(){

    char  *s=NULL;
    char s1[20]="abcde";
    char s2[20]="defg";


    char *t=bingji(s,s1,s2);
    printf("%s\n",t);
  
  
return 0;
}
搜索更多相关主题的帖子: include return 字符串 
2014-09-17 16:45
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
我用vs测试没问题呢

DO IT YOURSELF !
2014-09-17 16:50
tugangkai
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-9-17
收藏
得分:0 
那你帮我看看结果对不对
2014-09-17 16:55
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
对啊  不就是并集吗  你这个例子的结果就是abcdefg

DO IT YOURSELF !
2014-09-17 16:58
tugangkai
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-9-17
收藏
得分:0 
哦哦,那谢谢了
2014-09-17 17:00
tugangkai
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-9-17
收藏
得分:0 
你是版主是不是啊
2014-09-17 17:01
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用tugangkai在2014-9-17 17:01:51的发言:

你是版主是不是啊



是或不是 有什么问题吗

DO IT YOURSELF !
2014-09-17 17:03
巧若拙
Rank: 4
来 自:宁波余姚
等 级:业余侠客
威 望:1
帖 子:159
专家分:273
注 册:2014-8-24
收藏
得分:10 
你的结果是对的,不过走了点弯路。还有,去重的算法有点低效,关于去重算法,请参考:浅议“删除向量(数组)中多余元素”的基本操作及其优化,https://bbs.bccn.net/thread-435859-1-1.html
2014-09-18 08:12
巧若拙
Rank: 4
来 自:宁波余姚
等 级:业余侠客
威 望:1
帖 子:159
专家分:273
注 册:2014-8-24
收藏
得分:0 
我改写了一个合并算法,你看看
#include<stdio.h>
#include<string.h>
#include<stdlib.h>


void sort(char *s);
char *bingji(char *s,char *s1,char *s2)//求并集
{
    int len1=strlen(s1);
   int len2=strlen(s2);
    s=(char *)malloc(len1+len2+1);
   int i, j, top = 0;
   
   for(i=0;i<len1;i++)
   {
      s[top++] = s1[i];
   }
   
   for(j=0;j<len2;j++)
   {
       for (i=0; i<len1; i++) //查找是否有重复数据
       {
             if (s2[j] == s1[i])
                 break;
       }
       if (i == len1) //无相同数据
       {
             s[top++] = s2[j];
       }
   }
  s[top++] ='\0';

  return s;
}

int main(){

    char  *s=NULL;
    char s1[20]="abcde";
    char s2[20]="defg";


    char *t=bingji(s,s1,s2);
    printf("%s\n",t);
  
  
return 0;
}
2014-09-18 08:21
快速回复:求两字符串并集,为什么没有输出,求大神解答
数据加载中...
 
   



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

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