阴阳相易


私信TA

用户名:gouchao

访问量:19321

签 名:

楼上小心你的分数了,我即将爆掉你的菊花

等  级
排  名 221
经  验 6331
参赛次数 2
文章发表 18
年  龄 0
在职情况 待业
学  校
专  业

  自我简介:

原题链接

按照题目要求,我的代码都能满足,但是答案不正确,不知道错在了哪里,或许是对题目的理解有问题吧,有没有谁能解答下疑惑?

我的代码如下:

#include <stdio.h>

int strbaohan(char a[],char b[]);    //判断字符串a,是否包含字符串b
int charbaohan(char a[],char c);    //判断字符串a中,是否含有字符 c
int len(char a[]);

int main(void){
    char a[2001],b[2001];
    while(EOF != scanf("%s%s",a,b)){
        int a_b = strbaohan(a,b);
        int b_a = strbaohan(b,a);
        if(a_b == 1 && b_a == 1) printf("a==b\n");
        else if(a_b == 1 && b_a == 0) printf("a>=b\n");
        else if(a_b == 0 && b_a == 1)  printf("a<=b\n");
        else  printf("a!=b\n");
    }
    return 0;
}

int strbaohan(char a[],char b[]){
    int res = 1;
    int LEN = len(a);
    char c[LEN];    //用一个临时的数组处理数据,而不是直接操作数组a,导致字符串的变化
    int j = 0;
    while(1){
        c[j] = a[j];
        j++;
        if(c[j] == '\0') break;
    }
    int i;
    i = 0;
    
    int tmp;
    while(b[i] != '\0'){
            tmp = charbaohan(c,b[i]);    //如果b串中有重复的字符,而a串中该字符只有一个
        if(tmp != -1 ){
            c[tmp] = ' ';       //通过这种方式,排除可能的错误
        }
        else{
            res = 0;
            break;
        }
        i++;
    }
    if( len(a) < len(b) ){
        res = 0;
    }
    return res;
}

int charbaohan(char a[],char c){
    int i = 0;
    int res = 0;
    while(a[i] != '\0'){
        if(a[i] == c){
            res = 1;
            break;
        }
        i++;
    }
    if(res == 1) return i;
    else return -1;
}

int len(char a[]){
    int i = 0;
    while(a[i] != '\0'){
        i++;
    }
    return i;
}


 

0.0分

0 人评分

  评论区

  • «
  • »