使用 VC6 打开考生文件夹 proj1 下的工程 proj1, 其中定义了一个 CD 类。 程序中位于每个//ERROR**********found**********下的语句行有错误, 请加以更正, 不得修改程序的其他部分。 更正后程序的输出应该是:
歌唱祖国 30
义勇军进行曲 95
注意: 只能修改每个//ERROR**********found**********下的那一行, 不要改动程序中的其他内容。
#include<iostream>
#include<cstring>
using namespace std;
class CD
{
char name[20];
int number;
public:
void init(char*aa,int bb)
{
//ERROR*****found*****
name=aa;
number=bb;
}
char*getName(){
//ERROR*****found*****
return*name;
}
int getNumber(){return number;)
void output(){
//ERROR*****found*****
cout<<name[20]<<´ ´ <<number<<endl;
}
};
void main()
{
CD dx,dy;
dx.init("歌唱祖国",30);
dy.init("义勇军进行曲",3*dx.getNumber()+5);
dx.output();
dy.output();
}
(1)strcpy(name,aa);
(2)return name;
(3)cout<<name<<´ ´ <<number<<endl。
主要考查字符数组的赋值、 函数返回类型、 提取运算符>>和插入运算符。
程序定义 CD 类, 它包含两个数据成员: 字符数组 name 和整型变量 number;还包含四个公有成员函数, init()函数接收两个参数, 用参数对数据成员进行赋值; getName()函数返回数据成员 name; getNumber()函数返回数据成员 number; output()函数将数据成员name 和 number 输出。 CD 类的定义体中, 有三个错误:
(1)init()函数将形参 aa 赋给 name, 由于 name 是字符数组, 所以不能通过简单的赋值运算符进行赋值, 应该使用 strcpy()函数将形参 aa 指向的字符串拷贝到 name 中。
(2)getName()函数的返回值为 char*类型, 所以函数体的 return 语句应该返回 name, 而不是 name 指向的字符串。
(3)output()函数需要输出两个数据成员, 输出字符数组时, 只需要给出数组名 name 即可。