刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

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

使用微信搜索喵呜刷题,轻松应对考试!

答案:

(1)pm25<200或pm<pm25_L1

(2)licence[i]-’0’

(3)weekday, lastd, 2或lastd, weekday,2

(4)weekday,lastd, 5或lastd, weekday, 5

(5)pm25, weekday, licence或pm25. weekday, &licence[0]

解析:

<解析>
(1)根据题目描述,当雾霾指数低于一定值时不限行车辆,因此此处应判断雾霾指数是否低于特定值(即PM25_L1),即pm25 < PM25_L1或pm25 < 200。所以答案为pm25 < 200或pm25 < PM25_L1。

(2)获取车牌号的尾号需要从车牌号的最后一位数字开始,通过遍历车牌号字符串找到第一个数字字符并获取其对应的整数值。因此此处应该使用字符’0’的ASCII码减去车牌号字符串中当前字符的ASCII码得到尾号。所以答案为licence[i] - ‘0’。这样可以确保正确地将字符转换为对应的整数值。

(3)当雾霾指数大于等于400时,需要按照尾号除以特定值的余数相同的原则限行车辆。此处需要判断车牌号的尾号除以特定值(这里是除以2)的余数是否与星期几的余数相同。因此答案为weekday和lastd分别除以特定值(这里是除以2)得到的余数进行比较。所以答案为weekday, lastd, 2。表示根据weekday和lastd的余数来判断是否限行。

(4)当雾霾指数在区间[200, 400)时,需要根据车牌号的尾号除以特定值的余数相同的原则限行车辆。这里需要判断车牌号的尾号除以特定值(这里是除以5)的余数是否与星期几的余数相同。因此答案为lastd和weekday分别除以特定值(这里是除以5)得到的余数进行比较。所以答案为lastd, weekday, 5。表示根据lastd和weekday的余数来判断是否限行。

(5)在调用proc函数时,需要将雾霾指数、星期几和车牌号作为实参传递给函数。由于车牌号是一个字符串,在C语言中通常通过传递字符串指针或数组来传递字符串。因此答案为pm25, weekday, &licence[0](或者pm25, weekday, licence[]),表示将车牌号字符串的地址传递给函数进行处理。

创作类型:
原创

本文链接:阅读以下说明和C 代码,填写程序的空缺,将解答写入答纸的对应栏內内。 【说明】某市根据每天早上5点测

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share