计算机导论模拟测试练习(2018年秋)J. 残缺的车牌一 K. 残缺的车牌二

该博客介绍了如何通过残缺的车牌号码判断可能的肇事车辆车牌。对于J题,只要求号码相对位置相同;K题则要求号码连续出现。博客提供输入输出样例,并指出至少存在一个可能的车牌。
摘要由CSDN通过智能技术生成

同样比较相似我就放一起了。
两题的区别就是第一个不要求标志连续出现,只要相对位置相同即可。
第二个要求连续出现,
J题和第三次机考(2018)D. 残缺的车牌一相同,只贴代码, 不再说。
K题注意可以只检测in减去det的范围,因为后面不足det长的时候还没出现第一位就不可能会有匹配了。
比如abcdefg中找xyz,检查到e就行了,之后长度都不够,不可能出现。

J题

#include<stdio.h>
int check(char [],char []);
int main()
{	
	char det[12],in[200][12];
	int order[200];
	int n,i,k=0,j,tmp;
	gets(det);
	scanf("%d",&n);
	getchar();
	for(i=0;i<n;i++)
		gets(in[i]);
	
	for(i=0;i<n;i++)
		if(check(in[i],det))
			{order[k]=i;k++;}
	
	for(i=1;i<k;i++)
		for(j=0;j<k-i;j++)
			if(strcmp(in[order[j]],in[order[j+1]])>0)
			{
				tmp=order[j];
				order[j]=order[j+1];
				order[j+1]=tmp;
			}
	
	for(i=0;i<k;i++)
		puts(in[order[i]]);
	return 0;
}

int check(char in[],char det[])
{
	int i=0,l_in=strlen(in);
	char *ch=det;
	
	while(*ch!='\0'&&i<l_in)
	{	
		if(*ch==in[i])
			ch++;
		i++;
	}
	if(*ch=='\0') return 1;
	else return 0;	
}

K题

#include<stdio.h>
int check(char [],char []);
int main()
{	
	char det[12],in[200][12];
	int order[200];
	int n,i,k=0,j,tmp;
	gets(det);
	scanf("%d",&n);
	getchar();
	for(i=0;i<n;i++)
		gets(in[i]);
	
	for(i=0;i<n;i++)
		if(check(in[i],det))
			{order[k]=i;k++;}
	
	for(i=1;i<k;i++)
		for(j=0;j<k-i;j++)
			if(strcmp(in[order[j]],in[order[j+1]])>0)
			{
				tmp=order[j];
				order[j]=order[j+1];
				order[j+1]=tmp;
			}
	
	for(i=0;i<k;i++)
		puts(in[order[i]]);
	return 0;
}

int check(char in[],char det[])
{
	int i,j,k,len_in=strlen(in),len_det=strlen(det),suspect=0;
	for(i=0;i<=len_in-len_det;i++)
		{
			if(in[i]==det[0])
				{
					suspect=1;
					for(j=i,k=0;k<len_det;j++,k++)
						if(in[j]!=det[k])
						{
							suspect=0;
							break;
						}
				}
			if(suspect==1) return 1;
		}
	return 0;
}

题目描述
某处发生交通事故,肇事车辆逃逸。现场有价值的线索为若干块残缺的车牌。经技术人员分析得出以下结论,1、这些残缺的车牌来自同一块车牌且为肇事车辆悬挂;2、每块上只包含一个可以辨认的号码;3、这些号码的顺序是可以确定的。现请你根据这些信息写一段程序判断某车牌是否可能是肇事车辆当时悬挂的车牌。

输入第一行为一个字符串(字符串中只包含大写字母及数字,且长度不超过10),代表通过残缺车牌识别出的号码且这些号码已按应有的次序排好,也就是说如果在输入的字符串中某个号码(比如A)排在另外一个号码(比如B)的前边,那么在完整的车牌中A也必定在B前边;第二行为一个正整数n(0<n<200),代表待检验车牌的数量;后边n行,每行均为一个长度为10的字符串(字符串中只包含大写字母及数字),代表n个待检验车牌。
输出为若干行,每行为一个可能的肇事车辆的车牌(多行数据输出的顺序为:按字符串大小由小到大输出,如AAAAA00000在AAAAB00000前边输出)。测试用例保证输入合法且至少有一个车牌可能是肇事车辆的车牌。

输入样例
A0
2
AAA0000123
BBB0000123

输出样例
AAA0000123

题目描述
某处发生交通事故,肇事车辆逃逸。现场有价值的线索为一块残缺的车牌,上边有若干号码。经技术人员鉴定这块残缺的车牌为肇事车辆悬挂。为了尽快找到肇事车辆,需要拿这块车牌上的号码与数据库中已有的车牌号码进行匹配,来查找那些可能的肇事车辆。现请你写一段程序来帮助警察同志。

输入第一行为一个字符串(字符串中只包含大写字母及数字,且长度不超过10),代表残缺车牌上的号码;第二行为一个正整数n(0<n<200),代表数据库中车牌的数量;后边n行,每行均为一个长度为10字符串(字符串中只包含大写字母及数字),代表待检验的n个车牌。
输出为若干行,每行为一个可能的肇事车辆的车牌(多行数据输出的顺序为:按字符串大小由小到大输出,如AAAAA00000在AAAAB00000前边输出)。测试用例保证输入合法且至少有一个车牌可能是肇事车辆的车牌。

输入样例
789
2
ABCDE56789
VWZYZ01234
输出样例
ABCDE56789

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值