【真题+答案】2024年4月自考04737 C++程序设计试题

 绝密★启用前

2024年4月高等教育自学考试全国统一命题考试

C++程序设计

(课程代码04737)

注意事项:
1.本试卷分为两部分,第一部分为选择题,第二部分为非选择题。
2.应考者必须按试题顺序在答题卡(纸)指定位置上作答,答在试卷上无效。
3.涂写部分、画图部分必须使用 2B铅笔,书写部分必须使用黑色字迹签字笔。

第一部分 选择题

一、单项选择题:本大题共20小题,每小题1分,共20分。在每小题列出的备选项中只有一项是最符合题目要求的,请将其选出。
1.要建立良好的程序设计风格,描述正确的是
A.无需给程序添加注释
B.变量命名只要符合语法
C.首先考虑程序的执行效率
D.程序应清晰、可读性好

2.下列使用 const 的语句中,不正确的是
A.const int *a=&a;
B. const int buffer=168;
C. const double *p=&a;
D. double * const p=&a;

3.关于类定义格式的描述,不正确的是
A.一般类中包含数据成员和成员函数
B.一般类的定义格式分为说明部分和实现部分
C.类中成员有公有、私有、保护三种访问数据
D.成员函数都应是公有的,数据成员都应是私有的

4.关于对象的描述,不正确的是
A.一个对象在定义时就被初始化
B.对象的成员表示与C语言中结构变量的成员表示相同
C.一个类可以定义多个对象、指向对象的指针和对象数组
D.同一个类创建的若干对象的数据结构和内容都是不同的

5.假定一个类的构造函数为 A(int aa,int bb){a=aa++;b=a*++bb;},则执行“Ax(4,5);”语句后,x.a和x.b的值分别为
A.4和5
B.4和20
C.4和24
D.20和5

6.对于常量对象,C++遵循
A.其成员都是常量成员
B.可调用所有成员函数
C.可调用常量成员函数
D.可调用任何不改变对象值的成员函数

7.下列关于 this 指针的描述,正确的是
A.所有函数都有 tis 指针
B.所有类的成员函数都有 this 指针
C.与类相关的所有函数都有 this 指针
D.只有类的非静态成员函数有 this 指针

8.在重载一个运算符函数时,其参数表中没有任何参数,说明该运算符是
A.一元成员运算符
B.一元非成员运算符
C.二元成员运算符
D.二元非成员运算符

9.重载运算符“=”时,应该注意的是
A.函数不能返回引用
B.可用友元运算符重载
C.不要支持连续使用
D.必须用成员函数重载

10.下列对派生类的描述不正确的是
A.至少有一个基类
B.可以作为另一个派生类的基类
C.包含了基类的所有成员变量
D.继承的基类成员的访问权限不变

11.假设已有定义“class derived :private student{ //………….};”,其中 derived、private、student分别代表
A.派生类名、继承方式、基类名
B.基类名、继承方式、派生类名
C.继承方式、基类名、派生类名
D.派生类名、基类名、继承方式

12.让派生类D 的指针 pD 指向基类B的对象 oB 的语句是
A.pD=*oB;
B.pD=(B*)&oB;
C.pD=&oB;
D.pD=(D*)&oB;

13.所谓多态性是指
A.同样的语句相同的执行效果
B.不同的对象调用相同名称的函数
C.不同的语句相同的执行效果
D.不同的对象调用不同名称的函数

14.下面关于虚函数的描述,正确的是
A.可以是静态成员
B.只能是非成员函数
C.一般不声明为内联函数
D.友元函数可以定义为虚函数

15.在下列虚基类的声明中,正确的是
A. class virtual B:public A
B. class B:virtual public A
C. class B: public A virtual
D. virtual class B:public A

16.使用setwO格式操纵符需要包含头文件
A.stdlib.h
B. fstream.h
C.iomanip.h
D. iostream.h

17.已知:“imt a=5;char c=’a’;”,则输出语句“cout<<c+1<<a<<c;”的显示结果是
A.65a
B.985a
C.98’5’a
D.65’a’

18.用二进制模式以写入方式打开一磁盘文件的模式标记是
A. ios::in
B. ios::out
C. ios::in丨 ios::binary
D. ios:: out 丨ios::binary

19.有模板说明:template<typename T>,则T在函数模板中
A.不能作为函数模板名
B.不能作为函数参数类型
C.不能作为函数返回类型
D.不能作为函数中的变量类型

20.下列有关模板的描述,不正确的是
A.类模板与类是同一层次的抽象
B.模板把数据类型作为一个设计参数
C.类模板需要一种或多种类型参数
D.类模板是对不同类的公共性质的抽象

第二部分非选择题

二、填空题:本大题共15小题,每小题1分,共15分。请按试题顺序和空格顺序在答题卡(纸)指定位置上填写答案,错填、不填均无分。
21.函数“int f(char *x){char*y=x;while(*y++);return(y-x-1);}”用于求字符串的________。
22.执行代码“string str(“NihaoC++”);cout<<str.substr(5,3);”的输出结果是________。
23.属性是指描述________的静态特征的数据项,如考生的考号、姓名等。
24.面向对象程序设计将数据和________放在一起,作为相互依存、不可分割的整体处理。
25.构造函数是一种成员函数,它的名称与其________相同。
26.在类TClass的定义中有语句“fiendA_Class;”,说明把类________定义为类 TClass的友元类。
27.设 delete是要重载的运算符,那么重载运算符的函数名是________。
28.类的定义“classB{int bl,b2;};class D:public B{intd;};”中私有成员变量有________个。
29.类A是类B的基类,类B是类C的基类,则类C的对象既是类B中的一员,也是类A中的一员,即“is a”关系具有________性。
30.静态多态和动态多态的区别在于将函数实现和函数________关联起来的阶段不同。
31.补全“vft()”函数的定义,使其能成为基类中的纯虚函数:virtual void vft()________。
32.语句“cout<<endl<<x;”中,“endl”的作用是________。
33.类 ifstream 是从类________中派生而来的,因此 ifstream 拥有该类的全部成员函数。
34.模板参数表的写法和________列表的写法相似,形式是“类型 参数名,…”。
35.使用泛型数据类型替代实际的数据类型来说明成员变量,从而定义一个泛型类,这相当于定义一个________。

三、程序填空题:本大题共5小题,每小题4分,共20分。请按试题顺序和空格顺序在答题卡(纸)指定位置上填写答案,错填、不填均无分。

36.以下程序输出2024,请将程序补充完整。

#include <iostream>
using namespace std;
(1) //定义命名空间 ns
{ intx=24; }
int main()
{      intx=20;
       cout << x ;
       cout <<(2);//引用命名空间 ns
}

37.以下程序输出“98分”,请将程序补充完整。

#include <iostream>
using namespace std;
class Test{
private:
       int n;
public:
       Test(int i= 9){n=i; }
       int Get() { return n; }
       int Get() const {(1);}
};
int main()
{(2);
       const Test b(10);
       cout << a.Get()<< b.Get() <<"分"<< endl;
}

38.按要求完成类的定义:“姓名”和“性别”是教师、学生共有的属性,“年级”和“成绩”是学生特有的属性。

class person{
public:
(1)
};
class teacher:public person {
private:
         char title[20]; double salary;
};
class x2:virtual public x{
public:
         x2(){a+=2;cout<<"x2:"<<a<<",";}
};
class y:public x1,public x2{
public:
         y() {cout<<"y:"<<a<<endl;}
};
int main()
{
         y obj;
}

39.请将程序补充完整,使其输出结果为:

2024年4月
C++程序设计自学考试

#include <iostream>
using namespace std;
class A {
public:
         A(){cout<<"2024年";}
       ~A(){cout<<"自学考试"<<endl;}
};
class B: A{
public:
         B(){   (1)    ;}
       ~B(){   (2)    ;}
};
int main()
{    Bobj;    }

40.将程序补充完整,使其运行结果为:

输出1:1008
输出 2:883

#include <iostream>
using namespace std;
class A {
public:
         A(int a=135){m_a=a;}
         int get(){return m_a++;}
private:
int m_a;
};
         int  (1))   {return al.get()+a2.get()-15; }
int main()
{        Aal(888),a2,a3=9;
         cout<<"输出 l:"<<al+a2<<endl;
               (2)     ;
}

四、程序分析题:本大题共5小题,每小题6分,共30分。阅读程序后,填写程序的正确运行结果。
41.

#include<iostream>
using namespace std;
class Myclass{
private:int *x;
public:
         Myclass(int a);
       ~Myclass();
}
Myclass::Myclass(int a)
{
         x=new int(a);
         cout<<"调用构造函数"<<endl;
}
Myclass::~Myclass()
{
         cout<<"调用析构函数"<<endl;
         delete x;
}
int main()
{          Myclass p(1);
}

42.

#include<iostream>
using namespace std;
class x{
protected:
         int a;
public:
         x(){a=1;}
};
class x1:virtual public x{
public:
         x1(){a+=1;cout<<"x1:"<<a<<",";}
}

43.

#include <iostream>
#include <cstring>
#include <iomanip>
using namespace std;
int main()
{
         double score=90.657;
         int id=202404;
         stringcourse-"C++程序设计";
         cout.width(10);
         cout << course <<endl;
         cout<<setw(10)<< setfill ("0') <<id<<endl;
         cou<"最终分数为:"“<<seprecision(3)<<score<<endl;
}

44.

#include <iostream>
using namespace std;
class Sample{
         int n;
         static int sum;
pubtic:
         Sample(int x){ n=x;}
         void add(){ sum+=n;}
         void disp(){ cout<<"n="<<n<<",sum="<<sum<<endl;}
}
int Sample::sum=0;

int main()
{        Sample a(2),b(3),c(5);
         a.add(); a.disp();
         b.add(); b.disp();
         c.add();c.disp();
}

45.

#include <iostream>
using namespace std;
template <typename T>
class List{
public:
         List(T x-0) { data -x;}
         void append(List *node ) { node->next=this, next=NULL; total++;}
         List *getnext() { return next; }
         T getdata() {return data; }
static int total;
private:
         T data;
         List *next;
};
template <typename T> int List<T>::total=0;
int main()
{int i,n=5;
         List <int> headnode; List <int> *p, *last;
         last= &headnode;
         for( i=1; i<=n; i++ )
                {p=new List<int>(i*2); p->append( last ); last= p; }
         p= headnode.getnext();
         while( p )
                 {cout << p->getdata()<<""; p=p>getmext();}
         cout<<endl;
         cout<<"total="<<List<int>::total<<endl;
}
class student :(2){
private:
         char grade[20] ;
         int score;
};

五、程序设计题:本大题共2小题,第46小题5分,第47小题 10分,共15分。
46.编写程序将C盘文件 f1.txt 内容复制到D 盘文件 f2.txt。要求:文件的读写使用函数 read、wite,且每次读写一个字符。

47.定义一个描述学生情况的类 stud,数据成员有姓名、英语成绩、C++成绩,成员函数有构造函数、写入函数、读出函数、求平均成绩函数、显示函数。最终构成一个完整的程序,测试数据成员与成员函数的正确性。

int main()
{
         char p[20];
         int a,b;
         stud st1("LiLei",70,95);
         st1.get(p,a,b);
         st1.put(p,a,b);
         cout<<"st1 的数据为: ";
         stl.show();
}

2024 年4月高等教育自学考试全国统一命题考试

《C++程序设计》答案及评分参考

课程代码:04737

一、单项选择题:本大题共20小题,每小题1分,共20分,每答对1题得1分。
1.D 2.A 3.D 4.D 5.C
6.C 7.D 8.A 9.D 10.D
11. A 12.D 13.B 14.C 15.B
16.C 17.B 18.C 19.A 20:A

第二部分 非选择题
二、填空题:本大题共15 小题,每小题1分,共15分,每答对1题得1分。
21. 长度
22. C++
23. 对象
24.(对数据的)操作
25. 类名
26. A_Class
27. operator delete
28. 3
29. 传递
30. 调用
31. =0
32. 输出回车/换行
33. istream
34. 函数形参
35. 类的模板

三、程序填空题:本大题共5小题,每小题4分,共20 分,
36.(1) namespace ns (2分)
(2) ns::x (2 分)

37.(1) return n-2 (2分)
(2) Test a (2分)

38.(1) char name[20]; char sex (2分)
(2) public person (2 分)

39.(1) cout << “4 月”<< endl (2分)
(2) cout<<“C++程序设计” (2分)

40.(1) operator +(A &al, A &a2) (2分)
(2) cout<<“输出 2:”<<al+a3<<endl (2分)

四,程序分析题:本大题共5小题,每小题6分,共30分。
41. 调用构造函数 (3分)
调用析构函数 (3分)

42. x1:2,x2:4,y:4 (6分:每组2分,格式和数据各1分)

43.C++程序设计 (2分)
0000202404 (2分:格式和数据各1分)
最终分数为:90.7 (2分:格式和数据各1分)

44. n=2,sum=2 (2分:格式和数据各1分)
n=3,sum=5 (2分:格式和数据各1分)
n=5,sum=10 (2分:格式和数据各1分)

45.2 4 6 8 10 (5分:每答对一个数据得1分)
total=5 (1分)

五、程序设计题:本大题共2小题,第 46 小题5分,第 47 小题 10 分,共 15 分。
46.

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
         char ch[2];
         ifstream fin("C:\fl .txt");
         ofstream fout("D:\f2.txt");
         while(!fin.eof())
         {
                  fin.read(ch.1);
                  if(fin.good()){fout.write(ch,1);}
         }
         fin.close();
         fout.close();
}

(评分说明:打开文件2分,关闭文件1分,读文件1分、写文件1分,满分5分)

47.

#include<iostream>
using namespace std;
class stud{
private:
char *name;
int eng;
int cpp;
public:
stud(char *p,int x,int y){ name=p;eng=x;cpp=y; }
void put(char *p,int &x,int &y){ name=p;eng=x;cpp=y; }
void get(char *p,int &x,int &y){ strcpy(p,name);x=eng;y=cpp;}
double ave(){ return (eng+cpp)/2.0;}
void show();
};
void stud::show()
{
cout<<"姓 名"<<name<<"英语"<<eng<<",c++"<<cpp<<",平均分"<ave()<<endl;
}

(评分说明:类的定义1分,类中的成员变量3分,类中的成员函数6分,满分10分)

© 版权声明
THE END
喜欢就支持一下吧
赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容