国家二级C++机试(操作题)模拟试卷620
基本操作题
1.请打开考生文件夹下的解决方案文件proj`,此工程包含—个源程序文件proj1.cpp。其中位于每个注释“//ERROR **** found ****”之后的~行语句存在错误。请改正这些错误,使程序的输出结果为:You are right.
注意:只修改注释“//ERROR **** found ****”的下一行语句,不要改动程序中的其他内容。
//proj 1.cpp
{}imelude<iostream>
using namespace std;
class MyClass
{
public:
MyClass(int x):number(x) {}
//ERROR *******found*******
~MyClass(int x) {}
//ERROR ******* found *******
void Judge(MyClasS&obj)i
private:
int number;
};
void Judge(MyClasS &obj)
{
if(obj.number==10)
cout<<\\
(1)~MyClass(){}
(2)friend void Judge(MyClass &obj);
(3)MyClass object(10);
解析:(1)主要考查考生对析构函数的掌握,析构函数是没有形参的,因此把形参去掉即可,因为该类没有动态分配空间,所以不需要使用delete语句释放空间。
(2)主要考查考生对友元函数的掌握,在函数定义中有语句void Judge(MyClass &obj),在main函数中有语句Judge(object);,即Judge函数是可以被类外函数调用的,并且定义时没有加上类名和作用域,因此可以知道Judge函数是友元函数,需要在类型前加上friend。
(3)主要考查考生对构造函数调用的掌握,题目要求输出结果为:You are right.,在Judge函数体内有语句:
if(obj.number==10)
cout<<\\
简单应用题
2.请打开考生文件夹下的解决方案文件proj2,此工程中含有一个源程序文件proj2.cpp。函数char*GetNum(char * src,char * buf)从src开始扫描下一个数字字符序列,并将其作为一个字符串取出放入字符串空间bur中。函数返回扫描的终止位置,如果返回NULL表示没有扫描到数字字符序列。
运行程序时,如果输入的一行字符序列是
ABC012XYZ378MN274WS
则输出为:
Digit string 1 is 012
Digit string 2 is 378
Digit string 3 is 274
注意:只在横线处编写适当代码,不要删除或移动“//****found****”。
//proj2.cpp
#include<iostream>
using namespace std;
char,* GetNum(char * src,char *buf)
{
while(* src!=’\0’)
{
if(isdigit(* src))break;
src++;
}
if(* src==’\0’)
//********found********
__________;
while(* src!=’\0’&& isdigit(*src))
{
//********found********
________;
buf++;
src++;
}
*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,digits))!=NULL)
{
cout<<\\
(1)return NULL
(2)*buf=*src
(3)i++
解析:(1)主要考查考生对if语句的掌握,由判断条件if(*src==’\0’),说明字符串src为空,则返回NuLL即可。
(2)主要考查考生对while循环语句的掌握,while语句的循环条件为木src!:=’\0’&&。isdigit(*src),该条件是指,若字符串src不为空并且*src指向的字符为数字字符,则进行循环。题目要求把数字字符放入字符串buf中,因此为*buf=*src。
(3)主要考查考生对while循环语句的掌握,从上一行语句cout<<\\
综合应用题
3.请打开考生文件夹下的解决方案文件proj3,其中包含了类TaxCalculator(“个税计算器”)和主函数main的定义。创建“个税计算器”需要接收税率表信息和起征额信息。在main函数中,通过两个数组创建了如下的税率表:
1 if(1ncome<=2000)
//如果收入小于2000
2 return tax_payable;
//直接tex payable(初始代为零)
3 if(taxab].E>lower limits[i]){
4 //如果taxable(收入超出起征额的部分)大于lower limits[i]阶段最低限额
5 tax payable += (taxable—lower_limits[i]) * rates[i];
//把起过阶段最低限额的部分乘以该阶段的税率后,加到tax payable(个人所得税)
6 taxable=lower_limits[i];
//把fower_limits[i]赋值于taxable
本文档预览:3600字符,共3791字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载