问答题 编程题(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:"<
【答案解析】