高级语言期末试卷C答案,高级语言C++程序设计--考试试卷- 答案

高级语言C++程序设计-考试试卷—答案

姓名: ________________ 成绩 __________________

第一题选择(22题,每题1.5分,共33分) C D A C D A B D D B 答案:1-11题 D 答案:12-22题 D A D D A D D D A A D 1. 按照C 语言规定的用户标识符命名规则,不能出现在标识符中的是 A)大写字母 B)下划线 C)数字字符D)连接符 2. 以下选项中不合法的标识符是 A)cout B)FOR C)&&a D)_00

3. 设有定义:int x=2;,以下表达式中,值不为6的是 A)x*=(1+x) B)x*=x+1 C)x++,2*x D)2*x, x+=2 4. C++ 源程序中不能表示的数制是

A)二进制 B)十六进制 C)十进制D)八进制 5. 以下关于结构化程序设计的叙述中正确的是

A)一个结构化程序必须同时由顺序、分支、循环三种结构组成 B)有三种基本结构构成的程序只能解决小规模的问题 C)在C ++语言中,程序的模块化是利用类实现的 D)结构化程序使用goto 语句会很便捷 6. 以下定义语句中正确的是

A) float a=1,*b=&a,*c=&b; B) int a=b=0;

C) double a=0.0;b=1.1; D) char A=65+1,b=’b’; 7. 计算机能直接执行的程序是

A)可执行程序 B)目标程序 C)源程序 D)汇编程序 8. 以下叙述中正确的是

A) C++ 语言程序中的注释必须与语句写在同一行 B)简单C++ 语句必须以分号结束

C) C++ 语句必须在一行内写完 D) C++ 程序中的每一行只能写一条语句 9. 以下选项中,不合法的C++语言用户标示符是 A) AaBc B) a_b C)_1 D) a--b 10.关于C++语言的变量,以下叙述中错误的是 A)由三条下划线构成的符号名是合法的变量名

B)所谓变量是指在程序运行过程中其值可以被改变的量 C)程序中用到的所有变量都必须先定义后才能使用 D)变量所占的存储单元地址可以随时改变 11. C ++语言中double 类型数据占字节数为 A) 12 B) 8 C) 4 D) 16 12. 以下叙述中正确的是

A)空语句就是指程序中的空行

B)花括号对{}只能用来表示函数的开头和结尾,不能用于其他目的 C)复合语句在语法上包含多条语句,其中不能定义局部变量

D)当用cin 从键盘输入数据时,每行数据在没有按下回车键(Enter 键)前,可以任意修改 13. 以下叙述中正确的是

A) C++ 语言程序总是从main 函数开始执行

B) C++ 语言程序所调用的函数必须放在main 函数的前面 C) C++ 语言程序中main 函数必须放在程序开始位置

D) C++ 语言程序总是从最前面的函数开始执行 14. 以下叙述中正确的是

A)if 语句只能嵌套一层 B)不能在else 子句中在嵌套if 语句

C)改变if-else 语句的缩进格式,会改变程序的执行流程 D)if 子句和else 子句中可以是任意合法的C ++语句 15. 以下叙述中正确的是

A)在while 语句和do-while 语句中无法使用continue 语句

B)当break 出现在循环体中的switch 语句体内时,其作用是跳出该switch 语句体,并终止循环 C)continue 语句的作用是:在执行完本次循环体中剩余语句后,终止循环 D)只能在循环体内和switch 语句体内使用break 语句 16. 已定义以下函数: int fun(int *p){return *p;} fun 函数返回值是

A)一个整数 B)形参p 的地址值 C)形参p 中存放的值 D)不确定的值 17. 设有定义:double a[10],*s=a;以下能够代表数组元素a[3]的是 A)*s[3] B)(*s)[3] C)*s+3 D)*(s+3) 18. 下列选项中,能正确定义数组的语句是 A)int num[0...2008]; B)int num[ ];

C)int N=2008; int num[N]; D)#define N 2008; int num[N];

19. 设有以下函数:void fun(int n,char *s){......} 则下面对函数指针的定义和赋值均正确的是 A)void *pf(); pf=fun; B) void (*pf)(int,char );pf=&fun; C)void *pf(); *pf=fun; D)void (*pf)(int ,char *) ; pf=fun; 20. 以下叙述中正确的是

A)int *p1, int **p2, int *p3;都是合法的定义指针变量语句 B)语句p==NULL;与p==\\0 是等价的语句

C)p==NULL;执行后,指针p 指向地址为0 的存储单元 D)指针变量只能通过求指针运算符(&)获得地址值 21. int *func(int a[10], int n);则以下叙述中正确的是 A)说明中的a[10]改为a[]或*a 效果完全一样

B)函数中不能对a 进行移动指针(如a++)的操作

C)只有指向10 个整数内存单元的指针,才能作为实参传递给形参 D)形参a 对应的实参只能是数组名 22. 若有以下语句

typedef struct S{ int g; char h;} T; 以下叙述中正确的是

A)T 是struct S 类型的变量 B)可用S 定义结构体变量 C)S 是srurct 类型的变量 D)可用T 定义结构体变量

第二题:类与对象编程 (25分)

自定义一个简单的时间类TimeType,它具有数据成员h、m、s,用来表示当前时间的时、分、秒。而后设计该类的功能,进而设计出相应的类成员函数, 实现对时分秒的增加、判断两个时间是否相等以及对时间的输出等操作。试完成各类成员函数并编制主函数,说明TimeType 类对象,对定义的各成员函数进行调用,以验证它们的正确性。 class TimeType { int h,m,s; //私有数据成员,表示当前时间的时、分、秒 public:

TimeType(int h0=0, int m0=0, int s0=0);//构造函数,设置时、分、秒并设置参数默认值 void incrementSec(int sec); …;…;//增加若干秒…//增加若干分…//增加若干小时 bool equal(TimeType t2); //判断两时间是否相等

void printTime(); //屏幕输出时间对象的有关数据(时、分、秒)}; 编制类似于如下样式的主函数:

TimeType t1(11, 48, 59), t2(11, 59, 48), t3;

cout<

if(t1.equal(t2))cout<

t1.incrementMin(30);cout< usingnamespacestd;

classTimeType { //自定义的时间类TimeType inth, m, s; //私有数据成员,表示当前时间的时、分、秒 public: TimeType(inth0 = 0, intm0 = 0, ints0 = 0);

//构造函数,设置时、分、秒并设置参数默认值 voidincrementSec(intsec); //增加若干秒,sec>0 voidincrementMin(intmin); //增加若干分,min>0 voidincrementHou(inthrs); //增加若干小时,hrs>0 boolequal(TimeTypet2); //判断两时间是否相等 voidprintTime(); //屏幕输出时间对象的有关数据(时、分、秒) };

TimeType::TimeType(inth0, intm0, ints0) { h = h0; m = m0; s = s0; }

voidTimeType::incrementSec(intsec) { s = s + sec; m = m + s / 60; s = s % 60;

h = h + m / 60; m = m % 60;

h = h % 24; }

voidTimeType::incrementMin(intmin) { m = m + min; h = h + m / 60; m = m % 60;

h = h % 24; }

voidTimeType::incrementHou(inthrs) { h = h + hrs;

h = h % 24; }

boolTimeType::equal(TimeTypet2) { inttime1 = (h * 60 + m) * 60 + s; inttime2 = (t2.h * 60 + t2.m) * 60 + t2.s; returntime1 == time2 ? true : false; }

voidTimeType::printTime() { cout<

cout

第三题:继承与派生编程(22分)

利用虚函数手段,按照3 种不同的计算方法来求出Fibonacci 数列的第n项(具体项值)并输出。具体地说,可通过在基类baseCla 及其派生类fib1Cla、fib2Cla 和fib3Cla 中说明如下的同一个虚函数“ virtualdouble fib(int n);”,来实现求Fibonacci 数列第n 项值并返回的3 种不同求解方法:简单变量“数据平移”法(显示出第1476项)、使用数组的实现法(显示出第888项)以及使用递归函数的实现法(显示出第35项)。 基类和派生类可做如下定义:

class baseCla { //自定义的基类baseCla public:virtual double fib(int n)=0;}; class fib1Cla:public baseCla { private: ……

public:virtual double fib(int n); //简单变量“数据平移”法};

利用函数void fun(baseCla *p, int n)调用相应派生类的函数, 并以科学计数法输出到小数点后15位.

#includeusingnamespacestd; classbaseCla

{ //自定义的基类baseCla public: virtualdoublefib(intn) = 0; //基类baseCla中说明了一个虚函数fib,且为纯虚函数 };

classfib1Cla : publicbaseCla//由基类baseCla派生出的fib1Cla类 { doublea = 1, b = 1, c = 0, i; public:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值