问题 问答题

请使用“答题”菜单或使用VC6打开考生文件夹proj3下的工程proj3,其中声明了MyString类。MyString是一个用于表示字符串的类。成员函数startsWith的功能是判断此字符串是否以指定的前缀开始,其参数s用于指定前缀字符串。如果参数s表示的字符串是MyString对象表示的字符串的前缀,则返回true;否则返回false。注意,如果参数s是空字符串或等于MyString对象表示的字符串,则结果为true。
例如:字符串"abc"是字符串"abcde"的前缀,而字符串"abd"不是字符串"abcde"的前缀。请编写成员函数startsWith。在main函数中给出了一组测试数据,此情况下程序的输出应该是:
s1=abcde
s2=abc
s3=abd
s4=
s5=abcde
s6=abcdef
s1 startsWith s2:true
s1 startsWith s3 false
s1 startsWith s4 true
s1 startsWith s5 f true
s1 startsWith s6 false
要求:补充编制的内容写在//********333********与//********666********两行之间,不得修改程序的其他部分。
注意:程序最后已经将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
//源程序
#include"MyString.h"
bool MyString::startsWith(const char*s)const
//********333******** //********666********

int main()
char s1[]="abcde";
char s2[]="abc";
char s3[]="abd";
char s4[]=" ";
char s5[]="abcde";
char s6[]="abcdef";
MyString str(s1);
cout<<"s1="<<s1<<endl<<"s2="<<s2<<endl<<"s3="<<s3<<endl
<<"s4="<<s4<<endl<<"s5="<<s5<<endl<<"s6="<<s6<<endl:
cout<<boolalpha<<"s1 startsWith s2:"<<str.startsWith(s2)<<endl
<<"s1 startsWith s3:"<<str.startsWith(s3)<<endl
<<"s1 startsWith s4:"<<str.startsWith(s4)<<endl
<<"s1 startsWith s5:"<<str.startsWith(s5)<<endl
<<"s1 startsWith s6:"<<str.startsWith(s6)<<endl;
//writeToFile("K:\\bl0\\61000101\\");
return 0:

答案

参考答案:

//********CCC********

if(s==NULL) return true,

else{

for(int i=0;i if(str[i]!=s[i])return false;

}

return true:

//********FFF********

 

解析:

首先判断传人的形参s是否为空字符串,如果是,则直接返回为true,否则进行比较。按照s的字符长度进行比较。如果strlen(s)>size,显然为false;如果strlen(s)<=size,则逐个位置元素比较。如果出现不相等,则直接返回fasle;如果循环完毕仍然相等,则说明s被包含在str中,返回true。

单项选择题
多项选择题