阅读以下说明和C代码,填写程序中的空缺,将解答写入对应栏内。 【说明】 某市根据每天早上5点测得的雾霾指数(pm2.5值)决定是否对车辆进行限行,规则如下: (1)限行时间为周内(即周一到周五),周六周日不限行; (2)根据车牌号的

admin2021-03-13  37

问题 阅读以下说明和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
    #define PM25_L1 200
    #define 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)){
               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);
           }
       }
   }
    main()
    {
    int weekday=0,pm25=0;
    char licence[7];
scanf(“%d%d%s”,&pm25,&weekday,licence);
    //输入数据的有效性检测略,下面假设输入数据有效、正确
    proc((5)________);
    return 0;
}

选项

答案(1)pm25<PM25 L1或pm25<200或等效形式 (2)licence[i]-‘0’或等效形式 (3)weekday,lastd,2 或lastd,weekday,2 (4)weekday,lastd,5 或lastd,weekday,5 (5)pm25,weekday,licence

解析 本题考查C程序的基本结构、函数调用及其应用。
    空(1)所在的条件语句处理不限行的情况,条件中已判定是否为周六和周日,还缺雾霾指数低于200的条件,因此该空应填入“pm25<PM25 L1”或“pm25<200”。
    空(2)所在的:for语句功能是找出车牌号的尾号数字,由于构成车牌号的字符为字母和数字,所以通过扫描车牌号的各个字符确定为数字字符时就得到尾号数字字符,还需要将数字字符的编码(ASCⅡ码值)减去字符‘0’的编码,即空(2)应填入“licenee-‘0’”或其等效形式。
    空(3)所在语句处理重度雾霾时限行5个尾号的情况,根据规则,周一、周三和周五限行1,3,5,7,9,周二和周四限行0,2,4,6,8,其特点是尾号和星期都是奇数或者都是偶数,也就是weekday%2与lastd%2相等,因此调用isMatched的参数为“weekday,,lastd,2”。
    空(4)所在语句处理限行2个尾号的情况,根据规则,周一限行1和6,周二限行2和7,周三限行3和8,周四限行4和9,周五限行5和0,其特点是除以5的余数相同,即weekday%5与lastd%5相等,因此调用isMatched的参数为“weekday,lastd,5”。
    根据各变量的作用,实现调用proc的空(5)处应填入“pm25,weekday,licence”。
转载请注明原文地址:https://jikaoti.com/ti/d8W7FFFM
0

最新回复(0)