目录

  • 考后感悟:
  • 一、判断题
  • 二、单选题
  • 三、函数题
    • R6-1 编写一个函数模板Swap,实现两个变量交换。
    • R6-2 从shape类派生出一个圆形类Circle
    • R6-3 求正15边形的面积和周长
    • R6-4 将学生对象按照学号升序排序C++
    • R6-5 定义有静态成员的C++学生类Student(10分)
  • 四、编程题
    • R7-1 分离目录路径和文件名
    • R7-2 找出足球赛对阵方

考后感悟:

这次考试抽到的PTA试题除了考查C++基础知识外,选择题中也考了很多虚函数的相关内容,大题也考了STL容器相关操作。
复习时要着重复习STL标准模板库(即各种容器,算法,迭代器),特别是vector容器和string容器的各种基本操作以及排序算法

如有相关C++考试问题可评论或私信

2022年6月30日

一、判断题

R1-1
分数 1
作者 黄淑伟
单位 沈阳师范大学
this 指针是一个系统预定义的特殊指针,指向当前正在操作的对象。(T)

T

F

R1-2
分数 1
作者 黄淑伟
单位 沈阳师范大学
如果A是B的友元类,那么B的成员函数可以访问A的私有成员。(F)

T

F

R1-3
分数 1
作者 何振峰
单位 福州大学
因为静态成员函数不能是虚函数,所以它们不能实现多态。(T)

T

F

R1-4
分数 1
作者 刘莹
单位 威海职业学院
STL中关联型容器都是有序的。(T)

T

F

R1-5
分数 1
作者 张德慧
单位 西安邮电大学
C++程序中,一个类的析构函数可以被重载。(F)

T

F

R1-6
分数 1
作者 黄淑伟
单位 沈阳师范大学
静态成员的特点是不管这个类创建了多少个对象,其静态成员在内存中只保留一份副本,这个副本为该类的所有对象共享,或者说静态成员为类所有。(T)

T

F

二、单选题

R2-1
分数 2
作者 何振峰
单位 福州大学
在派生类对基类继承的传递性中,_B_是错误的。

A.在公有继承方式下,直接派生类对象可以直接调用基类中的公有成员函数,去访问基类的私有数据成员
B.在私有继承方式下,间接派生类对象可以直接调用基类中的公有成员函数,去访问基类的私有数据成员
C.在公有继承方式下,间接派生类对象可以直接调用基类中的公有成员函数,去访问基类的私有数据成员
D.不管是私有继承还是公有继承,基类中的私有成员在派生类的作用域内都是不可能见的。

R2-2
分数 2
作者 何振峰
单位 福州大学
下列描述中,( D)是抽象类的特性。

A.可以说明虚函数
B.可以进行构造函数重载
C.可以定义友元函数
D.不能定义该类对象

R2-3
分数 2
作者 何振峰
单位 福州大学
关于虚函数的描述中,( B)是正确的。

A.虚函数是一个非成员函数
B.基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数
C.派生类的虚函数与基类的虚函数具有不同的参数个数和类型
D.虚函数是一个static 类型的成员函数

R2-4
分数 2
作者 董卫萍
单位 绍兴文理学院元培学院
假定MyClass为一个类,则该类的复制构造函数的声明语句为(D)

A.MyClass(MyClass *x)
B.MyClass(int x)
C.MyClass(MyClass x)
D.MyClass(const MyClass& x);

R2-5
分数 2
作者 王秀
单位 福州大学
在C++中,关于下列设置缺省参数值的描述中,(C)是正确的。

A.不允许设置缺省参数值;
B.设置缺省参数值时,必须全部都设置;
C.在指定了缺省值的参数右边,不能出现没有指定缺省值的参数;
D.只能在函数的定义性声明中指定参数的缺省值;

R2-6
分数 2
作者 王秀
单位 福州大学
下面说法正确的是(A)。

A.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
B.类的内联函数必须在类体内定义
C.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
D.类的内联函数必须在类体外通过加关键字inline定义

R2-7
分数 2
作者 何振峰
单位 福州大学
命名空间应用于:(A)

A.避免各个不同函数、变量等的名称冲突
B.提高代码的执行速度
C.在类外定义类的成员函数
D.以上答案都正确

R2-8
分数 2
作者 何振峰
单位 福州大学
下列表达错误的是( D)。

A.cin.fill(‘#’)
B.cout.setf(ios::uppercase)
C.cout<<setw(5)
D.cout<<fill(‘#’)

R2-9
分数 2
作者 王秀
单位 福州大学
关于new运算符的下列描述中,(A)是错误的。

A.使用它创建对象数组时必须指定初始值;
B.使用它创建的对象或对象数组可以使用运算符delete删除;
C.使用它创建对象时要调用构造函数;
D.它可以用来动态创建对象和对象数组;

R2-10
分数 2
作者 张德慧
单位 西安邮电大学
在C++语言中设置虚基类的目的是( D) 。

A.缩短程序的目标代码
B.提高程序的运行效率
C.简化程序代码
D.解决多继承造成的二义性问题

R2-11
分数 2
作者 何振峰
单位 福州大学
对于以下关于友元的说法(B)

A.如果函数fun被声明为类A的友元函数,则fun的形参类型不能是A。
B.以上答案都不对
C.如果函数fun被声明为类A的友元函数,则该函数能访问A的保护成员,但不能访问私有成员
D.如果函数fun被声明为类A的友元函数,则该函数成为A的成员函数

R2-12
分数 2
作者 何振峰
单位 福州大学
设A为自定义类,现有普通函数int fun(A& x)。则在该函数被调用]时:(A)

A.无需初始化形参x
B.仅在实参为常量时,才会执行复制构造函数以初始化形参x
C.仅在该函数为A类的友元函数时,无需初始化形参x
D.将执行复制构造函数来初始化形参x

三、函数题

R6-1 编写一个函数模板Swap,实现两个变量交换。

分数 10
作者 张德慧
单位 西安邮电大学
编写一个函数模板Swap,实现两个变量交换。

函数模板实例化:
Swap( i, j );
:其中 i 和 j 都是用户传入的参数, i 和 j类型相同,但可以是任何数据类型。

裁判测试程序样例:
#include
using namespace std;
//你提交的代码将被嵌入到这里

int main()
{
int i,j;
char m,n;
cin>>i>>j;
cin>>m>>n;
Swap(i,j);
Swap(m,n);
cout<<i<<’ ‘<<j<<’\n’;
cout<<m <<’ '<<n<<endl;
return 0;
}
输入样例:
2 1
a c
输出样例:
1 2
c a

template<typename T>
void Swap(T &a,T &b){T t = a;a = b;b = t;
}

R6-2 从shape类派生出一个圆形类Circle

分数 10
作者 张德慧
单位 西安邮电大学
请从下列shape类派生出一个圆形类Circle,这个类圆形的半径radius作为私有成员,类中应包含初始化半径的构造函数。圆周率PI取3.1415926。

class shape {

public:

double getArea(){ return -1; };

double getPerimeter(){ return -1 };

}

圆形类名Circle
裁判测试程序样例:
#include
using namespace std;

class shape {
public:
double getArea(){ return -1 };// 求面积
double getPerimeter(){ return -1 }; // 求周长
};

/* 你提交的代码将被嵌入到这里 */

int main() {
double r;
cin>>r;
Circle c®;
cout<<c.getArea()<<endl;
cout<<c.getPerimeter()<<endl;
return 0;
}
/* 请在这里填写答案 */
输入样例:
在这里填写一组输入
2.78
输出样例:
在这里填写相应的输出
24.2795
17.4673

const double PI = 3.1415926;class Circle:public shape{private:double r;public:Circle(double r):r(r){}double getArea(){return PI*r*r;};double getPerimeter(){return 2*PI*r;};
};

R6-3 求正15边形的面积和周长

分数 10
作者 张德慧
单位 西安邮电大学
求正15边形的面积和周长

在一个正n边形(Regular Polygon)中,所有边的边长都相等,且所有角的度数相同(即这个多边形是等边、等角的)。我们已经从下列抽象类shape实现了一个正n边形类RegularPolygon。其构造方法为:RegularPolygon(int n,double side); 其中n为边数,side为边长。

从键盘输入正15边形的边长s,请补充下列程序计算该正15边形的面积和周长。

class shape {// 抽象类
public:
virtual double getArea()=0;// 求面积
virtual double getPerimeter()=0; // 求周长
};
裁判测试程序样例:
#include
#include
using namespace std;

class shape {// 抽象类
public:
virtual double getArea()=0;// 求面积
virtual double getPerimeter()=0; // 求周长
};
//这里定义了正多边形类RegularPolygon,其构造方法为:RegularPolygon(int n,double side); 其中n为边数,side为边长。

int main()
{
double s;
cin>>s;

/* 请在这里填写答案 */return 0;

}
输入样例1:
在这里给出一组输入。例如:

6.1828
输出样例1:
在这里给出相应的输出。例如:

674.415
92.742
输入样例2:
在这里给出一组输入。例如:

-1.234
输出样例2:
在这里给出相应的输出。例如:

Illegal input data.

if(s<0){cout<<"Illegal input data."<<endl;return 0;
}
RegularPolygon r(15,s);
cout<<r.getArea()<<endl;
cout<<r.getPerimeter()<<endl;

R6-4 将学生对象按照学号升序排序C++

分数 10
作者 张德慧
单位 西安邮电大学
请阅读程序并补全源代码:先从键盘录入5个学生的数据,保存到向量vector容器对象v中,然后将学生对象按照学号number从小到大排序后输出。

裁判测试程序样例:
//本程序将下面的学生类Student对象按照学号number从小到大排序后输出。
#include
#include
#include
#include
using namespace std;
class Student {
string number;
string name;
float score;
public:
// Constructor
Student(string number1, string name1, float score1) {
number = number1;
name = name1;
score = score1;
}
string get_number(){
return number;
}

    // Used to print student details in main()void print() {cout<<number << " " <<name << " " << score<<endl;}

};
bool cmp_number(Student s1,Student s2);//比较学号的函数,需要考生实现

int main()
{vector<Student> v;

/* 请在这里填写答案 */
输入样
在这里给出一组输入。例如:

04031021 Zhang3 84
04031013 Li4 73
04031018 Wang5 98
04031038 Ma6 65
04031029 Chen7 96
输出样例:
在这里给出相应的输出。例如:

04031013 Li4 73
04031018 Wang5 98
04031021 Zhang3 84
04031029 Chen7 96
04031038 Ma6 65

    string number;string name;float score;for(int i=0;i<5;i++){cin>>number>>name>>score;Student s(number,name,score);v.push_back(s);}sort(v.begin(),v.end(),cmp_number);for(vector<Student>::iterator it = v.begin();it!=v.end();it++){(*it).print();}
}bool cmp_number(Student s1,Student s2){if(s1.get_number()<s2.get_number()){return true;}return false;
} 

R6-5 定义有静态成员的C++学生类Student(10分)

分数 10
作者 张德慧
单位 西安邮电大学
本程序中学生Student类中有学号 number,姓名 name,成绩 score 等数据成员,另外有静态变量:学生对象个数 count 和总分sum。静态成员函数average( )用来计算学生的平均分。

Student类构造函数的原型如下:
Student(int number1, String name1, float score1);
裁判测试程序样例:
/* 请在这里填写答案 */

int main( )
{
// Student::init( );
Student stu1(1,“Bill”,87);
stu1.print( );

Student stu2(2,"Adam",91);
stu2.print( );Student stu3(3,"David",96);
stu3.print( );Student::average( ); //静态成员函数的调用    return 0;

}
输出样例:
在这里给出相应的输出。例如:

number: 1 name: Bill score: 87 count: 1
number: 2 name: Adam score: 91 count: 2
number: 3 name: David score: 96 count: 3
sum is 274
count is 3
average is 91.3333

#include <iostream>
#include <string>
using namespace std;class Student{public:int number;string name;float score;Student(int number, string name, float score):number(number),name(name),score(score){count++;sum+=score;}static double count;static double sum;static void average();void print(){cout<<"number: "<<number<<" name: "<<name<<" score: "<<score<<" count: "<<count<<endl;}
};double Student::count = 0;
double Student::sum = 0;void Student::average(){double arg = sum/count;cout<<"sum is "<<sum<<endl;cout<<"count is "<<count<<endl;cout<<"average is "<<arg<<endl;
}/*
number: 1 name: Bill score: 87 count: 1
number: 2 name: Adam score: 91 count: 2
number: 3 name: David score: 96 count: 3
sum is 274
count is 3
average is 91.3333
*/

四、编程题

R7-1 分离目录路径和文件名

分数 10
作者 张德慧
单位 西安邮电大学
输入文件目录路径和文件名,要求分离成目录路径和文件名分别输出

输入格式:
例如:输入

c:\windows\winhelp.exe

输出格式:
c:\windows (目录路径)

winhelp.exe (文件名)

输入样例:
/usr/bin/man
输出样例:
/usr/bin
man

#include <iostream>
#include <string>
using namespace std;void separate(string &str){int i = str.find_last_of("/\\");cout<<str.substr(0,i)<<endl;cout<<str.substr(i+1)<<endl;
}int main()
{string s;getline(cin,s);separate(s);return 0;
}

R7-2 找出足球赛对阵方

分数 10
作者 张德慧
单位 浙江大学
2014年世界杯足球赛在6月24日星期二小组赛赛程如下所示:
Australian VS Spain; Holland VS Chile; Cameroon VS Brazil; Croatia VS Mexico
请你编写一个简单的C++程序,当输入其中任何一个国家的名字就能找出与其对阵的国家名。例如,输入“Holland”,就能找到对阵方是“Chile”。

输入格式:
Holland

输出格式:
Holland team’s rival is Chile.

输入样例:
Germany
输出样例:
Germany’s team has no match today.

//因对string容器不熟悉,暂时用分支语句实现
#include <iostream>
#include <string>
using namespace std;int main()
{string s;cin>>s;if(s=="Australian"){cout<<s<<" team's rival is Spain."<<endl;return 0;}if(s=="Spain"){cout<<s<<" team's rival is Australian."<<endl;return 0;}if(s=="Holland"){cout<<s<<" team's rival is Chile."<<endl;return 0;}if(s=="Chile"){cout<<s<<" team's rival is Holland."<<endl;return 0;}if(s=="Cameroon"){cout<<s<<" team's rival is Brazil."<<endl;return 0;}if(s=="Brazil"){cout<<s<<" team's rival is Cameroon."<<endl;return 0;}if(s=="Croatia"){cout<<s<<" team's rival is Mexico."<<endl;return 0;}if(s=="Mexico"){cout<<s<<" team's rival is Croatia."<<endl;return 0;}cout<<s<<"'s team has no match today."<<endl;return 0;
}

西安邮电大学《面向对象与C++程序设计》PTA上机期末考试试题(随机)相关推荐

  1. java面向对象期末考试试题_《面向对象程序设计——java》期末考试试题2008a卷.doc...

    <面向对象程序设计--java>期末考试试题2008a卷.doc 还剩 6页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: 第 7 页 共 ...

  2. 西安邮电大学卓越班c语言面试题,2016年西安邮电大学数学艺术学院高级语言程序设计之C语言程序设计复试笔试最后押题五套卷...

    一.选择题 1. 已知大写字母A 的ASCII 码是65, 小写字母a 的ASCII 码是97.以下不能将变量c 中的大写字母转换为对应小写字母的语句是( ). B.c=c+32 答:A [解析]A ...

  3. 智能车竞赛技术报告 | 智能车视觉 - 西安邮电大学 - AI小布丁

    学 校:西安邮电大学     队伍名称:AI小布丁       参赛队员:张展鹏 徐军其 杜博林 带队教师:亢红波 蔡秀梅                第一章 引言   全国大学生智能车竞赛是从 2 ...

  4. 西安邮电大学计算机学院学生会,2017年度计算机学院教职工代表大会工作报告.doc...

    PAGE \* MERGEFORMAT 5 1 凝心聚力,开拓创新, 以主人翁的工作态度共谋计算机学院新发展 2017/2018学年计算机学院教代会学院工作报告 王忠民 各位代表:大家下午好! 今天, ...

  5. 2023西安邮电大学计算机考研信息汇总

    西安邮电大学研招网 http://gr.xiyou.edu.cn/xbwz.htm 西安邮电大学理学院 http://slx.xiyou.edu.cn/ 西安邮电大学计算机学院 http://cs.x ...

  6. 【20保研】西安邮电大学计算机学院关于举办2019年“优秀大学生夏令营”的公告...

    点击文末的阅读原文或者公众号界面左下角的保研夏令营或者公众号回复"夏令营"是计算机/软件等专业的所有保研夏令营信息集合,会一直更新的. 西安邮电大学计算机学院现有计算机科学与技术一 ...

  7. 西安邮电大学计算机学院军训,测控技术与仪器的培养方案

    业务培养目标 本专业培养具备精密仪器设计制造以及测量与控制方面基础知识与应用能力,能在国民经济各部门从事测量与控制领域内有关技术.仪器与系统的设计制造.科技开发.应用研究.运行管理等方面的高级工程技术 ...

  8. 西安邮电大学【活动】

    西安邮电大学[活动] 前言 版权 推荐 西安邮电大学[活动] 录取通知书 历史 西北邮电学校.西安邮电学校时期 西安邮政学校时期 西安邮电学院时期 西安邮电大学时期 后面的反展 学科优势 信息与通信工 ...

  9. 西安邮电大学计算机学院系主任,西安邮电大学计算机学院

    2014年11月12日晚7:30, 西安邮电大学计算机学院网络科技协会(www.xiyouant.org,微信公众平台:xiyounet)举办的网络科技协会纳新宣讲会在长安校区东区FF207教室举行. ...

最新文章

  1. Xamarin 2017.11.1更新
  2. U盘制做DOS启动盘
  3. Mysql学习进度(2013.03.12)—sql语句学习一
  4. 随想录(ccpp之间的相互调用)
  5. java怎样将日期本土化_Java中的日期操作
  6. 教育院校公共机房虚拟桌面解决方案
  7. IOC 容器中那些鲜为人知的细节(关于 autowiring)
  8. 怎样设置HTML上传控件,上传文件的大小
  9. 解决Linux操作系统下SSH等终端乱码问题
  10. git 远程删除分支之后 本地分支更新后还在
  11. wget 持续下载确保完成
  12. SVN统计一段时间的日志
  13. android 意见反馈功能,【Foodie】App用户反馈整理及后续行动建议
  14. 下载lpv9_ipv9_ipv9协议_中国IPv9大地址利弊分析
  15. android 图层绘画分析,Android-绘图机制总结
  16. ChatGPT初体验——开发好帮手
  17. buu firmware
  18. Apollo源码分析:路径规划 (v5.5)
  19. (无插件) vim 基础快捷键汇总
  20. TX2上的Raspberry Pi相机

热门文章

  1. 2019年香港银行开户条件有哪些?个人账户申请被拒绝后该怎么处理比较好!!!
  2. C++ 谷歌小恐龙#1 游戏制作实录
  3. matlab logistic函数表达式,利用MATLAB进行logistic曲线拟合
  4. python编程大数据分析_大数据分析Python学习技巧
  5. 转 MySQL源码分析
  6. mem系列函数(memcpy)
  7. EL与JSTL使用介绍
  8. 【stm32】利用单片机实现小车直线和圆弧的识别
  9. nsi脚本中的第三方plugin
  10. Graphpad prim 和 SPSS 绘制 Bland-Altman 图