Rachel_zky
2021-05-21 14:32
采纳率: 25%
浏览 20

c语言-截取重构字符串

【问题描述】

编写函数void fun(char *s,char *t,char *p)将未在字符串s中出现、而在字符串t中出现的字符, 形成一个新的字符串放在p中,p中字符按原字符串中字符顺序排列,但去掉重复字符。

例如: 当s为"12345", t为"8624677"时, p中的字符为: "867";

当s为”good luck”,t为”thank you very much”时,输出:”thanyverm”

#include<stdio.h>

#include<math.h>

void fun(char *s,char *t,char *p)

{

}

int main()

{

char s1[50],s2[50],s3[50];

printf("Input string s:");

gets(s1);

printf("Input string t:");

gets(s2);

fun(s1,s2,s3);

printf("result:");

puts(s3);

return 0;

}

【输入形式】输入两个字符串
【输出形式】输出一个字符串
【样例输入】

Input string s:12346

Input string t:689412356680014

【样例输出】result:8950

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • qfl_sdu 2021-05-21 15:06
    已采纳

    代码如下,如有帮助,请采纳一下,谢谢。

    #include<stdio.h>
    #include <string>
    void fun(char *s,char *t,char *p)
    {
    	int lens = strlen(s);
    	int lent = strlen(t);
    
    	int index = 0;
    
    	for (int i = 0; i < lent; i++)
    	{
    		char c = t[i];
    		bool b = false;
    		for (int j = 0; j < lens; j++)
    		{
    			if (s[j] == c)
    			{
    				b = true;
    				break;
    			}
    		}
    		//
    		if (!b)
    		{
    			b = false;
    			for (int j = 0; j < index;j++)
    			{
    				if (p[j] == c)
    				{
    					b = true;
    					break;
    				}
    			}
    			if(!b)
    			{
    				p[index] = c;
    				index++;
    			}
    		}
    		
    
    	}
    
    }
    int main()
    {
    	char s1[50] ={0};
    	char s2[50] ={0};
    	char s3[50] = {0};
    	printf("Input string s:");
    	gets(s1);
    	printf("Input string t:");
    	gets(s2);
    	fun(s1,s2,s3);
    	printf("result:");
    	puts(s3);
    
    	getchar();
    	getchar();
    	return 0;
    }
    点赞 打赏 评论
  • 偷偷努力的sun 2021-05-21 14:47

    void fun(char *s,char *t,char *p) { int i,j,ms,mt; ms=strlen(s); mt=strlen(t); for(i=0;i { for(j=0;j if(s[i]==t[j]) break; if(j>=mt) *p++=s[i]; } *p='\0'; }

    点赞 打赏 评论

相关推荐 更多相似问题