使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(char*s,char*s1,char*s2)中形参字符串s1和s2有相同的字符个数,且s1中各字符互不相同。该函数实现将已知字符串S中所有在字

admin2018-10-23  30

问题 使用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,s`,s2)将字符串s的内容变为’’ZBXZBX’’。
    注意:不能修改程序的其他部分,只能修改fun()函数。
1  #include<iostream>
2  void fun(char *s,char*s1,char*s2)
3  {
4
5  }
6  void main()
7  {
8    char s[]=’’ABCABC’’;
9    fun(s,’’AC’’,’’ZX’’);
10    std::cout<<s<<std::end1;
11    return;
12  }

选项

答案1 char *p,*q; 2 for(;*s;s++)//在串s中找符合条件的字符,然后替换 3 { 4 for(p=s1,q=s2;*p;p++,q++)//让指针p,q分别指向s1和s2 5 { 6 if(*p==*s)//如果s中存在s1中p指向的字符 7 { 8 *s=*q;//那么用q指向的s2中的字符替换 9 } 10 } 11 }

解析 (1)该程序功能是将已知字符串s中所有在字符串s1中也存在的字符,都用字符串s2中的对应位置的字符代替。它的解题思路,首先是找到符合替换条件的字符,然后进行替换。
    (2)从已给部分源程序的main主函数开始入手,核心函数void fun(char*s,char*s1,char*s2)中的s1,s2参数为要替换的字符串,s为要被替换的字符串。
转载请注明原文地址:https://kaotiyun.com/show/FwAp777K
0

最新回复(0)