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

admin2019-05-29  33

问题 使用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<iostream>
void fun(char *s,char *s1,char*s2)
{

}
void main()
{
char s[]="ABCABC";
fun(s,"AC","ZX");
std::cout<<s<<std::endl;
return;
}

选项

答案char *p,*q; for(;*s;s++)//在串s中找符合条件的字符,然后替换 { for(p=s1,q=s2;*p;p++,q++)//让指针p,q分别指向s1和s2 { if(*p==*s)//如果S中存在s1中p指向的字符 { *s=*q;//那么用q指向的s2中的字符替换 } } }

解析 (1)让指针p,q分别指向s1和s2。
(2)然后利用for循环对S中的每一个当前字符与P指向的字符进行比较。
(3)如果(2)中的比较结果相等,那么用q指向s2中对应的字符替换。
转载请注明原文地址:https://jikaoti.com/ti/g5A0FFFM
0

相关试题推荐
最新回复(0)