国家二级C++机试(操作题)模拟试卷352
基本操作题
1.使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错误,请改正错误,使得程序输出:
Hello
test
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在
//********error********的下面。
#include
//********error********
template
Void fun(T t)
{
std::cout<<\\
(1)template
(2)删除“template”
(3)bool flag=true;
解析:(1)C++中的模板类格式为template,所以将题目中程序中的第1个标识下语句“template”修改为“template”。
(2)在第2个标识下的“void fun(bool t)”函数中,其中t变量为布尔型变量,是C++中的基础变量,并不是模板变量,并没有使用到模板类,所以删除第2个标识下的模板类型定义语句。
(3)第3个标识下的“bool flag=TRUE;”是声明布尔型变量flag,并将其值赋为逻辑真。而TRUE并不是合法值,C++中区分大小写,所以逻辑真值应为true,即“bool flag=true;”。
简单应用题
2.使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成函数fun(int x),该函数功能是将x的值转换成二进制数输出到屏幕,并且在函数中调用写函数WriteFile()将结果输出到modi2.txt文件中。
例如:x=13,13的二进制数字为1101,则输出到屏幕的为1101。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
#include
#include
#include
using namespace std;
Void WriteFiie(char*str)
{
ofstream out1;
out1.open(\\
char str[32];
int i;
for(i=30;i>=0;i–)//计算二进制
{
if(x%2)str[i]=’1’; //求余,如果余不为零字符串str第i位为1
else str[i]=’0’; //否则为0
x>>=1;
if(!x)break;
}
str[31]=’\0’; //串加尾符
cout<<&str[i]<<endl;
WriteFile(&str[i]);
解析:(1)定义存放二进制的字符串str。
(2)然后利用for循环对十进制数字X进行取余运算,直到余数为0结束。
(3)如果取余结果为0,则二进制字符串这个字符位的值为0,否则为1。
(4)最后调用WriteFile将运算结果存入文件。
综合应用题
3.使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
(1)定义类的公有数据成员函数No、Name[32],其中No是int型的数据,Name[32]为字符型。请在注释//********1********后添加适当的语句。
(2)完成函数set的定义,分别设置No和Name的值,请在注释//********2********后添加适当的语句。
(3)完成函数print(),请在注释//********3********后添加适当的语句,打印的输出如下:
No=111
Name=Garfield
(4)加缺省构造函数,设置No为0,Name为空,请在注释//********4********后添加适当的语句。
注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。
#include
Class TestClass
{
public:
//********1********
//********2********
{
No=no;
for(int i=0;strName[i]!=
0;i++)
{
Name[i]=strName[i];
Name[i+1]=0;
}
}
void print()
{
//********3********
}
Testelass()
{
//********4********
}
};
int main()
{
TestClass stu;
stu.Set(111,\\
(1)添加语句:int No;char Name[32];
(2)添加语句:void Set(int no,char*strName)
(3)添加语句:cout<<\\
解析:(1)题目1要求“定义类的公有数据成员函数No、Name[32],其中No是int型的数据,Name[32]为字符型”。在已有程序中,类定义的public区域中,定义变量No,Name[32],即在第1个标识下添加语句“int No;char Name[32];”。
(2)题目2要求“完成函数set的定义,分别设置No和Name的值”。第2个标识下说明函数set的语句中,应该包括变量no,strName的定义,然后在函数中将其值赋值给No,Name,即添加定义语句“void Set(int no,char*strName)”。
(3)题目3要求“完成函数print()”,根据输出结果,知道输出的是No和Name的值,所以这里补全cout<<\\
本文档预览:3600字符,共3191字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载