ghjhkniob
ghjhkniob
采纳率93.3%
2020-05-11 17:38

将未在字符串s中出现而在字符串t中出现的字符形成一个新的字符串放在u中,u中字符按原字符串中字符顺序排列,不去掉重复字符?

已采纳

60.
编程题
将未在字符串s中出现而在字符串t中出现的字符形成一个新的字符串放在u中,u中字符按原字符串中字符顺序排列,不去掉重复字符。
测试数据:
s:ABCDE, t:BDFGG
运行结果:FGG
请认真测试程序的正确性。将源代码以文本方式提交,不要直接提交文件。
【算法提示】
设计函数void fun(char *s, char *t, char *u)实现要求的功能,函数以字符指针作为参数,通过指针移动进行字符比较:
设置两个字符指针p和q,p指针指向t串,q指针指向s串;通过移动指针p和q,将t串中的一个字母与s中的每个字母进行比较,若有相同的,则中断,再看t中的下一个,直到最后都没有相同的,放入u中。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • caozhy 从今以后生命中的每一秒都属于我爱的人 1年前

    问题解决的话,请点下采纳

    #include <stdio.h>
    
    void fun(char *s, char *t, char *u)
    {
        int k = 0;
        for (int i = 0; t[i]; i++)
        {
            int flag = 0;
            for (int j = 0; s[j]; j++)
            {
                if (t[i] == s[j])
                {
                    flag = 1;
                    break;
                }
            }
            if (!flag) u[k++] = t[i];
        }
        u[k] = 0;
    }
    
    int main()
    {
        char *s = "ABCDE";
        char *t = "BDFGG";
        char u[100];
        fun(s,t,u);
        printf("%s\n", u);
        return 0;
    }
    
    点赞 评论 复制链接分享
  • weixin_46523951 weixin_46523951 1年前

    您莫非就是传说中的彭老师的学生?

    #include
    void fun(char *s, char *t, char *u)
    {
    char *p=s;
    char *q=t;
    char *m=u;
    for(;*q!='\0';*q++)
    {
    p=s;
    for(;*p!='\0';*p++)
    if (*q==*p)
    break;
    if (*p=='\0')
    {
    *m=*q;
    *m++;
    }
    }
    }
    int main()
    {
    int i=0;
    char s[80],t[80],u[160]={0};
    printf("输入第一个字符串:");
    gets(s);
    printf("输入第二个字符串:");
    gets(t);
    fun(s,t,u);
    for(i=0;i<160;i++)
    {
    if(u[i]==0)
    break;
    else
    printf("%c",u[i]);
    }
    return 0;
    }

    点赞 1 评论 复制链接分享

相关推荐