问答题
编程题(20分)
【题目】
试定义一个类STR,实现两个字符串的交集。具体要求如下:
(1)私有数据成员。
char s1[50],s2[50],s0[50]:字符串s0用于存放字符串s1和字符串s2的交集。
(2)公有成员函数。
?STR(char *p1,char *p2):构造函数,分别用参数p1和p2初始化成员数组s1和s2
?int isin(char *p,char c):判断字符c是否出现在字符串p中,如果是,则返回值为1,否则返回值为0
?void fun():求成员数组s1和s2的交集,并将结果存放在成员数组s0中。提示:利用函数isin(char *,char)依次判断一个字符串中的每个字符是否包含于另一个字符串中,如果包含,且该字符不包含于成员数组s0中,则将该字符加入到成员数组s0中。
?void print():按输出示例的格式输出所有数据成员。
(3)在主函数中对该类进行测试。
输出示例:
字符串1:abcdef123abc12
字符串2:acef123ace124
两个字符串的交集:acef123
【要求】
源程序文件名必须为myfb.cpp,并放在T盘根目录下,供阅卷用。
【正确答案】 #include
#include
class STR{
char s1[50],s2[50],s0[50];
public:
STR(char *p1.char *p2)
{
strcpy(s1,p1);
strcpy(s2,p2);
s0[0]='/0';
}
int isin(char *p,char c)
{char *p0=p;
while(*p0)
if(*p0++==c) return 1;
return 0;
}
void fun()
{
for(char *p1=s1,*p0=s0;*p1;p1++)
{
if(isin(s2,*p1)&&(!isin(s0,*p1)))
{
*p0++=*p1;
}
*p0='/0';
}
}
void print()
{ cout<<"字符串1:"<
【答案解析】