软考真题
第210题
【说明】
某市根据每天早上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[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;
}

【问题:3.1】阅读以下说明和C代码,填写程序中的空缺,将解答写入答题纸的对应栏内。
第4章数据结构与算法
正确答案:
你的答案:
请先在App中激活(应用市场搜“软考真题”)
知识点:
试卷:
2019年 上半年 下午试卷 案例

笔记

Inor烙

请先在App中激活(应用市场搜“软考真题”)

2020-11-01


请先在App中激活(应用市场搜“软考真题”)

2019-11-09


请先在App中激活(应用市场搜“软考真题”)

2019-10-22


请先在App中激活(应用市场搜“软考真题”)

2019-10-28


凌晨

请先在App中激活(应用市场搜“软考真题”)

2020-10-15


丁琪琪

请先在App中激活(应用市场搜“软考真题”)

2022-05-26


向南

请先在App中激活(应用市场搜“软考真题”)

2022-11-03