阅读以下说明和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 400typedef 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;}