问答题 请使用VC6或使用[答题]菜单打开考生文件夹proj3下的工程proj3,其中定义的MyString类是一个用于表示字符串的类。假设字符串由英文单词组成,单词与单词之间使用一个空格作为分隔符。成员函数wordCount的功能是计算组成字符串的单词的个数。 例如,字符串“dog”由1个单词组成;字符串“the quickbrown fox jumps over the lazy dog”由9个单词组成。请编写成员函数wordCount。在main函数中给出了一组测试数据,此时程序应显示: 读取输入文件... STR1=1 STR2=9 要求: 补充编制的内容写在“//********333********”与“//********666********”之间,不得修改程序的其他部分。 注意:程序最后将结果输出到文件out.dat中。输出函数WriteToFile已经编译为obj文件,并且在本程序中调用。 //mystring.h #include <iostream> #include <string.h> using namespace std; class MyString { public: MyString(const char* s) { str = new char[strlen(s)+1]; strcpy(str, s); } ~MyString() { delete [] str;} int wordCount() const; private: char * str; }; void writeToFile(char * , int); //main.cpp #include <fstream> #include "mystring.h" int MyString::wordCount() const { //******** 333******** //******** 666******** } int main() { char inname[128], pathname[80]; strcpy(pathname, ""); sprintf (inname, "in. dat", pathname); cout << "读取输入文件... /n/n"; ifstream infile (inname); if (infile.fail ()) { cerr << "打开输入文件失败!"; exit(1); } char buf[4096]; infile.getline(buf, 4096); MyString str1 ("dog"), str2 ("the quick brown fox jumps over the lazy dog"), str3 (buf); str1.wordCount (); cout << "STRI = " << str1.wordCount () << endl; cout << "STR2 = " << str2.wordCount() << endl << endl; writeToFile(pathname,str3.wordCount()); return 0; }
【正确答案】if(Str==NULL) return 0; //如字符串str为空,返回零 int counter=1; //给counter赋值为1 int length=strlen(str); //把字符串str长度赋值给length for(int i=0; i<length; i++) //i从零到length-1遍历 if(isspace(str[i])) //如果str[i]为空格字符 counter++; //counter自加1 return counter; //返回counter;
【答案解析】[考点] 本题考查的是MyString类,其中涉及动态数组、构造函数、析构函数和const函数。 [解析] 主要考查考生对动态数组的掌握情况,计算单词个数通过计算空格数目来完成。