上半年 程序员应用技术.docx
- 文档编号:783033
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:12
- 大小:198.38KB
上半年 程序员应用技术.docx
《上半年 程序员应用技术.docx》由会员分享,可在线阅读,更多相关《上半年 程序员应用技术.docx(12页珍藏版)》请在冰豆网上搜索。
上半年程序员应用技术
2019上半年程序员下午真题
1、阅读以下说明和流程图,填写流程图中的空缺,将解答填入答题纸的对应栏内。
【说明】
如果n位数(n≥2)是回文数(从左到右读与从右到左读所得结果一致),且前半部分的数字递增(非减)、后半部分的数字将递减(非增),则称该数为拱形回文数。
例如,12235753221就是一个拱形回文数。
显然,拱形回文数中不含数字0。
下面的流程图用于判断给定的n位数(各位数字依次存放在数组的各个元素A[i]中,i=1,2,...,n)是不是拱形回文数。
流程图中,变量T动态地存放当前位之前一位的数字。
当n是奇数时,还需要特别注意中间一位数字的处理。
问题内容:
【流程图】
注1:
“循环开始”框内给出循环控制变量的初值、终值和增值(默认为1),格式为:
循环控制变量=初值,终值[,增值]
注2:
函数int(x)为取x的整数部分,即不超过x的最大整数。
2、阅读以下说明和C代码,回答问题,将解答写入答题纸的对应栏内。
【说明】
函数bubbleSort(intarr[],intn,int(*compare)(int,int))的功能是根据调用时传递的比较函数compare对数组arr的前n个元素进行排序。
【C代码】
#defineswap(a,b){a=a∧b;b=a∧b;a=a∧b;}//交换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 if(compare(arr[j+1],arr[j])){swap(arr[j+1],arr[j]); swapped=1; } } } 问题内容: 【问题】设有如下数组定义: 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); 3、阅读以下说明和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表示星期日)和车牌号,输出该车牌号是否限行的信息。 问题内容: 【C代码】 #include #definePM25_L1200 #defmePM25_L2400 typedefenum{YES,NO}MARKTAG;intisDigit(charch) {//判断ch是否为十进制数字字符,是则返回1,否则返回0return(ch>='0'&&ch<='9'); } voidprt_msg(char*msg,MARKTAGflag) { if(flag==YES) printf("%s: trafficrestrictions\n",msg); else } printf("%s: free\n",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个尾号的汽车 if(isMatched((3)))prt_msg(licence,YES); else } prt_msg(licence,NO); else{//限行2个尾号的汽车 if(isMatched((4))) prt_msg(licence,YES); else } prt_msg(licence,NO); } } intmain() { intweekday=0,pm25=0;charlicence[7]; scanf("%d%d%s’’,&pm25,&weekday,licence); //输入数据的有效性检测略,下面假设输入数据有效、正确 proc((5)); return0; } Pm<200 licence[i]-‘0’ weekday,lastd,2 weekday,lastd,5 4、阅读以下说明和C代码,填写程序中的空 (1)~(5),将解答写入答题纸的对应栏内。 【说明】下面程序运行时,对输入的表达式进行计算并输出计算结果。 设表达式由两个整数和一个运算符(+或-)构成,整数和运算符之间以空格分隔,运算符可以出现在两个整数之前、之间或之后,整数不超过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;while(*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) ) //运算符在两个整数之后 } } } 第四题答案: 1、Val*10 2、S++ 3、*abc 4、*bac 5、*cab 5、阅读以下说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 现如今线下支付系统可以使用现金(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); } protected
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上半年 程序员应用技术 程序员 应用技术
![提示](https://static.bdocx.com/images/bang_tan.gif)