摘要:希赛网软考频道小编为大家整理了2019上半年软考程序员下午真题第三部分,供大家参考。
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 <stdio.h>
#define PM25_L1 200
#defme PM25_L2 400
typedef enum {YES,NO} MARKTAG;
int isDigit(char ch)
{//判断ch是否为十进制数字字符,是则返回1,否则返回0
return (ch>='0' && ch<='9');
}
void prt_msg(char *msg, MARKTAG flag)
{
if (flag == YES)
printf("%s : traffic restrictions\n", msg);
else
printf("%s : free\n", msg);
}
int isMatched(int weekday, int t, int d) //判断是否符合限行规则,是则返回1,否则返回0
{ return (weekday%d == t%d); }
void proc(int pm25, int weekday, char *licence)
{
int i,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);
}
}
}
int main()
{
int weekday=0, pm25=0;
char licence[7];
scanf("%d %d %s’’,&pm25, &weekday, licence);
//输入数据的有效性检测略,下面假设输入数据有效、正确
proc( (5) );
return 0;
}
相关推荐:2019上半年程序员下午真题及答案
在线题库:程序员历年真题自测估分
软考备考资料免费领取
去领取