国家二级C++机试(操作题)模拟试卷555
基本操作题
1.使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出:
10
TestClass1
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******error******的下面。
1 #include<iostream>
2 Class TestClass1
3 {
4 public:
5 TestClass1(){
6 };
7 //********error+********
8 private:
9 virtual~TestClass1()
10 {
11 using namespace std;
12 cout<<’’TestClass1’’<<end1;
13 };
14 };
15 class TestClass2:public TestClass1
16 {
17 public:
18 //********error********
19 explicit TestClass2(int i)
20 {
21 m_i=i;
22 };
23 TestClass2& operator()(int i)
24 {
25 this一>m_i=i;
26 }
27 void print()
28 {
29 //********error********
30 cout<<m_i<<end1;
31 }
32 private:
33 int m_i;
34 };
35 void fun(TestClass2 C1)
36 {
37 C1.print();
38 }
39 int main()
40 {
41 fun(10);
42 return 0;
43 }
(1)删除“private:”语句
(2)TestClass2(int i)
(3)std::cout<<m_i<<std::end1;
解析:程序要求输出值为10,TestClass1。从己给定源程序的main主函数开始入手,main主函数首先调用fun函数,fun调用TestClass2中的print()函数,其中TestClass2继承了TestClass1。
(1)第1个标识下的“virtual~TestClass1()”语句是TestClass1()析构函数,不是私有函数,所以删除“private:”。
(2)“explicit TestClass2(int i)”构造函数语句中的“explicit”是禁止隐式转换。程序中无法实现对类TestClass2的直接使用,所以这里应该将其删除。即“TestClass2(int i)”。
(3)第3个标识下实现,fun函数中m_i的标准输出,即在屏幕上输出10。在程序中用到C++标准库时,要使用std标准命名空间进行限定。cout为标准库函数,所以要声明cout是在命名空间std中定义的流对象,即“std::cout<<m_i<<std::end1;”或者添加“using namespace std;”。
简单应用题
2.使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成函数fun(int x),该函数功能是将x的值转换成二进制数输出到屏幕,并且在函数中调用写函数WriteFile()将结果输出到modi2.txt文件中。
例如:x=13,13的二进制数字为1101,则输出到屏幕的为1101。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
1 #include<iostream>
2 #include<fstream>
3 #include<cmath>
4 using namespace std;
5 void WriteFile(char* str)
6 {
7 Ofstream out1;
8 out1.open(’’modi2.txt’’,ios_base::binary|ios_base::app);
9 for(int i=0;str[i]!=0;i++)
10 out1.put(str[i]);
11 out1.close();
12 }
13 void fun(int x)
14 {
15
16 }
17 void ClearFile()
18 {
19 ofstream out1;
20 out1.open(’’modi2.txt’’);
21 out1.close();
22 }
23 int main()
24 {
25 ClearFile();
26 fun(13);
27 return 0;
28 }
1 char str[32];
2 int i;
3 for(i=30;i>=0; i–)//计算二进制
4 {
5 if(x%2)str[i]=’1’; //求余,如果余不为零字符串str第i位为1
6 else str[i]=’0’; //否则为0
7 x>>=1;
8 if(!x)break;
9 }
10 str[31]=’\0’; //串加尾符
11 tout<<&str[i]<<end1;
12 WriteFile(&str[i]);
解析:(1)该程序功能是实现十进制转换成二进制数。十进制到二进制的转换是对十进制的数字进行2的取余运算,余数不为零则取1,否则为0,然后对余数进行循环取余运算,直到余数为0。
(2)从已给部分源程序的main主函数开始入手,核心函数fun(int x)中的x参数为输入的十进制数。
(4)定义存放二进制的字符串str。
(5)然后利用for循环对十进制数字x进行取余运算,直到余数为0结束。
(6)如果取余结果为0,则二进制字符串这个字符位的值为0,否则为1。
(7)最后调用WriteFile将运算结果存入文件。
综合应用题
3.用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了多个类,但类不能达到输出要求,按照定义的输出修改函数,使得输出如下:
TestClass3
TestClass2<
本文档预览:3600字符,共5753字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载