7-2 北京市机动车网上自选牌号的正误鉴别

题目描述:

2009年3月9日开始,北京市交通管理局正式推出北京市机动车网上自选牌号业务,极大的方便了新购车的市民自选中意的新车牌照号的需求。根据国家制定的机动车号牌号码标准,一辆机动车的号牌号码由七位字符组成,前两位是号牌号码发牌机关代码,后五位是具体号牌号码。主管部门在具体操作上又出台了以下规定:机动车所有人网上选号的号牌号码发牌机关代码为“京N”或者“京Y”。后面的五位号牌号码的最后一位必须为数字,其余四位有且必须有两位为英文字母(但字母I和O不可用),也就是说英文字母有且只有两个,不能多也不能少。例如:京NAB999、京NC9D99、京NE99F9、京N9GH99、京N9J9K9、京N99LM9、京YNB999、京YP9D99、京YZ99F9号码都是正确的。你能据此编写一个程序来检测给定的号牌号码是否符合上述规定吗?

输入格式:

第一行为一个整数T(0<T<=100),代表测试用例组数,后边是T组测试用例,每个用例占一行,为含有号牌号码最后五位的字符内容(不会包含空格、回车等空白符)。

输出格式:

为T行,每行对应输入的测试用例,如果检测认为测试用例符合规定则输出“yes:”并后跟对应的号牌号码(如果号牌中字母为小写字母,请转换为大写字母输出),如果检测认为不符合规定则输出“no.”(不含双引号本身)。注意,如果号牌中包含有非法字符(也就是不是字母也不是数字的字符),也认为不符合规定。

输入样例:

2
K00a1
aBc12

输出样例:

yes:K00A1
no.

我的答案:

#include<stdio.h>
int main()
{
	int t;
	scanf("%d",&t);
	getchar();
	for(int i=0;i<t;i++)
	{
		char a[10];
		int flag=0;
		int cnt=0;
		gets(a);
		for(int j=0;j<4;j++)
		{
			if((a[j]>='A'&&a[j]<='Z')&&(a[j]!='I')&&(a[j]!='O'))
			{
				flag++;
			}
			if((a[j]>='a'&&a[j]<='z')&&(a[j]!='i')&&(a[j]!='o'))
			{
				flag++;
				a[j]=(char)(a[j]-'a'+'A');
			}
			if(((a[j]<'a'||a[j]>'z')&&(a[j]<'A'||a[j]>'Z'))&&(a[j]<'0'||a[j]>'9'))
			{
				cnt++;
			}
		}
		if((a[4]>='0'&&a[4]<='9')&&cnt==0)
		{
			if(flag==2)
			{
				printf("yes:%s",a);
				printf("\n");
			}
			else
			{
				printf("no.\n");
			}
		}
		else
		{
			printf("no.\n");
		}
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值