字符串差集
【问题描述】
从键盘输入两个字符串A和B(每个字符串内都无重复字符)。求两个字符串的差集,即:将字符串A中与字符串B中相同的字符去掉(大小写无关,即同一字符的大小写认为是相同的字符)。然后按照ASCII码从小到大的顺序输出差集。若差集为空,则输出字符串:NULL。
【输入形式】
先从键盘输入字符串A,然后输入字符串B,每个字符串末尾都有回车换行符,但回车换行符不作为字符串的字符,并且每个字符串不超过50个字符。
【输出形式】
按照ASCII码从小到大的顺序输出字符串A减去字符串B的差集。
【输入样例】
Ni Hao,Lu!
hi wang!
【输出样例】
,Lou
【样例说明】
输入的字符串A为“Ni Hao,Lu!”,字符串B为“hi wang!”。字符串A中与字符串B相同的字符(大小写无关)有六个:’N’,’i’,’H’,’a’,’!’以及空格符,将这六个字符从A中去掉,按照ASCII码从小到大的顺序输出为:,Lou。
————————————————————以下是我写的代码,只能运行出来NULL,其他的数据都出错,请老爷们帮忙看看哪里出了问题—————————————————
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Paixxu(char *s)
{
char t;
for(int i = 0;i<strlen(s)-1;i++)
{
for(int j = i+1;j<strlen(s);j++)
{
if(s[i]>s[j])
{
t = s[i];
s[i] = s[j];
s[j] = t;
}
}
}
}
int main()
{
char A[51],B[51],C[51];
int i,j,count=0;
gets(A);
gets(B);
for(i=0;i<strlen(A)-1;i++)
{
for(j=0;j<strlen(B);j++)
{
if(A[i]==B[j] || A[i]==B[j]+'32' || A[i]==B[j]-'32')
break;
else
C[count++] = A[i];
}
}
C[count] = '\0';
if(strlen(C))
{
Paixxu(C);
printf("%s",C);
}
else
printf("NULL");
return 0;
}