1、国家二级 C+机试(操作题)模拟试卷 345及答案与解析 一、基本操作题 1 请使用 VC6或使用【答题】菜单打开考生文件夹 prog1下的工程 prog1,该工程中包含程序文件 main epp,其中有 Salary(“工资 ”)类和主函数 main的定义。程序中位于每个 “ ERROR*found*”之后的一行语句行有错误,请加以改正。改正后程序的输出结果应为: 应发合计: 3500 应扣合计: 67 5 实发工资: 3432 5 注意:只修改每个 “ ERROR*found*”下的那一行,不要改动程序中的其他内容。 #include using namespace std; class
2、Salary public: Salary(const char*id,double the base, double the bonus, double the tax) ERROR*found* : the base(base), the bonus(bonus), the tax(tax) staff id=new charstrlen(id)+ 1; strcpy(staff id, id); ERROR*found* 一 Salary()delete*staff_id; ) double getGrossPay()constreturn base+bonus; )返回应发项合计 do
3、uble getNetPay()constreturn get GrossPay()一 tax; 返回实发工资额 private: char*staff id; 职工号 double base; 基本工资 double bonus; 奖金 double tax; /代扣个人所得税 ; int main() Salary pay(”888888”, 3000 0, 500 0, 67 50); cout; using namespace std; class Date 日期类 int year, month, day;年、月、日 public: Date(int year, int month,
4、 int day): year(year), month(month), day(day) int getYear()constreturn year; int getMonth()constreturn month; ) int getDay()constreturn day; ) ; class Person人员类 char name14,姓名 bool is male;性别,为 true时表示 男性 Date birth date;出生日期 public: Person(char*name, bool is male, Date birth_date) *found* : _ strcp
5、y(this-name, name); const char*getName()constreturn name; ) bool isMale()constreturn is male; Date getBirthdate()const return birth date; ) 利用 strcmp()函数比较姓名,返回一个 正数、 0或负数,分别表示大于、等于、小于 int compareName(const Person friend ostream&operator void MyString: EeveEse() *333* /*666* int main() char inname12
6、8, pathname80; strcpy(pathname, ”); sprintf(inname, ”in dat”, pathname); coutname, name);可知,要使用成员列表初始化的成员为 is_male和birth_date。 (2)主要考查考生对 strcmp()函数的掌握,先看程序对该函数的功能要求:利用strcmp()函数比较姓名,返回一个正数、 0或负数,分别表示大于、等于、小于。因为 strcmp()函数的功能是比较字符串大小,因此可以直接被 retum语句调用:return strcmp(nalne, P getName();。 (3)主要考查考生对成员函
7、数的掌握,程序的注释为:显示出生月,由此可以知道这里要输出出生月份,直接调用函数 getMonth()即可。 三、综合应用题 3 【正确答案】 int length=Strlen (Str); 把字符串 str的长度赋值给 lenth for(int i=0, j=length一 1; ij; i+, j-) 从 i=0, j=length一 1, ij为条件开始 遍历,并把 Stri和 Strj交换 char temp=stri; 给定义的临时变量 temp赋值为 stri stri=strj; 给 Stri赋值 Strj strj=temp; 给 Strj赋值为 temp 【试题解析】 主要考查考生对动态数组的掌握,先看题目要求:成员函数reverse的功能是将字符串进行 “反转 ”。再由类的定义可知,字符串存放在动态数组 str中,由 strlen函数得出字符串的长度,最后一个字符的下标为 length一 1,第一个字符的下标为 0,将这两个字符交换,然后 j依次减 1同时 i依次 加 1,继续交换,直到 i大于 j时停止循环即可。