编写函数void fun(char*s, char *t, char *p)将未在字符串s中出现,而在字符串t 中出现的字符,放在新的字符串p中,p中字符按原字符串中字符顺序排列,但去掉重复字母,
如:输入:input string s: good luck
input string t: thank you very much
输出:result: thanyvermh.
(char*s,char*t,char*p)
{
puts(s);
int i,j,k,l,m,flag;
for(k=0;s[k]!='\0';){k++;}
for(l=0;t[l]!='\0';){l++;}
m=0;
for(i=0;i<k;i++)
{flag=0;
for(j=0;j<l;j++)
{if(s[i]==t[j]){flag=1;break;}
}
if(flag=0){p[m]=s[i];m++;}
}
puts(p);
}
逻辑写反了,应该是t作为外循环,s作为内循环,下面的判断也写错了,应该是flag==0,不是flag=0,代码修改如下:
#include <stdio.h>
void fun(char*s,char*t,char*p)
{
//puts(s);
int i,j,k,l,m,flag;
for(k=0;s[k]!='\0';){k++;}
for(l=0;t[l]!='\0';){l++;}
m = 0;
for (i = 0; i < l; i++)
{
flag = 0;
for (j = 0;j < k;j++)
{
if(t[i] == s[j])
{
flag = 1;
break;
}
}
if (flag == 0)
{
p[m++] = t[i];
}
}
printf("result:");
puts(p);
}
int main()
{
char s[100]={0};
char t[100]={0};
char p[100]={0};
printf("input string s:");
gets(s);
printf("input string t:");
gets(t);
fun(s,t,p);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632