上半年下午程序员试题及答案与解析软考考试真题案例分析文档格式.docx
- 文档编号:20720676
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:11
- 大小:266.21KB
上半年下午程序员试题及答案与解析软考考试真题案例分析文档格式.docx
《上半年下午程序员试题及答案与解析软考考试真题案例分析文档格式.docx》由会员分享,可在线阅读,更多相关《上半年下午程序员试题及答案与解析软考考试真题案例分析文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
#defineswap(a,b){a=a/'
b;
b二a^b;
a二ab}//交换a与b的值intless(intx,inty)
(
return((x<
y)?
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代码,回答问题,将解答写入答题纸的对应栏内。
设有如下数组定义:
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值)决定是否对车辆进行限行。
规则如
下:
(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表示星期日)和车牌号,输岀该车牌号是否限行的信息。
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个尾号的汽车
辻(isMatched((3)))prt_msg(licence,YES);
else
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”。
#include<
stdio.h>
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;
-'
:
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_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);
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)处的字句写在答题纸的对应栏内
试题六(共15分)
阅读下列说明和C卄代码,填补代码中的空缺,将解答填入答题纸的对应栏内说明】
现如今线下支付系统可以使用现金(Cash)>移动支付、银Card)(信用卡行卡
(CreditCard)和储蓄卡(DebitCard))等多种支付方式(PaymentMethod)对物品(Item)账单(Bill)进行支付。
图6-1是某支付系统的简略类图。
toString(){
returnthis~>
getType()+〃card[name二"
+name+"
,num二〃+num+“]"
)voidpay(intcents){
cout〈〈"
Payed"
<
<
cents〈〈"
centsusing"
toString()〈〈endl;
this~>
executeTransaction(cents);
protected:
virtualstringgetType()=0;
virtualvoid
(1)二0:
};
classCreditCard
(2){
public:
CreditCard(stringname,stringnum)(3){
stringgetType(){return"
CREDIT"
;
voidexecuteTransaction(intcents){
cout〈<
cents<
"
paidusing"
getType()〈〈”Card."
endl:
};
classBill{//包含所有购买商品的账单
private:
vector<
Item*〉items:
//包含物品的vector
voidadd(Item*item){items・push_back(item);
intgetTotalPrice(){/*计算所有item的总价格,代码略*/}
voidpay(PaymentMethod*paymentMethod){//用指定的支付方式完成支付
(4)(getTotalPrice());
classPaymentSystem{
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();
【问题6]阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上半年 下午 程序员 试题 答案 解析 考试 案例 分析
![提示](https://static.bdocx.com/images/bang_tan.gif)