题目:http://www.patest.cn/contests/pat-b-practise/1029
代码:
#include <stdio.h>
#include <ctype.h>
int main()
{
char a[82],b[82],c[82];
int i=0,j=0,k=0,m,flag;
gets(a);
gets(b);
while (a[i]!='\0')
{
flag = 1;
if (a[i]==b[j])
{
if (b[j+1]!='\0')
j++;
}
else
{
for (m=0;m<k;m++)
{
if (c[m]==a[i])
{
flag = 0;
break;
}
if (islower(a[i])&&c[m]==(a[i]-32))
{
flag = 0;
break;
}
}
if (flag == 1)
{
if (islower(a[i]))
c[k] = a[i] - 32;
else
c[k] = a[i];
k++;
}
}
i++;
}
for (i=0;i<k;i++)
printf("%c",c[i]);
return 0;
}
之前纠结点:
1.刚开始数组a,b大小均设为80,所以测试点3 4有错(因为当测试数据为长度80时,用get得到的字符数组最后就没有‘\0’了),将大小设为82解决
2.ASCILL码字母和数字在32的范围内有交集。
get知识点:
1.islower(),若为小写返回非0,否则返回0
isupper(),若未大学返回非0,否则返回0