C语言中,合并两个字符串为一个新的字符串,确保在新字符串中,两个字符串的所有字符仅出现一次

2025-03-02 11:16:37
推荐回答(3个)
回答1:

#include
#include
int main(){
char s1[]="happy";
char s2[]="NewYear";
char s3[999];
int i,j,c,m=0;
s3[m]=s1[0];m++;
for (j=1;s1[j]!='\0';j++){
c=0;
for (i=0;iif (c==0) {s3[m]=s1[j];m++;};
}
for (j=0;s2[j]!='\0';j++){
c=0;
for (i=0;iif (c==0) {s3[m]=s2[j];m++;};
}
s3[m]='\0';
printf ("%s",s3);
return 0;
}
输出: hapyNewYr
----
单个字符比较 用: if (s3[i]==s1[j]) 则相同;else 则不同;

回答2:

#include 

int main()
{
    char s1[]="happy";
    char s2[]="NewYear";
    char s3[999];
    char occurs[128]={0};
    int i,m=0;
    for(i=0;s1[i]!='\0';i++)
    {
        if(!occurs[s1[i]])
        {
            occurs[s1[i]]=1;
            s3[m++]=s1[i];
        }
    }
    for(i=0;s2[i]!='\0';i++)
    {
        if(!occurs[s2[i]])
        {
            occurs[s2[i]]=1;
            s3[m++]=s2[i];
        }
    }
    s3[m]='\0';
    printf ("%s",s3);
}

回答3:

strcmp函数的用法有问题,strcmp接受两个字符串参数而不是字符,如果你要比较字符是否相同直接s1[i] == s2[j]