上半年下午程序员试题及答案与解析软考考试真题案例分析.docx

上传人:b****5 文档编号:7603008 上传时间:2023-01-25 格式:DOCX 页数:11 大小:266.21KB
下载 相关 举报
上半年下午程序员试题及答案与解析软考考试真题案例分析.docx_第1页
第1页 / 共11页
上半年下午程序员试题及答案与解析软考考试真题案例分析.docx_第2页
第2页 / 共11页
上半年下午程序员试题及答案与解析软考考试真题案例分析.docx_第3页
第3页 / 共11页
上半年下午程序员试题及答案与解析软考考试真题案例分析.docx_第4页
第4页 / 共11页
上半年下午程序员试题及答案与解析软考考试真题案例分析.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

上半年下午程序员试题及答案与解析软考考试真题案例分析.docx

《上半年下午程序员试题及答案与解析软考考试真题案例分析.docx》由会员分享,可在线阅读,更多相关《上半年下午程序员试题及答案与解析软考考试真题案例分析.docx(11页珍藏版)》请在冰豆网上搜索。

上半年下午程序员试题及答案与解析软考考试真题案例分析.docx

上半年下午程序员试题及答案与解析软考考试真题案例分析

china_nejcer

2019年上半年下午程序员考试试题-

案例分析-答案与解析

试题一(共20分)

阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

如果n位数(n》2)是回文数(从左到右读与从右到左读所得结果一致),且前半部分的数字递增(非减)、后半部分的数字将递减(非增),则称该数为拱形回文数。

例如,12235753221就是一个拱形回文数。

显然,拱形回文数中不含数字0o

下面的流程图用于判断给定的n位数(各位数字依次存放在数组的各个元素A

[i]中,

i二1,2,・・・,n)是不是拱形回文数。

流程图中,变量T动态地存放当前位之前一位的数字。

当n是奇数时,还需要特别注意中间一位数字的处理。

【流程图】

 

注1:

“循环开始”框内给岀循环控制变量的初值、终值和增值(默认为1),

格式为:

循环控制变量二初值,终值[,增值]

注2:

函数int(x)为取x的整数部分,即不超过x的最大整数。

【问题

1]阅读以下说明和流程图,填写流程图中的空缺,将解答填入答题纸的对应栏内。

china_nejcer

试题二(共15分)

china_nejeer

阅读下列说明和c函数,填补函数中的空缺,将解答填入答案纸的对应栏目内。

【说明】函数bubbleSort(intarr[],intn,int(^compare)(int,int))的功能是根据调用时

传递的比较函数compare对数组arr的前n个元素进行排序。

【C代码】

#defineswap(a,b){a=a/'b;b二a^b;a二ab}//交换a与b的值intless(intx,inty)

return((x

1:

0);

intlarger(intx,inty)

return((x>y)?

1:

0);

voidbubbleSort(intarr[],intn,int(*compare)(int,int))

{inti,j;

intswapped二1;

for(i二0;swapped:

i++){swapped二0;for(j=0;j

(compare(arr[j+1],arr[j])){swap(arr[j+1],arr[j]);swapped二1;

【问题2]阅读以下说明和C代码,回答问题,将解答写入答题纸的对应栏内。

设有如下数组定义:

intdatal[]={4,2,6,3,1};

intdata2[]二{4,2,6,3,1};

intdata3[]二{4,2,6,3,1};请分别给出下面的函数调用执行后,彗组

datal、data2和data3各自的兀素序列。

(1)bubbleSort(datal,5,less):

(2)bubbleSort(data2,5,larger);

(3)bubbleSort(data3,3,larger);

【试题三】(15分)

阅读下列说明和C函数,填补C函数中的空缺,将解答填入答案纸的对应栏目内。

【说明】【说明】某市根据每天早上5点测得的雾霾指数(pn)2・5值)决定是否对车辆进行限行。

规则如

china_nejcer

下:

(1)限行时间为周内・(即周一到周五),周六周日不限行;

(2)根据车牌号的尾号(最后1位数字)设置限行车辆(车牌号由英文字母和十进制数字构成,长度为6位,至少包含1位数字);

(3)雾霾指数低于200时,不限行;

(4)雾霾指数在区间[200,400)时,周内每天限行两个尾号的汽车:

周一限行1和

6,周二限行2和7,周三限行3和&周四限行4和9,周五限行5和0,即尾号除以5的余数相同者在同一天限行;

(5)雾霾指数大于等于400时,周内每天限行五个尾号的汽车:

周一、周三和周五限行1,3,5,7,9,周二和周四限行0,2,4,6,&即尾号除以2的余数相同者在同一天限行;下面程序运行时,输入雾霾指数、星期(数字1表示星期一,数字2表示星期二,・・・,数字7表示星期日)和车牌号,输岀该车牌号是否限行的信息。

【C代码】

tiinclude〈stdio.h>

ttdefinePM25_L1200

ttdefinePM25_L2400

typedefenum{YES,NO}MARKTAG:

intisDigit(charch)

{//判断ch是否为十进制数字字符,是则返回1,否则返回0return(ch〉二'O'&&ch〈二'9');

voidprt_msg(char*msg,MARKTAGflag)

辻(flag二二YES)

printf(〃%s:

trafficrestrictions\n〃,msg);

else

printf(〃%s:

free\nz/,msg);

intisMatched(intweekday,intt,intd)//判断是否符合限彳丁规则,是则返回

1,

否则返回0

{return(weekday%d二二t%d);}

voidproc(intpm25,intweekday,char^licence)

inti,lastd;

if(weekday二二6|weekday=7|

(1))

prt_msg(licence,NO);

else{

for(i二5;i>=0;i--)

if(isDigit(licence[i])){

lastd=

(2);//获取车牌号的尾号break;

if(pm25>=PM25_L2){//限行5个尾号的汽车

china_nejcer

辻(isMatched((3)))prt_msg(licence,YES);else

prt_msg(licence,NO);

else{//限行2个尾号的汽车辻(isMatched((4)))prt_msg(licence,YES);

elseprt_msg(licence,NO);

intmain()

intweekday二0,pm25=0;

charlicence[7];

scanf(/z%d%d%s,&pm25,&weekday,licence);

//输入数据的有效性检测略,下面假设输入数据有效、正确

proc((5));

return0;

【问题3]阅读以下说明和C代码,填写程序中的空缺,将解答写入答题纸的对应栏内。

试题四(共15分)

阅读以下说明和c函数,填补函数中的空缺,将解答填入答题纸的对应栏

内。

【说明】

【说明】下面程序运行时,对输入的表达式进行计算并输出计算结果。

设表达式由两个整数和一个运算符(+或-)构成,整数和运算符之间以空格分隔,运算符可以出现在两个整数

之前、之间或之后,整数不超过4位,输入的两个整数和运算符都用字符串表示。

例如,输入分别为“25+7”、“+257”、“257+”时,输出均为“25+7二32”。

【C代码】

#include

intstr2int(char*s);//将数字字符串转换为整数

intisOperator(char*str);//判断字符串的开头字符是否为运算符

voidcal(charop,chara[],charb[]);//将数字串转化为对应整数后进行

op

所要求的计算

voidsolve(chara[],charb[],charc[]);

intmain()

全国计算机技术与软件专业技术资格(水平)、考试库chara[10],b[10],c[10];

scanf(''%s%s%‘s,,a,b,c);

//输入数据的有效性检测略,下面假设输入数据有效、正确Solve(a,b,c);

Return0;

intstr2int(char*s)

intval二0;

wh订e(*s){

val二

(1)+(*s-,0,);//将数字字符串转换为十进制整数

(2);//令字符指针指向下一个数字字符

returnval;

intisOperator(char*str)

return(*str='+'丨*str二二'-

voidcal(charop,chara[],charb[])

switch(op){

case'+,:

printf(',%s+%s二%d”,a,b,str2int(a)+str2int(b));break;

case'-':

printf(〃%s-%s二%d”,a,b,str2int(a)~str2int(b));

break;

voidsolve(chara[],charb[],charc[]){//解析输入的3个字符串,输出表达式及计算结果if(isOperator(a)){//运算符在两个整数之前cal((3));

elseif(isOperator(b)){//运算符在两个整数之间cal((4));

else{//运算符在两个整数之后cal((5));

china_nejcer

china_nejcerH

【问题4】阅读以下说明和C代码,填写程序中的空

(1)~(5),将解答写入答题纸的对应栏内。

试题五(共15分)

阅读

以下说明和応胺程序,填补代码中的空缺,将解答填入答题纸的对应栏内。

【说明】【说明】现如今线下支付系统可以使用现金(Cash).移动支付、银行卡Card)(信用卡

(CreditCard)和储蓄卡(DebitCard))等多种支付方式

统的简略类图。

 

【Java代码】

Importjava.util.ArrayList;importjava.util.List;interfacePaymentMethod

{public

(1);)

//Cash、DebitCard和ItemabstractclassCard

(2)

privatefinalStringname,num;

@0veiridepublicStringtoStringreturnString,format(num);

©Override

publicvoidpay(intcents){

(){

%scard[name二%s,num二%s]”,this.getType(),

System.out.println(“Payed"+cents+“centsusing“+toString());

this.executeTransaction(cents);

全国计算机技术与软件专业技术资格(水平)、考试库

'protectedabstractStringgetType();

protectedabstractvoidexecuteTransaction(intcents);

JclassCreditCard(3){

publicCreditCard(Stringname,Stringnum){(4);}

©Override

protectedStringgetType(){return"CREDIT";}

©OverrideprotectedvoidexecuteTransaction(intcents){

System.out.println(cents+"paidusingCreditCard.〃');

》)

classBill{//包含所有购买商品的账单privateList〈Item>items二newArrayList〈>();

publicvoidadd(Itemitem){items.add(item);}publicintgetTotalPrice(){/*计算所有item的总价格,代码略*/}

publicvoidpay(PaymentMethodpaymentMethod){//用指定的支付方式完成支付

(5)(getTotalPrice());

publicclassPaymentSystem{

publicvoidpay(){

BillMil二newB订1();

Itemiteml二newItem(〃1234〃,10);Itemitem2二newItem(〃5678〃,40);

bill,add(iteml):

bill.add(item2):

//将物品添加到账单中bill,pay(newCreditCard(,ZLISI〃,〃98765432101〃));//信用卡支付>

publicstaticvoidmain(StringE]args){

(6)二newPaymentSystem();payment.pay();

【问题5]阅读以下说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内

china_nejcer

试题六(共15分)

阅读下列说明和C卄代码,填补代码中的空缺,将解答填入答题纸的对应栏内说明】

现如今线下支付系统可以使用现金(Cash)>移动支付、银Card)(信用卡行卡

(CreditCard)和储蓄卡(DebitCard))等多种支付方式(PaymentMethod)对物品(Item)账单(Bill)进行支付。

图6-1是某支付系统的简略类图。

toString(){

returnthis~>getType()+〃card[name二"+name+",num二〃+num+“]";)voidpay(intcents){

cout〈〈"Payed"<executeTransaction(cents);

protected:

virtualstringgetType()=0;

virtualvoid

(1)二0:

};

classCreditCard

(2){

china_nejcer

public:

CreditCard(stringname,stringnum)(3){

protected:

stringgetType(){return"CREDIT";}

voidexecuteTransaction(intcents){

cout〈

};

classBill{//包含所有购买商品的账单

private:

vector

//包含物品的vector

public:

voidadd(Item*item){items・push_back(item);}

intgetTotalPrice(){/*计算所有item的总价格,代码略*/}

voidpay(PaymentMethod*paymentMethod){//用指定的支付方式完成支付

(4)(getTotalPrice());

};

classPaymentSystem{

public:

voidpay(){

Bill*bill=newBill();

Item*iteml二newItenT1234〃,10);Item*item2二newItem(〃5678〃,40);

bill->add(iteml):

bill->add(item2):

//将物品添加到账单中

(5)(newCreditCard(Z,LISI","98765432101"));//信用卡支付

};

Intmain(){

(6)二newPaymentSystem();

payment->pay();

return0;

【问题6]阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内

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

当前位置:首页 > 表格模板 > 书信模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1