国家二级C++机试(操作题)模拟试卷313
基本操作题
1.使用VC6打开考生文件夹下的源程序文件modi.cpp,该程序运行时有错,请改正其中错误,使得程序正常运行,并使程序输出的结果为:
c
Test
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//********error********的下面。
#inciude
Void main()
{
//********error********
char c=\\
(1)char C=’C’;
(2)int b=1024;
(3)b+=1024;
解析:(1)打开modi1.cpp,调试程序,显示错误提示为第一标识下“odil.cpp(5):error C2440:’initializing’:cannot convert from’char[2]’to’char’”。变量C的类型为字符型,字符型值应该是用单引号,双引号是字符串型。所以这里修改为“char C=’c’;”。
(2)根据第3个标识下的语句知道,b的值加上1024,然后判断b的值是否为2048,所以这里b的类型应该是整型,而不是字符型,所以修改为“intb=1024;”。
(3)显示第3个标识下的语句“b+=1024;”的错误提示modi1.cpp(10):error C2018:unknown character’Oxa3’,因为语句中的“;”为中文输入法下的输入,并不是英文下的“;”,所以修改为“b+=1024;”。
简单应用题
2.使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成函数fun(char*str,char ch),本函数采用二分法,在已按字母次序从小到大排序的字符数组str中,查找字符ch,若ch在数组中,函数返回字符ch在数组中的下标,否则返回-1。
二分法查找的思想是:初始查找区间的下界为0,上界为len-1,查找区间的中后,k=(下界+上界)/2:若list[k]等于ch,查找成功;若list[k]>ch,则新的查找区间的下界不变,上界改为k-1;否则新的查找区间的下界改为k+1,上界不变。在新区间内继续用二分法查找。
注意:请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
int fun(char*str,char ch)
{
}
void main()
{
char str[]={’a’,’b’,’c’,’d’,
’e’,’f’,’g’,’h’,’i’,’j’,’k’,0};
char ch;
cout<<\\
int low=0; //初始查找区间的下界
int high;
int k;
for(high=0;str[high]!=0;high++)
//求字符串长度
while(low<high)//循环判断字符位置
{
k=(low+high)/2;
if(str[k]==ch)
return k;
else if(str[k]>ch)
high=k-1;
else low=k+1;
}
if(str[low]==ch)
return low;
return -1;
解析:(1)首先,初始查找区间的下界为0。
(2)然后,求得字符串长度len,上界为len-1,查找区间的中后,k=(下界+上界)/2;若list[k]等于ch,查找成功。
(3)若list[k]>ch,则新的查找区间的下界不变,上界改为k.1;否则新的查找区间的下界改为k+1,上界不变。
综合应用题
3.使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:
(1)完成构造函数的定义,使得数据成员变量filename和contex为空,内容长度FileLength为0。请在注释//********1********后添加适当的语句。
(2)完成析构函数,对contex内存的释放。请在注释//********2********后添加适当的语句。
(3)完成WriteFile()函数,用来对contex内容进行设置填充内容,如果以前有内容,则删除以前的内容,重新填写。请在注释//********3********后添加适当的语句。
(4)完成CopyFile()函数,完成将参数对象的contex的内容拷贝到当前的文件内容中,请在注释//********4********后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
#include
class MyFileClass
{
private:
char filename[64];
char*contex;
int FileLength;
public:
MyFileClass()
{
//********1********
contex=NULL;
FileLength=0;
}
~MyFileClass()
{
if(FileLength)
//********2********
}
void OpenFile(char*str,int
len)
{
for(int i=0;i<len;i++)
{
filename[i]=str[i];
}
filename[len]=0;
FileLength=0;
if(contex)
{
delete[]contex;
contex=NULL;
}
}
Void WriteFlie(char* str,
int len)
{
if(contex!=NULL)
//********3********
contex=new char[len+1];
for(int i=0;i<len;i++)
contex[i]=str[i];
contex[1er]]=0;
FileLength:fen;
)
void CopyFile(MyFileClass&
file)
{
//*****
本文档预览:3600字符,共4135字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载