本试卷共六道题,试题一至试题四是必答题,试题五和试题六选答一题。每题15分,满分75分。
试题一
(共15分)
1、阅读以下说明和流程图,填写流程图中的空缺,将解答填入对应处。
【说明】
如果n位数(n≥2)是回文数(从左到右读与从右到左读所得结果一致),且前半部分的数字递增(非减)、后半部分的数字递减(非增),则称该数为拱形回文数。例如,12235753221就是一个拱形回文数。显然,拱形回文数中不含数字0。
下面的流程图用于判断给定的n位数(各位数字依次存放在数组的各个元素A[i]中,i=1,2,…,n)是不是拱形回文数。流程图中,变量T动态地存放当前位之前一位的数字。当n是奇数时,还需要特别注意中间一位数字的处理。
【流程图】
注1:“循环开始”框内给出循环控制变量的初值、终值和增值(默认为1),格式为: ……此处隐藏23463个字…… "98765432101"));
Bill中pay函数的参数为PaymentMethod纯虚类对象指针,此处调用时传递的具体支付方式参数会自动向上转型为PaymentMethod类型,向上转型总是安全的。在Bill中进行pay的是对象指针所动态绑定的实际具体支付方式对象执行相应的pay函数。
主控逻辑代码在mam函数中实现。在main()函数中,先初始化PaymentSystem类的对象指针,名称payment,然后调用pay函数,即:
PaymentSystem* payment=new PaymentSystem();
Payment->pay();
综上所述,第一空需要定义纯虚方法virtual executeTransaction(int cents)=0;题目代码中已经给出=0;所以第一空为executeTransaction(int cents);第二空需要继承抽象类Card,即:public Card;第三空需要显式调用父类的构造器,即:Card(name,num),第四空需要调用支付方式的pay函数进行支付,即paymentMethod->pay;第五空处需要bill对象调用pay函数进行支付,即bill->pay,第六空处为创建PaymentSystem类的对象指针,即PaymentSystem* payment。