国家二级C++机试(操作题)模拟试卷509
基本操作题
1.请打开考生文件夹下的解决方案文件proj1,此工程中包含程序文件main.cpp,其中有ElectricFan(“电风扇”)类和主函数main的定义。程序中位于每个“//ERROR****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:
品牌:清风牌,电源:关,风速:0
品牌:清风牌,电源:开,风速:3
品牌:清风牌,电源:关,风速:0
注意:只修改每个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。
#include<iostream>
using namespace std;
class ElectricFan{//“电扇”类
char*brand;
int intensity;//风速:0-关机,1-弱,2-中,3-强
public:
ElectricFan(const char*the_brand):intensity(0){
brand=newchar[strlen(the_brand)+1];
strcpy(brand,the_brand);
}
~ElectricFan( ){delete[ ]brand;}
//ERROR*******found*******
const char*theBrand( )const{return*brand;}//返回电扇品牌
int theIntensity( )const{return intensity;}
//返回风速
bool isOn( )const{returnintensity>0;}
//返回电源开关状态
//ERROR*******found*******
void turnOff( ){intensity=1;}//关电扇
void setIntensity(int inten){
//开电扇并设置风速
//ERROR*******found*******
if(intensity>=1&&intensity<=3)
intensity=inten;
}
VOid Show( ){
cout<<\\
(1)const char*theBrand( )const{returnbrand;}
//返回电扇品牌
(2)void turnOff( ){intensity=0;}//关电扇
(3)if(inten>=1&&inten<=3)intensity=inten;
解析:(1)主要考查考生对指针的掌握情况,因为brand是一个动态指针,水brand表示字符串的首个字符,brand表示动态数组,这里要返回动态数组存储的品牌名称。
(2)主要考查考生对成员函数的掌握情况,根据题目中类的定义中私有成员的定义:int intensity;//风速:0-关机,1-弱,2-中,3-强,可知本函数要关电扇,因此在这里intensity=0;。
(3)主要考查考生对成员函数的掌握,根据题目中函数的注释:开电扇并设置风速,可知if语句里要判断的应该是形参inten而不是intensity。
简单应用题
2.请打开考生文件夹下的解决方案文件proj2,此工程中含有一个源程序文件proj2.cpp。函数char*GetNum(char*src,char*buf)从src开始扫描下一个数字字符序列,并将其作为一个字符串取出放入字符串空间bur中。函数返回扫描的终止位置,如果返回NULL表示没有扫描到数字字符序列。
运行程序时,如果输入的一行字符序列是
ABC012XYZ378MN274WS
则输出为:
Digit string1is012
Digit string2is378
Digit string3is274
注意:只在横线处编写适当代码,不要删除或移动“//****found****”。
//proj2.cpp
#include<iostream>
using namespace std;
char*GetNum(char*src,char*bur)
{
whle(*src!=\’0’)
{
if(isdigit(*src))break;
src++;
}
if(*src==’\0’)
//********found********
_______;
while(*src!=’\0’&&isdigit
(*src))
{
//********found********
_______;
bur++;
SEC++;
}
*buf=’\0’;
return src;
}
int main( )
{
char str[100],digits[20];
cin.getline(str,100);
char*p=str;
int i=1;
while((p=GetNum(p,dig~ts))!=NULL)
{
cout<<\\
(1)return NULL
(2)*buf=*src
(3)i++
解析:(1)主要考查考生对if语句的掌握,由判断条件if(*src==’\0’),说明字符串SYC为空,则返回NULL即可。
(2)主要考查考生对while循环语句的掌握,while语句的循环条件为*src!=’\0’&&isdigit(*src),该条件是指,若字符串src不为空并且*src指向的字符为数字字符,则进行循环。题目要求把数字字符放入字符串buf中,因此为*buf=*src。
(3)主要考查考生对while循环语句的掌握,从上一行语句cout<<\\
综合应用题
3.请打开考生文件夹下的解决方案文件proj3,其中定义了MyString类,一个用于表示字符串的类。成员函数reverse的功能是将字符串进行“反转”。例如,将字符串ABCDEF“反转”后,得到字符串FEDCBA;将字符串ABCDEFG“反转”后,得到字符串GFEDCBA。请编写成员函数reverse。在main函数中给出了一组测试数据,此时程序运行中应显示:
读取输入文件...
—反转前—
STR1=ABCDEF
STR2=ABCDEFG
—反转后—
STR1=FEDCBA
STR2=GFEDCBA
要求:
补充编制的内容写在“//********333********”与“//********666********”之间,不得修改程序的其他部分。
注意:程序最后将结果输出到文件out.dat中,输出函数WriteToFile已经编译为obj文件,并且在本程序中调用。
//mgsering.h
#include<iostream>
#include<cstring>
本文档预览:3600字符,共4573字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载