阅读以下说明和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
#define PM25_L2 400
typedef enum {YES, NO} MARKTAG;
int is Digit (char ch)
{//判断ch 是否为十进制数字字符,是则返回 1,否则返回0
return (ch>= ‘0’&& ch<=’g’);
}
void prt_msg(char *msg, MARKTAG fiag)
{
if(flag == YES)
printf("%s: traffic restrictions\n’’, msg);
else
printf("%s: free\n’’, msg);
Int is Matched (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 II weekday ==7l l (1) )
Prt _msg(licence, NO);
Else{
for(i=5;i>O;=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 (is Matched( (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;
}

