程序改错题(18分)
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误.请改正程序中的错误,本题的功能是从键盘中输入字符串str,然后输出字符串str中的字符个数。
注意:错误的语句在/********error********/的下面,修改该语句即可。其他的语句不能修改。
试题程序:
#include
intmain()
{
/********error********/
cout<<"pleaseinputastrin9:"<
/********error*******/
namespacestd;
charstr[256];
cin.getline(str,256);
cout<<>
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::前缀。<><><><><><>