请输入两个字符串str1和str2,将str1中出现在str2中的字符找出并输出,相同的只输出一次

例:输入串1:12abcd

输入串2:2342bAC

输出信息:12abcd中出现在2342bAC中有2b

#include <stdio.h>
#include <string.h>
int main( )
{ char a[200],b[200],c[127]= {0},*p,*q;
  printf("请输入二个字符串:\n");
  gets(a);
  gets(b);
  printf("%s中出现在%s中的字符有",a,b);
  for(q=a; *q; q++)
    if((p=strchr(b,*q))&&!c[*q])    //串A中字符出现在串B中,且前面未出现过
    { printf("%c",*q);        //输出此字符
      c[*q]=1;    //标记此字符已出现过
    }
  printf("\n");
  return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-03
#include <>
#include <>

int find(char *str1, char *str2)
{
    char s[64] = {0};
    char s_new[64] = {0};
    int i = 0, j = 0, m = 0, n = 0;
    int len1 = strlen(str1);
    int len2 = strlen(str2);
    
    /* 提取所有str1和str2的相同元素 */
    for (i = 0; i < len1; i++)
    {
        for (j = 0; j < len2; j++)
        {
            if (str1[i] == str2[j])
            {
                s[m++] = str1[i];
            }
        }
    }
    
    /* 剔除相同元素中的重复元素并存入新数组中 */
    for (i = 0; i < m; i++)
    {
        for (j = i+1; j < m; j++)
        {
            if (s[i] == s[j])
            {
                break;
            }
        }
        if (j == m)
        {
            s_new[n++] = s[i];
        }
    }
    
    printf("输出信息:%s中出现在%s中的字符有%s\n", str1, str2, s_new);
}
   
int main(int argc, char *argv[])
{
    char str1[64] = {0};
    char str2[64] = {0};
    
    printf("输入串1:");
    scanf("%s", str1);
    printf("输入串2:");
    scanf("%s", str2);
    
    find(str1, str2);
    
    return 0;
}

本回答被网友采纳
第2个回答  2018-12-03
  第十回:金寡妇贪利权受辱,张太医论病细穷源

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网