程序改错题(18分)
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误.请改正程序中的错误,本题的功能是从键盘中输入字符串str,然后输出字符串str中的字符个数。
注意:错误的语句在/********error********/的下面,修改该语句即可。其他的语句不能修改。
试题程序:
#include
intmain()
{
/********error********/
cout<<"pleaseinputastrin9:"< /********error*******/
namespacestd;
charstr[256];
cin.getline(str,256);
cout< return0;
}
简单应用题(24分)
使用VC++6.o打开考生文件夹下的源程序文件2.cpp。请完成函数fun(char*str1,char*str2),此函数的功能是计算str1中出现str2的个数,当不出现时,则返回0。
例如:
str1为“asdfsfdfg”
str2为“sf”则返回1
str2为“df”则返回3
注意:不能修改函数的其他部分。
试题程序:
#include
//注意只能使用int类型,不能类型转换
intfun(char*str1,char*str2)
{
}
voidmain()
{
charstr1[1024];
charstr2[256];
cout<<"pleaseinputastring:"< cin.getline(str1,1024);
cout<<"pleaseinputotherstring;"< cin.getline(str2,256);
cout< cout< return;
}
综合应用题(18分)
使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了用于表示日期的类Date,但类Date的定义并不完整。请按要求完成下列操作,将类Date的定义补充完成。
(1)定义私有数据成员year、month和day,分别用于表示年、月和日,它们都是int型的数据。请在注释1之后添加适当的语句。
(2)完成默认构造函数Date的定义,使Date对象的默认值为year=1,month=1,day=1,请在注释2之后添加适当的语句。
(3)完成重载构造函数Date(inty,intm,intd)的定义,把数据成员year、month和day分别初始化为参数y、m和d的值,请在注释3之后添加适当的语句。
(4)完成成员函数print的类外定义,使其以“年一月一日”的格式将Date对象的值输出到屏幕上,例如1949-10-1。请在注释4之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
试题程序:
#include
classDate
{
public:
//********1********
Date(inty。intm,intd)
{
//********2********
}
voidprint()const;
private:
//datamember
//********3********
};
voidDate::print()const
{
//********4********
}
intmain()
{
DateOlympic_BJ(2008,8,8);
Olympic_BJ.print();return0;
}
程序改错题
本题考查了考生对名字空间的了解情况。
(1)“cout<<"pleaseinputastrin9:”<(endl;”应改为“std::cout<<”pleaseinputastrin9:”<(std::endl;”。
(2)“namespacestd;”应改为“usingnamespacestd;”。
【解析】本题中程序使用的头文件是(iostream),没有.h
后缀,该头文件中定义的所有标识符都位于C++标准库名
字空间“std”内。所以语句“cout<<"pleaseinputastrin9:"< 加std::前缀的麻烦,可以使用语句“usingnamespacestd”。
简单应用题
intfun(char*str1.char*str2)
{
intsize=0;
intstrllen;
intstr2len;
for(strllen=0;str1[strllen]!=0;strllen++);
for(str21en=0;str2[str21en]!=0;str2len++);
for(inti=0:i {
intj=0;
for(;j if(strl[i+j]!=str2[j])
break;
if(i==str21en)
{
++size;
i+=j;
}
}
returnsize;
}
【解析】本题考查的是字符串查找算法。首先求出两个字符串的长度,然后循环遍历第1个字符串,再使用一个内循环遍历第2个字符串,判断两个字符串相应位置是否一致。如果遍历完第2个字符串,所有位置都一致,则记数值size增1,即找到一个子串。
综合应用题
(1)应添加“Date(){year=1;month=1;day=l;}”或“Date():year(1),month(t),day(1){}”。
(2)应添加“year=Y;month=m;day=d;”。
(3)应添加“intyear,month,day;”。
(4)应添加“cout< 【解析】本题考查了类的定义。根据题意,此处应定义3个int型数据成员year、month和day。根据题意,第2处应添加默认构造函数,并初始化3个变量,这里既可以使用赋值语句来实现,也可以使用初始化列表。第3处只能通过赋值语句初始化3个成员,因为注释3位于函数中,无法在此处使用初始化列表。添加输出语句.注意题目头包含的头文件是iostream.h,不能添加std::前缀。