计算机类
公务员类
工程类
语言类
金融会计类
计算机类
医学类
研究生类
专业技术资格
职业技能资格
学历类
党建思政类
计算机等级考试(NCRE)
全国计算机应用水平考试(NIT)
计算机软件水平考试
计算机等级考试(NCRE)
全国高校计算机等级考试CCT
行业认证
信息素养
计算机等级考试二级
计算机等级考试一级
网络工程师(计算机等级考试四级)
计算机等级考试二级
数据库工程师(计算机等级考试四级)
计算机等级考试三级
信息安全工程师(计算机等级考试四级)
嵌入式系统开发工程师(计算机等级考试四级)
软件测试工程师(计算机等级考试四级)
C++语言程序设计
Python语言程序设计
WPS Office高级应用与设计
C语言程序设计
C++语言程序设计
Java语言程序设计
Visual Basic语言程序设计
Web程序设计
Access数据库程序设计
MySQL数据库程序设计
Visual FoxPro数据库程序设计
办公软件高级应用
应用题 请使用VC6或使用【答题】菜单打开proj3下的工程文件proj3。本题创建一个小型字符串类,字符串长度不超过100。程序文件包括proj3.h、proj3.cpp、writeToFile.obj。补充完成重载赋值运算符函数,完成深复制功能。 屏幕上输出的正确结果应该是: Hello! Happy new year! 要求: 补充编制的内容写在“// ********333********”与“// ********666********”两行之间。不得修改程序的其他部分。 注意: 程序最后调用writeToFile函数,使用另一组不同的测试数据,将不同的运行结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件。 //proj3.h #include <iostream> #include <iomanip> using namespace std; class MiniString { public: friend ostream operator << (ostream output, const MiniString s) //重载流插入运算符 {output << s.sPtr; return output;} friend istream operator >> (istream input, MiniString s) //重载流提取运算符 {char temp[100]; //用于输入的临时数组 temp[0] = '\0'; //初始为空字符串 input >> setw(100) >> temp; int inLen = strlen(temp); //输入字符串长度 if(inLen ! = 0) { s.length = inLen; //赋长度 if (s.sPtr! = 0) delete[]s.sPtr; //避免内存泄漏 s.sPtr = new char[s.length +1]; strcpy(s.sPtr, temp); //如果s不是空指针,则复制内容 } else s.sPtr[0] = '\0'; //如果s是空指针,则为空字符串 return input; } void modString(const char * string2 ) //更改字符串内容 { if (string2 ! = 0) //如果string2不是空指针,则复制内容 { if (strlen(string2) ! = length) { length = strlen (string2); delete []sPtr; sPtr = new char [length +1]; //分配内存 } strcpy(sPtr, string2); } else sPtr [0] = '\0'; //如果string2是空指针,则为空字符串 } MiniString operator = (const MiniString otherString); MiniString (const char * s = ' '):length((s ! = 0) ? strlen(s):0) //构造函数 { s Ptr = 0; if (length! =0) setString(s); } ~MiniString() //析构函数 {delete [] sPtr;} private: int length; //字符串长度 char * sPtr; //指向字符串起始位置 void setString(const char * string2) //辅助函数 { sPtr = new char[strlen(string2) +1]; //分配内存 if(string2 ! = 0) strcpy(sPtr, string2); //如果string2不是空指针,则复制内容 else sPtr[0] = '\0'; //如果string2是空指针,则为空字符串 } }; //proj3.cpp #include <iostream> #include <iomanip> using namespace std; #include 'proj3.h' MiniString MiniString::operator = (const MiniString otherString) {//重载赋值运算符函数。提示:可以调用辅助函数setString // ********333******** // ********666******** } int main() { MiniString str1 ('Hello!'), str2; void writeToFile(const char *); str2 = str1; //使用重载的赋值运算符 str2.modString ('Happy new year!'); cout << str1 << '\n'; cout << str2 << '\n'; writeToFile (' '); return 0; }
进入题库练习
应用题 请使用VC6或使用[答题]菜单打开proj2下的工程proj2,该工程中包含一个程序文件main. epp,其中有日期类Date、人员类Person及排序函数sortByName和主函数main的定义。请在程序中的横线处填写适当的代码并删除横线,以实现上述类定义和函数定义。此程序的正确输出结果应为: 按姓名排序 排序前: 张三 男 出生日期:1978年4月20日 王五 女 出生日期:1965年8月3日 杨六 女 出生日期:1965年9月5日 李四 男 出生日期:1973年5月30日 排序后: 李四 男 出生日期:1973年5月30日 王五 女 出生日期:1965年8月3日 杨六 女 出生日期:1965年9月5日 张三 男 出生日期:1978年4月20日 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。 #include<iostream> using namespace std; class Date {//日期类 int year, month, day;//年、月、日 public: Date(int year, int month, int day): year(year), month(month), day(day) {} int getYear()const {return year;} int getMonth()const {return month;} int getDay()const {return day;} }; class Person {//人员类 char name[14];//姓名 bool is_male;//性别,为true时表示男性 Date birth—date;//出生日期 public: Person(char*name, bool is_male, Date birth_date) //**********found********** :______ { strcpy(this->name, name); } const char*getName()const {return name;} bool isMale()const {return is_male;} Date getBirthdate()const {return birth_date;} //利用strcmp()函数比较姓名,返回一个正数、0或负数,分别表示大于、等于、小于 int compareName(const Person p)const { //**********found********** ______} void show() { cout<<endl; cout<<name<<'<<(is_male?'男': '女')<<'<<'出生日期: '<<birth_date. getYear()<<'年'//显示出生年 //**********found********** ______//显示出生月 <<birth_date. getDay()<<'日';//显示出生日 } }; void sortByName(Person ps[], int size) { //将人员数组按姓名排列为升序 for(int i=0; i<size-1; i++) { //采用选择排序算法 int m=i; for(int j=i+1; j<size; j++) if(ps [j]. compareName(ps[m])<0) m=j; if(m>i) { Person P=ps[m]; ps[m]: ps[i]; ps[i]=P; } } } int main() { Person staff[]= { Person('张三', true, Date(1978, 4, 20)), Person('王五', false, Date(1965, 8, 3)), Person('杨六', false, Date(1965, 9, 5)), Person('李四', true, Date(1973, 5, 30)) }; const int size=sizeof(staff)/sizeof(staff[0]); int i; cout<<endl<<'按姓名排序'; cout<<endl<<'排序前:'; for(i=0; i<size; i++) staff[i]. show(); sortByName(staff, size); cout<<endl<<endl<<'排序后:'; for(i=0; i<size; i++) staff[i]. show(); cout<<endl; return 0; }
进入题库练习
应用题 请使用VC6或使用[答题]菜单打开proj2下的工程proj2,其中有矩阵基类MatrixBase、矩阵类Matrix和单位阵UnitMatrix的定义,还有main函数的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为: 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。 #include<iostream> using namespace std; //矩阵基础类,一个抽象类 class MatrixBase { int rows, cols; public: MatrixBase(int rows, int cols): rows(rows), cols(cols) {} int getRows()const {return rows;}//矩阵行数 int getCols()const {return cols;}//矩阵列数 virtual double getElement(int r, int c)const=0;//取第i个元素的值 void show()const {//分行显示矩阵中所有元素 for(int i=0; i<rows; i++) { cout<<endl; for(int i=0; j<cols; j++) //**********found********** cout<<______<<' '; } } }; //矩阵类 class Matrix: public MatrixBase { double*val; public: //**********found********** Matrix(int rows, int cols, double m[]=NULL):______ { //**********found********** val=______; for(int i=0; i<rows*cols; i++) val[i]=(m==NULL?0.0: m[i]); } ~Matrix() {delete[]val;} double getElement(int r. int c)const {return val[r*getCols()+c];} }; //单位阵(主对角线元素都是1,其余元素都是0的方阵)类 class UnitMatrix: public MatrixBase { public: UnitMatrix(int rows): MatrixBase(rows, rows) {} //单位阵行数列数相同 double getElement(int r, int c)const { //**********found********** if(______)return 1.0; return 0.0; } }; int main() { MatrixBase*m; double d[][5]= {{1, 2, 3, 4, 5}, {2, 3, 4, 5, 6}, {3, 4, 5, 6, 7}}; m=new Matrix(3, 5,(double*)d); m->show(); delete m; cout<<endl; m=new UnitMatrix(6); m->show(); delete m; return 0; }
进入题库练习
选择题 有如下程序: #include<iostream> #include<iomanip> using namespace std; int main(){ cOUt<<setw(10)<<serfill('x')<<setprecision(8)<<left; cout<<12.3456793<<______<<98765; return 0; } 若程序的输出是12.345679x98765xxxxx,则划线处缺失的部分是______。
进入题库练习
选择题 下列有关C++流的叙述中,错误的是______。
进入题库练习
选择题 下列关于派生类构造函数和析构函数的说法中,错误的是______。
进入题库练习
选择题 以下程序的输出结果是______。 #include<iostream.h> long fun(int n) { long s; if(n==1||n==2)s=2; else s=n-fun(n-1); return S; } void main(){ cout<<fun(3);}
进入题库练习
选择题 程序调试的任务是______。
进入题库练习
选择题 有如下程序: #include<iostream> using namespace std; class test{ private: int a; public: test0{cout+'constructor'+endl;} test(int a){cout+a+endl;) test(const testtest) { a=test.a; cout+,,copy constructor'+endl; } test(){Cout+'destructor'+endl;} }; int main() { test A(3); return 0; } 运行时输出的结果是______。
进入题库练习
选择题 已知类模板Test定义如下: template<typename T1, typename T2> Class Test{ public: void foo(T2 t); }; 则以下针对foo函数的类外定义中语法正确的是______。
进入题库练习
选择题 若有以下程序: #include <iostream> using namespace std; class point { private: int x, y; public: point ( ) { x=0; y=0; } void setpoint(int x1,int y1) { x=x1; y=y1; } void dispoint () { cout<<'x='<<x<<' , '<<'y='<<y<<end1; } }; int main ( ) { point *p=new point; p->setpoint (5, 12); p->dispoint (); return 0; } 程序运行后的输出结果是______。
进入题库练习
选择题 从工程管理角度,软件设计一般分为两步完成,它们是 。
进入题库练习
选择题 下列描述中正确的是______ 。
进入题库练习
选择题 如果一个类至少有一个纯虚函数,那么该类称为 。
进入题库练习
选择题 运算符重载时不需要保持的性质是______
进入题库练习
选择题 下列关于文件流的描述中,正确的是______。
进入题库练习
选择题 已知类MyClass中有一个只需要一个double型参数的构造函数,且将运算符“-”重载为友元函数。若语句序列 MyClass x(4.2), y(6.5), z(0.0); z=8.1-y; y=x-2.8; 能够正常运行,运算符“operator-”应该在类中声明为______。
进入题库练习
选择题 表达式10>5&&6%3的值是______
进入题库练习
选择题 下面程序中对一维坐标点类Point进行运算符重载 #include<iostream> using namespace std; class Point{ public: Point(int val){x=val;} Point operator++(){x++;return *this;} Point operator++(int){Point old=*this;++(*this);return old;} Int GetX()const{return x;} private: int x; }; int main() { Point a(10); cout<<(++a).GetX(); cout<<a++.GetX(); return 0; } 编译和运行情况是______。
进入题库练习
选择题 下面关于break语句的描述中,不正确的是______。
进入题库练习