




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
6A程序设计考试试卷一、单项选择(每小题1.5分,共30分) 1.以下语法单位中,哪一种不是C+语言的单词(token)? (A)标识符 (B)表达式 (C)运算符 (D)常量2.给定如下BNF所描述的语法: E := E + T | T T := T * F | F F := - F | ( E ) | 1 | 0以下不合乎给定语法的式子是: (A) 1*0+(-1) (B) 0+1*-0 (C) 0+(1-0) (D) 1*(-0*(1+0)3.假设声明了int类型变量i和j,float类型变量x和y,以及函数int f(float x)。以下表达式中,哪一个的求值过程中会发生隐式类型转换? (A) (x+1.5)*y (B) (i+j)/i (C) (i+j)/(int)x (D) j=f(x)4.设长整数x_flag记录了若干标志位,x_flag的每一位表示一种二值状态的开关(正如ios类中的x_flag属性)。可用长整数flag清除x_flag标志,即flag中的某一位为1表示将x_flag对应的这一位清除为0;为0表示x_flag对应的这一位保持不变(正如ios类的skipws、right、hex等枚举常量)。利用flag清除x_flag标志的语句应为: (A) x_flag = x_flag & flag (B) x_flag = x_flag | flag (C) x_flag &= (flag) (D) x_flag |= (flag)5.以下图形工具中,哪一种可作为结构化程序设计工具用于设计程序的控制流? (A)语法图 (B)N_S图 (C)状态转换图 (D)类层次图6.C+语言新引入了在一种C语言中没有的参数传递方式是: (A)按指针调用 (B)按名调用 (C)按值调用 (D)按引用调用7.设有如下声明的类FOO: class FOO public: int get(); void set(int, int); private: float std; static float max, min; ;则表达式sizeof(FOO)的值为: (A) 4 (B) 8 (C) 12 (D) 168.指针ptr声明为double* ptr。假设ptr当前的值是ADDR,则表达式(*ptr + 1)的值是: (A) ADDR + 1 (B) ADDR + 4 (C) ADDR + 8 (D) 无法确定9.假设程序中已有#include ,从而可用字符串的库函数。以下声明了一个字符串name,并设置它的值为Computer,然后输出该字符串。在以下用法中,哪个有可能引起语法错误或逻辑错误? (A) char* name = Computer; (B) char* name; strcpy(name, Computer); (C) char name9 = C, o, m, p, u, t, e, r, 0; (D) char name = Computer;10.假设声明了int p110和int* p2。以下语句中哪一个会产生语法错误? (A) *p1 = *p2; (B) *p2 = *p1; (C) p1 = p2; (D) p2 = p1;11.关于C+语言的以下说法中哪一条是错误的? (A)在嵌套的块结构中,内、外层块可分别声明同一名字的变量 (B)声明成员函数与数据成员时前面都可加上static修饰 (C)成员函数的形式参数名字不可与数据成员的名字相同 (D)成员函数原型的后面可加上const表示常量成员函数12.假设家庭地址可用一个字符串表示且串长不超过127个字符,则要在程序中表示全班200位同学家庭地址的addr_book应声明为: (A) char addr_book200; (B) char* addr_book200; (C) char addr_book200, 128; (D) char* addr_book200, 128;13.多重继承中如果产生了名字冲突问题,例如派生类D同时继承了基类B1和B2,而B1和B2中均有名字为f的成员函数。使用D的对象实例d时,解决d.f(.)二义性问题的方法可以是: (A)唯一办法是修改基类B1和B2,否则编译器将报告出错。 (B)编译器自动按继承时的次序选择前面那个父类的f(.)。 (C)程序员用作用域运算符:区别f(.),例如d.B1:f(.)或d.B2:f(.)。 (D)程序员为B1和B2构造一个虚基类,从而D中只有一个版本的f(.)。14.设有如下声明的类: class BASE public: int get_value(); void set_value(int); protected: float value; ; class DERIVED: BASE public: int get_product(); void set_factor(int); protected: float factor; private: float max; ;如果在main()中声明了DERIVED d,则利用d可访问的成员除了get_product()和set_factor()外,还有: (A)没有了 (B) set_value()和get_value() (C) value和factor (D) factor15.以下因素中,哪一个不会影响编译器确定使用多个重载函数中的某一个版本: (A)函数的形式参数个数 (B)函数形式参数表中每个位置的类型 (C)形式参数表中是否有缺省参数值 (D)函数的返回值类型16.用户自定义类型T的拷贝构造函数不会用于: (A)用T的对象初始化T的另一对象 (B)将T的对象赋值给T的另一对象 (C)按值调用时创建T的实际参数副本 (D)创建类型T的对象副本作为函数返回值17.设已声明用户自定义类型MEGA的对象实例m1和m2,且表达式m1 = 256 + m2是合法的,则该表达式的求值过程中没有用到下列在MEGA类中声明的哪个成员函数? (A) 构造函数 (B) 析构函数 (C) operator =(.) (D) operator +(.)18.设有基类B及其公有派生类D,并有如下声明 B b_obj; B* b_ptr; D d_obj; D* d_ptr;以下用法中正确的是: (A) d_ptr=b_ptr (B) b_ptr=d_ptr (C) d_obj=b_obj (D) d_ptr=&b_obj19.在一个高校人事管理程序中,涉及的人员可分为教师、学生、后勤人员等。如果要利用面向对象的运行时多态性组织程序结构,必须采取一些必要的做法。以下各种做法中,哪一个做法是未必需要的? (A)利用一个共同的基类(如PERSON)将各种人员对应的类组织成类层次 (B)必须为PERSON定义构造函数和析构函数 (C)必须将PERSON中的某些成员函数定义为虚函数 (D)必须在教师、学生等派生类中重定义基类PERSON的某些成员函数20.程序设计中的副作用(side-effects)是指: (A)程序结构不合理影响了程序质量 (B)面向对象程序的多态性导致程序难以理解 (C)在函数体中修改了形式参数的值 (D)表达式的求值过程改变了操作数的值二、程序改错(共10分) 1、(2分)假定以下是一个完整的程序,无其他文件模块与之相关(编译系统提供的头文件除外)。试指出该程序中的语法错误并加以改正。 #include int main() int num = 1; while (num 10) num = num + f(num); cout num = num endl; return 0; extern int global = 0; int f(int num) if (global % 2) = 0) int result; result = global * num; else int num = global; num = num * global; result = num + global; return result; 2、(2分)指出以下程序中的语法错误。 template int compare(ITEM source, ITEM target) if (source target) return 1; else return 0; 3、(2分)指出以下程序中的语法错误。 template class DEMO public: DEMO(ITEM a) x = a; return; private: TYPE x; ; int main() DEMO demo(5); return 0; 4、(4分)指出以下程序中的语法错误。 #include class POINT public: POINT(int x, int y): x(x), y(y) int get_x() return x; int get_y() return y; void print() cout ( get_x() , get_y() ); private: int x = 0, y = 0; ; class LINE public: LINE(int x0, int y0, int x1, int y1) start.x = x0; start.y = y0; end.x = x1; end.y = y1; POINT get_start() return start; POINT get_end() return end; void print() cout Line from start.print() to end.print() .n; private: POINT start, end; ; int main() LINE line(0, 0, 50, 50); line.print(); return 0; 三、程序输出(共15分) 1、请给出运行以下递归程序的屏幕输出结果(4分) #include int fib(int n) int result; cout n ; if (n 2) result = 1; else result = fib(n - 1) + fib(n - 2); return result; int main() cout fib(4) endl; return 0; 2、指出以下程序的输出结果(3分)。 #include void print(int x) cout ”Calling print(int) with ” x ”.n”; return; void print(int x, int y) cout ”Calling print(int, int) with ” x ”, ” y ”.n”; return; void print(double x) cout ”Calling print(double) with ” x ”.n”; return; int main() print(800); print(3.14159); print(3, 4); return 0; 3、指出以下程序的输出结果(5分)。 #include class FAIRY_TALE public: virtual void act1() cout Princess meets Frog.n; act2(); return; virtual void act2() cout Princess kisses Frog.n; act3(); return; virtual void act3() cout Frog turns into Prince.n; act4(); return; virtual void act4() cout They live happily ever after.n; act5(); return; virtual void act5() cout - The End -n; return; ; class UNHAPPY_TALE: public FAIRY_TALE public: virtual void act3() cout Frog stays a Frog.n; act4(); return; virtual void act4() cout Frincess runs away in disgust.n; act5(); return; virtual void act5() cout act1(); delete tale; return 0; 4、指出以下程序的输出结果(3分)。 #include void handle(int code) throw(int, double) cout First line in handle() endl; if (code != 0) throw code; else throw (code * 3.14); cout Last line in handle() endl; return; int main() try handle(0); handle(1); catch(int i) cout Catch an integer endl; catch(double x) cout Catch a double 0) return (1) ; else (2) ; 2、(6分,每空2分)孙子算经曰:今有物不知数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?以下程序找从1到500满足该条件的自然数。试填写程序中的空,使其完成正确的功能。 #include const unsigned int max = 500; int main() unsigned int number; / 以下循环保证每次满足number除7余2 number = 9; while ( (1) ) while (number % 3 != 2 | number % 5 != 3) & (number max) (2) if (number max) cout nFound: number endl; (3) return 0; 3、(8分,每空2分)以下程序生成 n 阶魔方阵(其中 n 为奇数)。n 阶魔方阵的元素由 1 至 n2组成,并且每行、每列以及两个对角线的 n 个自然数之和都相等,例如 3 阶魔方阵为:816357492试填补程序中的空白,使其运行得到正确结果。提示:往魔方中填写数字时,先在第一行的正中间放最小的数1,然后依次在当前位置的右上角放下一个数,越界则回绕到最左(如3)或最下(如2);放完 n 个数后,下 n 个数的开始位置是当前位置的正下方(如4和7)。 #include #include const int MAX_LEN = 17; void fill(int magicMAX_LEN, int magic_len) int i, j, row, col, count; count = 1; row = 0; col = (1) ; for (i = 0; i magic_len; i+) for (j = 0; j magic_len; j+) magicrowcol = (2) ; if (-row magic_len - 1) col = (4) ; row += 2; if (row magic_len - 1) row -= magic_len; col-; if (col 0) col += magic_len; return; void print(int magicMAX_LEN, int magic_len) int row, col; cout nThe magic_len magic: endl; for (row = 0; row magic_len; row+) cout endl; for (col=0; colmagic_len; col+) cout setw(4) magicrowcol; cout endl; return; int main() int magicMAX_LENMAX_LEN; int magic_len; do cout endl magic_len; while (magic_len MAX_LEN | magic_len % 2 = 0); fill(magic, magic_len); print(magic, magic_len); return 0; 五、(10分)程序设计 某程序员负责统计年度流行歌曲排行榜TOP 10的选票。本年度推出的所有歌曲均以整数编号表示,每一歌迷最多只可推荐10首歌曲。由于主办单位要分析不同年龄、不同性别的倾向,选票包含投票者年龄 age、性别 sex 及10首推荐歌曲 hits。该程序员决定用一个类 VOTING 描述歌迷投票,该类的主要属性是选票 VOTE 的集合,采用动态分配空间的数组 data 实现 VOTE 的线性表(从而可在主程序中根据需要决定数组的大小),并用整数 count 记录当前的选票数目;该类的主要行为有统计所有人投票选出的十大流行歌曲、统计所有女性投票选出的十大流行歌曲、统计所有年青人投票选出的十大流行歌曲等等。以下主程序演示了这一用法,请参照程序中的注释帮助某甲完成类 VOTING 和 VOTE 的界面,你给出的类界面至少必须满足主程序演示的用法。提示:不必提供这两个类的实现;注意在 VOTING 类中存放 VOTE 的数组是动态申请的;注意以下程序片段已经约束了 VOTE 必须是一个 class。 #include const long int MAX_VOTES = 10000; / 选票的最大数目 / 类界面 class VOTE / 表示一张选票 . (请填写此处内容) ; class VOTING / 表示年度投票结果 . (请填写此处内容) ; / 类实现(VOTE和VOTING类) . (不必理会) / 主函数 int main() VOTING voting; VOTE temp; . / 添加一张选票,并判断添加是否成功 if (! voting.insert(temp) . . voting.top10();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 投标报价记录表
- 质量保证体系
- 宏观研究-宏观经济研究:为什么要转型为消费驱动型社会
- 基于随机采样的可靠机器学习建模及评价方法研究
- 浙江省温州新力量联盟2022-2023学年高二下学期期末检测化学试题(含答案)
- 汽车传感器与检测技术电子教案:发动机转速传感器
- 宁德天湖山现代农业种殖养殖示范基地建设项目可研报告
- 土建现场工人管理制度
- 介绍对象活动方案
- 介绍课间活动方案
- 员工住厂外免责协议书(2篇)
- 2024年淮南市第一人民医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 儿童运动康复治疗
- 2025年三峡集团招聘笔试参考题库含答案解析
- 2024-2030年中国桥梁管理与养护市场发展现状及前景趋势分析报告
- 产后陪护服务质量管理制度
- 计量经济学知到智慧树章节测试课后答案2024年秋安徽农业大学
- 某啤酒促销员工作管理手册
- 河南科技大学《固体物理A》2021-2022学年第一学期期末试卷
- TCUWA40055-2023排水管道工程自密实回填材料应用技术规程
- 六年级语文下册 期末复习非连续性文本阅读专项训练(二)(含答案)(部编版)
评论
0/150
提交评论