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

上传人:b****6 文档编号:8622160 上传时间:2023-05-12 格式:DOCX 页数:13 大小:200.76KB
下载 相关 举报
上半年下午 程序员 试题及答案与解析软考考试真题案例分析Word文件下载.docx_第1页
第1页 / 共13页
上半年下午 程序员 试题及答案与解析软考考试真题案例分析Word文件下载.docx_第2页
第2页 / 共13页
上半年下午 程序员 试题及答案与解析软考考试真题案例分析Word文件下载.docx_第3页
第3页 / 共13页
上半年下午 程序员 试题及答案与解析软考考试真题案例分析Word文件下载.docx_第4页
第4页 / 共13页
上半年下午 程序员 试题及答案与解析软考考试真题案例分析Word文件下载.docx_第5页
第5页 / 共13页
上半年下午 程序员 试题及答案与解析软考考试真题案例分析Word文件下载.docx_第6页
第6页 / 共13页
上半年下午 程序员 试题及答案与解析软考考试真题案例分析Word文件下载.docx_第7页
第7页 / 共13页
上半年下午 程序员 试题及答案与解析软考考试真题案例分析Word文件下载.docx_第8页
第8页 / 共13页
上半年下午 程序员 试题及答案与解析软考考试真题案例分析Word文件下载.docx_第9页
第9页 / 共13页
上半年下午 程序员 试题及答案与解析软考考试真题案例分析Word文件下载.docx_第10页
第10页 / 共13页
上半年下午 程序员 试题及答案与解析软考考试真题案例分析Word文件下载.docx_第11页
第11页 / 共13页
上半年下午 程序员 试题及答案与解析软考考试真题案例分析Word文件下载.docx_第12页
第12页 / 共13页
上半年下午 程序员 试题及答案与解析软考考试真题案例分析Word文件下载.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

1:

0);

}

intlarger(intx,inty)

return((x>

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

{inti,j;

intswapped=1;

for(i=0;

swapped;

i++){

swapped=0;

for(j=0;

j<

n-l-i;

j++)

if(compare(arr[j+1],arr[j])){

swap(arr[j+1],arr[j]);

swapped=1;

}

 

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

设有如下数组定义:

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

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

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

请分别给出下面的函数调用执行后,数组data1、data2和data3各自的元素序列。

(1)bubbleSort(data1,5,less);

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

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

【试题三】

(15分)

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

某市根据每天早上5点测得的雾霾指数(pm2.5值)决定是否对车辆进行限行。

规则如下:

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

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

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

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

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

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

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

下面程序运行时,输入雾霾指数、星期(数字1表示星期一,数字2表示星期二,...,数字7表示星期日)和车牌号,输出该车牌号是否限行的信息。

#include<

stdio.h>

#definePM25_L1200

#definePM25_L2400

typedefenum{YES,NO}MARKTAG;

intisDigit(charch)

{//判断ch是否为十进制数字字符,是则返回1,否则返回0

return(ch>

='

0'

&

&

ch<

9'

);

voidprt_msg(char*msg,MARKTAGflag)

if(flag==YES)

printf("

%s:

trafficrestrictions\n"

msg);

else

free\n"

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个尾号的汽车

if(isMatched((3)))

prt_msg(licence,YES);

else{//限行2个尾号的汽车

if(isMatched((4)))

intmain()

intweekday=0,pm25=0;

charlicence[7];

scanf("

%d%d%s’’,&

pm25,&

weekday,licence);

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

proc((5));

return0;

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

试题四(共15分)

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

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

设表达式由两个整数和一个运算符(+或-)构成,整数和运算符之间以空格分隔,运算符可以出现在两个整数之前、之间或之后,整数不超过4位,输入的两个整数和运算符都用字符串表示。

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

#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;

while(*s){

val=

(1)+(*s-'

//将数字字符串转换为十进制整数

(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));

case‘-’:

%s-%s=%d”,a,b,str2int(a)-str2int(b));

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

{//解析输入的3个字符串,输出表达式及计算结果

if(isOperator(a)){//运算符在两个整数之前

cal((3));

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

cal((4));

else{//运算符在两个整数之后

cal((5));

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

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

试题五(共15分)

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

【说明】

现如今线下支付系统可以使用现金(Cash)、移动支付、银行卡(Card)(信用卡(CreditCard)和储蓄卡(DebitCard))等多种支付方式(PaymentMethod)对物品(Item)账单(Bill)进行支付。

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

【Java代码】

Importjava.util.ArrayList;

importjava.util.List;

interfacePaymentMethod{

public

(1);

//Cash、DebitCard和Item实现略,Item中getPrice()获取当前物品对象的价格

abstractclassCard

(2){

privatefinalStringname,num;

publicCard(Stringname,Stringnum){this.name=name;

this.num=num;

}

@Oveiride

publicStringtoString(){

returnString.format(“%scard[name=%s,num=%s]”,this.getType(),name,num);

@Override

publicvoidpay(intcents){

System.out.println(“Payed"

+cents+“centsusing“+toString());

this.executeTransaction(cents);

protectedabstractStringgetType();

protectedabstractvoidexecuteTransaction(intcents);

classCreditCard(3){

publicCreditCard(Stringname,Stringnum){(4);

protectedStringgetType(){return"

CREDIT"

;

protectedvoidexecuteTransaction(intcents){

System.out.println(cents+"

paidusingCreditCard."

’);

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

privateList<

Item>

items=newArrayList<

>

();

publicvoidadd(Itemitem){items.add(item);

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

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

(5)(getTotalPrice());

publicclassPaymentSystem{

publicvoidpay(){

Billbill=newBill();

Itemitem1=newItem("

1234"

10);

Itemitem2=newItem("

5678"

40);

bill.add(item1);

bill.add(item2);

//将物品添加到账单中

bill.pay(newCreditCard("

LISI"

"

98765432101"

));

//信用卡支付

publicstaticvoidmain(String[]args){

(6)=newPaymentSystem();

payment.pay();

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

试题六(共15分)

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

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

【C++代码】

iostream>

#include〈vector〉

#include〈string〉

usingnamespacestd;

classPaymentMethod{

public:

virtualvoidpay(intcents)=0;

};

//Cash、DebitCard和Item实现略,Item中getPrice()获取当前物品对象的价格

classCard:

publicPaymentMethod{

private:

stringname,num;

Card(stringname,stringnum){this->

name=name;

this->

num=num;

stringtoString(){

returnthis->

getType()+"

card[name="

+name+"

,num="

+num+"

]"

voidpay(intcents){

cout<

<

"

Payed"

<

cents<

centsusing"

toString()<

end1;

this->

executeTransaction(cents);

protected:

virtualstringgetType()=0;

virtualvoid

(1)=0:

};

classCreditCard

(2){

CreditCard(stringname,stringnum)(3){

stringgetType(){return"

CREDIT"

voidexecuteTransaction(intcents){

paidusing"

getType()<

Card."

end1;

vector<

Item*>

items;

//包含物品的vector

voidadd(Item*item){items.push_back(item);

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

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

(4)(getTotalPrice());

classPaymentSystem{

voidpay(){

Bill*bill=newBill();

Item*item1=newItem"

,10);

Item*item2=newItem("

bill->

add(item1);

bill->

add(item2);

(5)(newCreditCard("

Intmain(){

payment->

pay();

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

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2