在两个字符串中找字符 哪位大神帮忙答一下这道C语言题目啊

编写程序:从键盘输入两个字符串,找出其中没有同时出现在两个字符串中的字符。例如:输入串1:abca串2:bcd输出:ad在网上找过了,都不能通过测试例2一楼的这个答案还不... 编写程序:从键盘输入两个字符串,找出其中没有同时出现在两个字符串中的字符。
例如:输入串1:abca 串2:bcd
输出:ad
在网上找过了,都不能通过测试例2
一楼的这个答案还不对
展开
 我来答
xtwgigu2
2015-06-09 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:54
采纳率:0%
帮助的人:75.5万
展开全部
//方法,找出同时在两个数组中出现的字母,做标记,剩下的就是本题结果。

void GetDiffChar( char* str1, char* str2, char* strOut)
{
const int nCout1 = strlen(str1);
const int nCout2 = strlen(str2);

for(int i=0; i<nCout1; i++)
{
char ch = str1[i];
for(int j=0; j<nCout2; j++)
{
if (str2[j] == ch)
{
str1[i] = 0xff; // mark
str2[j] = 0xff;
break;
}
}
}

//out
int nOutIndex = 0;
for(int i=0; i<nCout1; i++)
{
if(((unsigned char)str1[i]) != 0xff)
{
strOut[nOutIndex++] = str1[i];
}
}

for(int i=0; i<nCout2; i++)
{
if(((unsigned char)str2[i]) != 0xff)
{
strOut[nOutIndex++] = str2[i];
}
}
}

int main(void)
{
char str1[] = "1245678";
char str2[] = "943518";
char strOut[100] = {0};
GetDiffChar(str1, str2, strOut);
printf(strOut);

return 0;
}
追问
字符串是要手动输入的,不是定义的
追答
void GetDiffChar( char* str1,  char* str2, char* strOut)
{
const int nCout1 = strlen(str1);
const int nCout2 = strlen(str2);

for(int i=0; i<nCout1; i++)
{
char ch = str1[i];
for(int j=0; j<nCout2; j++)
{
if (str2[j] == ch)
{
str1[i] = 0xff; // mark
str2[j] = 0xff;

}
}
}

//out
int nOutIndex = 0;
for(int i=0; i<nCout1; i++)
{
if(((unsigned char)str1[i]) != 0xff)
{
strOut[nOutIndex++] = str1[i];
}
}

for(int i=0; i<nCout2; i++)
{
if(((unsigned char)str2[i]) != 0xff)
{
strOut[nOutIndex++] = str2[i];
}
}
}

int main(void)
{
char str1[100] = {0};
char str2[100] = {0};
printf("Please input the first string:");
scanf("%s", str1);

printf("Please input the second string:");
scanf("%s", str2);

char strOut[100] = {0};
GetDiffChar(str1, str2, strOut);
printf(strOut);

return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
余张的故事
推荐于2016-08-13 · 超过31用户采纳过TA的回答
知道答主
回答量:124
采纳率:0%
帮助的人:47万
展开全部
#include "stdio.h"
#include "string.h"
//从键盘输入两个字符串,找出其中没有同时出现在两个字符串中的字符。
//eg: abcd&&bdfg -------- abfg
main()
{
char a[100];
char b[100];
char c[100] = {0};
char d[100] = {0};
printf("请输入字符串a:\n");
scanf("%s", a);
printf("请输入字符串b:\n");
scanf("%s", b);
int n = strlen(a);
int m = strlen(b);
int k = 0;
int i, j;
for(i = 0; i < n; ++i) //选出字符串a中独有的字符
{
int judge = 1;
for(j = 0; j < m; ++j)
{
if(a[i] == b[j])
{
judge = 0;
return 0;
}
}
if(judge == 0)
continue;
c[i] = a[i];
}
for(i = 0; i < m ; ++i) //选出字符串b中独有的字符
{
int judge = 1;
for(j = 0; j < n; ++j)
{
if(b[i] == a[j])
{
judge = 0;
return 0;
}
}
if(judge == 0)
continue;
d[i] = b[i];
}
int n1 = strlen(c);
for(i = 0; i < n1; ++i)
printf("%c", c[i]);
int n2 = strlen(d);
for(i = 0;i < n2; ++i)
printf("%c", d[i]);
}
更多追问追答
追问
我测试了,可以编译成功,但是什么都没输出啊,大神,求帮忙修改下
追答
如果还不行,那大概就是编译器的不同了,我用的是vc++6.0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式