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

作者&投稿:迟背 (若有异议请与网页底部的电邮联系)
c++编程从键盘输入两个字符串str1和str2,然后判断str1中是否存在str2若存在,~

#include

#include
#include
using namespace std;

string Func(string str1, string str2)
{
string res;
string tmp1,tmp2;
int nPos = str1.find(str2);
if(nPos != -1)
{
tmp1 = str1.substr(0,nPos);
res += Func(tmp1,str2);
tmp2 = str1.substr(nPos+str2.length());
res += Func(tmp2,str2);
}
else
{
res = str1;
}
return res;
}

int main()
{
string str1, str2;
cin >> str1 >> str2;
string res = Func(str1,str2);
cout <<res<<endl;
return 0;
}
代码中使用了递归运算,可以将str1中所有的str2子串全部删除,然后输出其余部分。
满意请采纳。

代码如下可以实现:(已测试)
#include "stdafx.h"
#include
#include

int main(){
char a[40],b[40];
printf("Input a string
");
scanf("%s",a);
printf("Input a string
");
scanf("%s",b);
int i=0,N=0;

for(i=0;a[i];i++){
int j=0;
while(b[j]){
if(a[j+i]==b[j])
j++;
else
break;
}
if(b[j]==0)
printf("%d",i);
}
system("pause");
return 0;
}

#include <stdio.h>
#include <string.h>
int main( )
{ char a[200],b[200],c[127]= {0},*p,*q;
  printf("请输入二个字符串:
");
  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("
");
  return 0;
}


#include <stdio.h>
#include <string.h>

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
", 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;
}


  第十回:金寡妇贪利权受辱,张太医论病细穷源


char st[15];scanf("%s",st); printf("%s%s",st,st)
字符数组st长度为15个字节,只能存放具有14个有效字符的字符串,所以输入“programmingprogramming”,执行scanf("%s",st);后,st溢出了。内存溢出会覆盖后续内存,至于会出现什么情况,不可预料。我实际执行了上述代码,结果不是programming,而是programmingprogramming。这不是说内存溢出没有问题,而是st数组...

C语言:我想从键盘上输入一个无限长的字符串,用什么函数啊?谢谢?_百度...
字符串输入函数gets 格式:gets(字符数组名)功能:从标准输入设备键盘上输入一个字符串。本函数得到一个函数值,即为该字符数组的首地址。【例7.13】include\\"stdio.h\\"main(){ charst[15];printf(\\"inputstring:\\");gets(st);puts(st);} 可以看出当输入的字符串中含有空格时,输出仍为全部...

VB编程:用Inputbox函数,输入字符串“MORNING”求出字符串中各字符ASCI...
以下是对您提供的VB编程代码段的改写和错误纠正:```vb Private Sub Command1_Click()Dim s As Integer ' 声明变量s用于累加ASCII码 Dim st As String ' 声明变量st存储输入的字符串 st = InputBox("请输入字符串:") ' 修改为输入字符串 s = 0 ' 初始化变量s Dim i As Integer ' 声明...

c语言一道题求教
include <stdio.h>void mystrcpy(char t[],char s[]) {int i = 0;while(t[i] = s[i]) ++i;}int mystrcmp(char s[],char t[]) {for(int i = 0; s[i] && t[i]; ++i) {if(s[i] > t[i]) return 1;if(s[i] < t[i]) return -1;}if(s[i] == '\\0' && ...

C语言编程,写一个函数,使输入的一个字符串按反序存放,在主函数中输入和...
s);\/\/输出反序后的字符串 return 0;} void input(char st[]){ printf("Please enter string: ");gets(st);} \/\/反序函数 void reverse(char st[]){ int n=strlen(st);for (int i=0, j=n-1, t; i<(n\/2); t=st[i], st[i]=st[j], st[j]=t, i++, j--);} ...

关于c语言:输入一个字母,再输入一个字符串,在这个字符串中查找该字母...
include<stdio.h> include<string.h> int main(){ int i,d,s=0;char character,st[80];printf("Input a character : ");scanf("%c",&character);printf("Input a string : ");scanf("%s",st);for(i=0;st[i]!='\\0';i++){ if(character==st[i]){ d=i;s=1;break;} } ...

C\/C++ 语言字符数组和字符串数组的疑惑
根据上面的解释很容易知道第二个为什么报错了 char str[30] = "Mynameis";puts(&str[1])这里首先str[1]表示取字符序列中的第一个字符,然后&str[1]表示取第一个字符在字符序列中的地址,也就是告诉了puts从第一个字符处开始向后面遍历这个字符串,这样很明显就跳过了第0个字符了。导致输出结果中...

写一个函数,将一个字符串的元音字母复制到另一字符串,然后输出
include<stdio.h> include<string.h> void input(char st[]);\/\/定义输入函数 void output(char st[]);\/\/定义输出函数 void letter(char x[],char y[]);\/\/定义元音复制函数 int main(){ char s1[20],s2[10];input(s1);\/\/调用输入函数 letter(s1,s2);\/\/调用元音复制函数 output(s2);...

C语言中char st[]="abc\/0de" 是什么意思?内个是反斜杠
这是初始化字符数组st呀,\\0是结束符,即字符串到这里结束,所以字符串“abc\\0de”的长度为3。

c语言中string怎么用啊
include"stdio.h"main(){ static char c[]="BASIC\\ndBASE";puts(c);} 2.字符串输入函数gets 格式: gets (字符数组名) 功能:从标准输入设备键盘上输入一个字符串。 本函数得到一个函数值,即为该字符数组的首地址。include"stdio.h"main(){ char st[15];printf("input string:\\n");gets...

开远市19456761882: c++编程从键盘输入两个字符串str1和str2,然后判断str1中是否存在str2若存在, -
赏珊卡左: #include<stdio.h>#include <string.h> #include<iostream> using namespace std;string Func(string str1, string str2) { string res; string tmp1,tmp2; int nPos = str1.find(str2); if(nPos != -1) { tmp1 = str1.substr(0,nPos); res += Func(tmp1,str2); tmp2 = ...

开远市19456761882: 输入两个字符串str1和str2,比较后将较大的字符串存在于str1中,较小的存在于str2 -
赏珊卡左: int main() {char str1[100], str2[100], t[100];scanf("%s%s",str1, str2);if(strcmp(str1, str2)<0){strcpy(t,str1);strcpy(str1,str2);strcpy(str2, t);}printf("%s %s\n", str1, str2);return 0; }

开远市19456761882: C语言输入两个字符串str1,str2(长度分别不超过80) -
赏珊卡左: #include int main() { char str1[80], str2[80]; const char *s=""; int r; scanf("%s%s",str1, str2); printf("str1 length = %d\n", strlen(str1)); r = strcmp(str1,str2); if(r else if(r==0) r=1; else r=2; printf("str1 %c str2\n", s[r]); strcpy(str1, str2); printf("after cp, str1=\"%s\"\n", str1); return 0; }运行截图

开远市19456761882: 输入两个字符串str1和str2,将str2连接到str1的后面,存入另一个字符数组中,并在屏幕显 -
赏珊卡左: 1、首先打开pycharm编辑器. 2、在文件里面写上注释. 3、新建第一个字符串str1="my name". 4、新建第二个字符串str2="is feng". 5、将这两个字符串拼接起来组成新的字符串str3=str1+str2. 6、将拼接的字符串打印出来. 7、运行这个程序,得出结果.

开远市19456761882: 用指针编程输入两个字符串str1,str2,实现将字符串str2的内容连接到str1的末尾
赏珊卡左: int main() { char a[100], b[100]; char* str1 = a char* str2 = b; scanf("%s", str1); scanf("%s", str2); while (++str1); while (str2) { str1++ = str2++; } *str1 = '\0'; str1 = a; printf("%s\n", str1); return 0; }

开远市19456761882: Java编程 -
赏珊卡左: java.util.Scanner sc = new java.util.Scanner(System.in); System.out.println("请输入第一个字符串...."); String str1 = sc.next(); System.out.println("请输入第二个字符串...."); String str2 = sc.next(); if(str1.equals(str2)){ System.out.println...

开远市19456761882: 有两字符指针变量str1和str2,通过函数gets键盘输入字符串str1,str2,然后在屏幕输出字符串str1,str2. -
赏珊卡左: 应该是分配内存吧,str1和str2只是一个指针. str1 = (char*)malloc(100*sizeof(char)); str2 = (char*)malloc(100*sizeof(char));

开远市19456761882: 有两个字符串分别用字符数组str1和str2表示,请编写一个字符串连接函数strconnect -
赏珊卡左: 一个很直接的方式,首先找到第一个字符串的结尾,然后从结尾处开始复制str2的字符. void strconnect (char * str1, char * str2) {while (*str1)str1++;while (*str2)*str1++ = *str2++;*str1 = '\0'; } 记得确保第一个字符数组的长度足够容纳连接后的字符串.

开远市19456761882: 随机输入2个字符串str1,str2,将str1中与str2中相同的字符删除,并将删除后str1输出. -
赏珊卡左: ///////////////////////////////////////// // C-Free 4.1 // MinGW 3.4.5 // veket的小号 // 运行通过 ///////////////////////////////////////// #include int main() { char str1[100]; char str2[100]; int i; int j; int k; printf("输入str1:\n"); gets(str1); printf("输入str2:\n"); gets(str2); for(i...

开远市19456761882: 输入两个字符串str1.str2,将str2替换到str1中 -
赏珊卡左: 可以定义一个字符型指针,,然后把两个字符串的地址交换一下😀

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