问答题 使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(char*s,char*s1,char*s2)中形参字符串s1和s2有相同的字符个数,且s1中各字符互不相同。该函数实现将已知字符串s中所有在字符串s1中也存在的字符,都用字符串s2中的对应位置的字符代替。 例如:设字符串s、s1和s2分别为: s[]=“ABCABC”, s1[]=“AC”, s2[]=“ZX” 则s2中的字符z和X分别对应s1中的字符C和A,函数调用fun(s,s1,s2)将字符串s的内容变为“ZBXZBX”。 注意:不能修改程序的其他部分,只能修改fun()函数。 #include void fun(char*s,char*s1,char *s2) { } void main() { char s[]=“ABCABC”; fun(s,“AC”,“ZX”); std::cout<
【正确答案】正确答案:char *p,*q; for(;*s;s++) //在串s中找符合条件的字符,然后替换 { for(p=s1,q=s2 ;*p ; p++,q++) //让指针p,q分别指向s 1和s 2 { if(*p==*s) //如果s中存在s l中p指向的字符 { *s=*q; //那么用q指向的s2中的字符替换 } } }
【答案解析】解析:(1)该程序功能是将己知字符串s中所有在字符串s1中也存在的字符,都用字符串s2中的对应位置的字符代替。它的解题思路,首先是找到符合替换条件的字符,然后进行替换。 (2)从己给部分源程序的main主函数开始入手,核心函数void fun(char*s,char*s1,char*s2)中的s1,s2参数为要替换的字符串,s为要被替换的字符串。