[计算机类试卷]国家二级C++机试(操作题)模拟试卷27及答案与解析.doc

上传人:孙刚 文档编号:497354 上传时间:2018-11-28 格式:DOC 页数:6 大小:33KB
下载 相关 举报
[计算机类试卷]国家二级C++机试(操作题)模拟试卷27及答案与解析.doc_第1页
第1页 / 共6页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷27及答案与解析.doc_第2页
第2页 / 共6页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷27及答案与解析.doc_第3页
第3页 / 共6页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷27及答案与解析.doc_第4页
第4页 / 共6页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷27及答案与解析.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、国家二级 C+机试(操作题)模拟试卷 27及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,即使程序在界面输出以下类似内容: 0012FF68 1 0012FF3C 5 0012FF6C 2 0012FF44 4 0012FF70 3 0012FF4C 3 0023FF74 4 0012FF54 2 0012FF78 5 0012FF5C 1 006AFDCC 006AFDEF数据可能因为机器的不同,程序的输出的内容会有差异。只要相差为 4的连续地址即可。 注意:不要改动 main函数,不能增行或

2、删行,也不能更改程序的结构,错误的语句在 *error*的下面。 1 #include 2 using namespace std; 3 int main() 4 5 int*p, a5-1, 2, 3, 4, 5); 6 double*q, b5=5 0, 4 0, 3 0, 2 0, 1 0); 7 int X; 8 p=a ; 9 q=b ; 10 *error* 11 for(x=0 ; x 2 #define MAXLINE 1000 3 void fun(char *s1, char *s2) 4 5 6 7 void main() 8 9 char s1MAXLINE; 10 c

3、har s2256; 11 cout 2 using namespace std ; 3 class CPlanet 4 5 protected: 6 *1* 7 8 public: 9 CPIanet(double d, int r) 10 11 distance=d; 12 revolvePeriod=r ; 13 14 ; 15 clasS CEarth: public CPlanet 16 double circumference ; 17 public: 18 *2* 19 CEarth(double d, int r) 20 21 circumference=2*d*3 1416

4、; 22 23 *3* 24 25 26 cout”diStance=“distanceendl; 27 coutnrevolution Period=“revolvePeriodendl; 28 Cout“revolution circumference=“circumferenceendl; 29 30 ; 31 void main() 32 33 CEarth earth(9300000, 365); 34 earth display(), 35 国家二级 C+机试(操作题)模拟试卷 27答案与解析 一、基本操作题 1 【正确答案】 (1)for(x=0 ; x5 ; x+) (2)co

5、itp+x“ “ *(p+x) “ “q+x “ “ *(q+x) endl ; 【试题解析】 本题的程序功能是输出相差为 4的连续地址。从已定源程序的main主函数开始入手,依次执行程序中的语句,重点分析、调试标识下的错误语句,输出题目要求的结果。 解题思路 (1)根据数组 a、 b定义,它们都是 5个元素,而第 1个标识下的 “for(x=0; x:5; x+)”循环了 6次,应该是 5次,所以第 1个标识下的将其修改为 “for(x=0;x5; x+)” (2)第 2个标识下 的 p变量为指针型变量, p+x为指向数组中第 x个元素的地址,这里要输出的是存储单元的内容,所以使用 “*”指

6、针元素符,即修改为“coutp+x”*(p+x)“ “q+x“ “*(q+x)endl; ”。 二、简单应用题 2 【正确答案】 1 int i=0 ; 2 for(i=0; s1i!=0 ; i+); 指向第一个串尾 3 for(int j=0 ; s2j!=0 ; j+) 利用循环将第二个串拷贝到第 一个串尾 4 5 s1i+=s2j; 6 7 s1i=0; 加尾符 【试题解析】 (1)该程序功能是将字符串 s2连接在字符串 s1之后。它的解题思路,首先指向字符串 s1的尾,然后将第二个字符串 s2的内容依次拷贝到第一个串的尾。 (2)从已给部分源程序的 main主函数开始入手,核心函数

7、void fun(char*s1,char*s2)中的 s1和 s2为要连接的字符串。 解题思路 (1)首先利用循环 指向第一个串尾。 (2)然后利用 for循环将第二个串连接到第一个串尾。 (3)最后在新生成的串尾加尾符号。 三、综合应用题 3 【正确答案】 (1)添加语句: double distance; int revolvePeriod; (2)将 “CEarth(double d, int r)”补充完整为: CEarth(double d, int r): CPIanet(d, r) (3)添加语句: void display() 【试题解析】 程序中定义了类 CPlanet和

8、CEarth, CEah公有派生于类CPlanet。类 CPlanet含有保护成员变量 distance和 revolvePeriod,它们分别表示行星距太阳的距离和行星的公转周期,类 CEarth含有成员变量 circumference,表示地球绕太阳公转的轨道周长,其构造函数 CEarth(double d, int r)计算处地球绕太阳公转的轨道周长赋值给 circumference, display()用于显示所有信息。 解题思路 (1)题目 1要求 “义类 CPlanet的保护数据成员 distance和 revolvePeriod,它们分别表示行星距太阳的距离和行星的公转周期。其中

9、, distance为 double型,revolvePeriod为 int型 ”,因此第 1个标识下是添加数据成员 distance和revolvePeriod的声明,因此第 1个标识下应添加 “doubledistance; int revolvePeriod; ”。 (2)假定: circumference=2 d 3 1416”,第 2个标识下构造函数 CEarth(double d,int r)完成类成员变量的初始化,在函数体内部完成了 circumference的初始化,而变量 distance和 revolvePeriod并没有初始化,需调用基类的构造函数来初始化这两个变量,因此第 2个标识下应改为 “CEarth(double d,int r): CPlanet(d, r)”。 (3)第 3个标识下完成成员函数 displayO的定义,函数 display()的返回值为 void,因此第 3个标识下应添加 “void display()”。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1