| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1569 人关注过本帖
标题:这个破题我真的不知道怎么操作了,可以帮我看哈吗,感激不尽
只看楼主 加入收藏
凶悍肥鹅
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-5-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
这个破题我真的不知道怎么操作了,可以帮我看哈吗,感激不尽
本人不是很懂c语言指针,这个代码是实现判断两个字符数组是否由相同的字母组成。就学百度的写了一个sq函数来进行数组的排序,但是这个代码编译后运行竟然直接崩溃,本人很菜很菜,有大佬可以帮我指出这个代码的错误吗,随便哪个错误都可以(我感觉错了很多....)



#include <stdio.h>
#include <stdlib.h>
#include<string.h>
char *sq(char a[]);
int main()
{
    int i,j,n;
    int p;
    char a[100],b[100];
    scanf("%d",&n);
    while(n--)
    {
        scanf("%s",a);
        scanf("%s",b);
        char *c=sq(a);
        char *d=sq(b);

        printf("%s",c);
        printf("%s",d);
        if(strcmp(c,d)==0)
        printf("Yes\n");
        else printf("No\n");
    }
        
    return 0;
}
    char *sq(char a[])
    {
        int i;
        int len;
        char t;
        len=strlen(a);
        for(i=0;i<len;i++)
        {
             if(a[i]<a[i+1])
            {
                t=a[i];
                a[i]=a[i+1];
                a[i+1]=t;
            }
        }
    };
搜索更多相关主题的帖子: 代码 char int scanf printf 
2018-05-06 23:41
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:7 
这个不用排序吧~
统计每个字符出现的次数,如果两个字符串每个字符出现的次数都一样,那就成了,其实这也是题目本来的意思~

    unsigned buf[256];
    size_t i;

    for (i=0;ch[i];++i)
        ++buf[( const unsigned char )ch[i]];

大体就是这样的意思~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-05-07 01:14
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
收藏
得分:7 
回复 2楼 九转星河
我觉得应该利用左移,或,异或进行操作 但是需要对每一个字符进行判定

穷举是最暴力的美学
2018-05-07 08:40
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
收藏
得分:0 
回复 楼主 凶悍肥鹅
你的sq函数没有返回值



[此贴子已经被作者于2018-5-7 08:50编辑过]


穷举是最暴力的美学
2018-05-07 08:43
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
收藏
得分:0 
#include<stdio.h>
#include<string.h>
 
int min=0;
char ma[100],mc[100];
int max=0;
int b=0x0000001;
int n;

int fun(char arr[])
{
    int a=0;
     for(int i=0;i<strlen(arr);i++)
      a=a|b<<arr[i]-'A';
      return a;
}
void main()
{   
    scanf("%s",ma);
    min=fun(ma);        
     scanf("%s",mc);
    max=fun(mc);
    printf("%c",max==min?'y':'n');
}

穷举是最暴力的美学
2018-05-07 16:59
dzy123
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:379
专家分:820
注 册:2013-4-18
收藏
得分:7 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int sq(char *,char *);

 int main(void)

 {
     char a[100],b[100];
     scanf("%s",a);
     scanf("%s",b);
    if(sq(a,b)>0) 
     printf("相同");
   else
     printf("不相同");
   return 0;

 

 }

 int sq(char *x,char *y)

 {
     int a,b,m=0;
     if (strlen(x)<strlen(y))
     {a=strlen(x);b=strlen(y);}
     else
       {b=strlen(x);a=strlen(y);}
    for(int i=0;i<b;i++)
        for(int j=0;j<a;j++)
            if(x[i]==y[j])
                {m++;break;}
        return m==b ? m:0;

 }

我的理解编译的不知道正确不,请测试下。

[此贴子已经被作者于2018-5-7 17:40编辑过]

2018-05-07 17:32
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 5楼 nosnoy
对相同的字母理解到底是字母种类一样就可以了,还是要具体个数相等才可以,这个感觉有点歧义,这段代码实现的是前者,如果是后者就要另外开储存空间保存信息了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-05-07 18:12
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
收藏
得分:0 
回复 7楼 九转星河
哈哈,能省则省,明天开始学习新的单片机

穷举是最暴力的美学
2018-05-07 19:44
凶悍肥鹅
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-5-6
收藏
得分:0 
谢谢各位了,思维开阔了一些,
2018-05-07 20:52
凶悍肥鹅
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-5-6
收藏
得分:0 
回复 2楼 九转星河
谢了
2018-05-07 20:52
快速回复:这个破题我真的不知道怎么操作了,可以帮我看哈吗,感激不尽
数据加载中...
 
   



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

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