2013蓝桥杯【初赛试题】前缀判断

前缀判断
如下的代码判断 needle_start指向的串是否为haystack_start指向的串的前缀,如不是,则返回NULL。
比如:"abcd1234" 就包含了 "abc" 为前缀
 
char* prefix(char* haystack_start, char* needle_start)
{
 char* haystack = haystack_start;
 char* needle = needle_start;

 
 while(*haystack && *needle){
  if(______________________________) return NULL;  //填空位置
 }
 
 if(*needle) return NULL;
 
 return haystack_start;
}

 

请分析代码逻辑,并推测划线处的代码,通过网页提交。
注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字!!

 

答案:*(haystack++)!=*(needle++)

解析(见注释)注意:haystack为要判断的字符串,needle为前缀。

char* prefix(char* haystack_start, char* needle_start)
{
 char* haystack = haystack_start;//标准串的指针
 char* needle = needle_start;//要检测的串的指针 

 while(*haystack && *needle){
    //因为比较的是两个串的前缀是否相等,所以,要向后比较,要自加
    //在needle指向的被检测的串指向空时,对比就结束了
    //例如haystack指向的是abc123,而needle指向的是abc
    //那么当haystack指向1时,needle已经指完了,再指
    //就是null(空)了,此时 *haystack && *needle为null
    //while循环结束,比较结束
     //倘若之前就有不相等的,那么needle指向的串一定不是haystack串的前缀
     //所以应该填写下面的代码
  if(*(haystack++)!=*(needle++)) return NULL;  //填空位置
 }

 if(*needle) return NULL;//如果此时是needle指针是空的,那么返回空 

 return haystack_start;//其它情况均合格
}

 

时间: 2024-10-31 13:29:41

2013蓝桥杯【初赛试题】前缀判断的相关文章

蓝桥杯 历届试题 公式求值 (想了很久了,想不明白,才来请教的,麻烦各位了)

问题描述 蓝桥杯 历届试题 公式求值 (想了很久了,想不明白,才来请教的,麻烦各位了) 问题描述 输入n, m, k,输出下面公式的值. 其中C_n^m是组合数,表示在n个人的集合中选出m个人组成一个集合的方案数.组合数的计算公式如下. 输入格式 输入的第一行包含一个整数n:第二行包含一个整数m,第三行包含一个整数k. 输出格式 计算上面公式的值,由于答案非常大,请输出这个值除以999101的余数. 样例输入 3 1 3 样例输出 162 样例输入 20 10 10 样例输出 359316 数据

蓝桥杯 历届试题 大臣的旅费

历届试题 大臣的旅费   时间限制:1.0s   内存限制:256.0MB        问题描述 很久以前,T王国空前繁荣.为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市. 为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首都直接或者通过其他大城市间接到达.同时,如果不重复经过大城市,从首都到达每个大城市的方案都是唯一的. J是T国重要大臣,他巡查于各大城市之间,体察民情.所以,从一个城市马不停蹄地到另一个城市成了J最常做的事情.

2013蓝桥杯【初赛试题】高斯日记

高斯日记 大数学家高斯有个好习惯:无论如何都要记日记. 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天.这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢? 高斯出生于:1777年4月30日. 在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日. 高斯获得博士学位的那天日记上标着:8113 请你算出高斯获得博士学位的年月日.

2013蓝桥杯【初赛试题】第39阶台阶

第39阶台阶 小明刚刚看完电影<第39级台阶>,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!  站在台阶前,他突然又想着一个问题:  如果我每一步只能迈上1个或2个台阶.先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步.那么,上完39级台阶,有多 少种不同的上法呢?  请你利用计算机的优势,帮助小明寻找答案. 要求提交的是一个整数. 注意:不要提交解答过程,或其它的辅助说明文字.   思路:(原先用斐波那契额真是大错特错.....)这一题的重点是偶数步(先迈左右脚是

蓝桥杯 历届试题 带分数

历届试题 带分数   时间限制:1.0s   内存限制:256.0MB 问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0). 类似这样的带分数,100 有 11 种表示法. 输入格式 从标准输入读入一个正整数N (N<1000*1000) 输出格式 程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数. 注意:不要求输出每个表

蓝桥杯 历届试题 危险系数

  历届试题 危险系数  时间限制:1.0s   内存限制:256.0MB         问题描述 抗日战争时期,冀中平原的地道战曾发挥重要作用.   地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系.   我们来定义一个危险系数DF(x,y):   对于两个站点x和y (x != y), 如果能找到一个站点z,当z被敌人破坏后,x和y不连通,那么我们称z为关于x,y的关键点.相应的,对于任意一对站点x和y,危险系数DF(x,y)就

蓝桥杯 历届试题 连号区间数

历届试题 连号区间数   时间限制:1.0s   内存限制:256.0MB        问题描述 小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第L个到第R个元素)递增排序后能得到一个长度为 R-L+1的"连续"数列,则称这个区间连号区间. 当N很小的时候,小明可以很快地算出答案,但是当N变大的时候,问题就不是那么简单了,现在 小明需要你的帮助. 输入格式 第一行是

蓝桥杯-历届试题 剪格子

历届试题 剪格子   时间限制:1.0s   内存限制:256.0MB        问题描述 如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+ |10* 1|52| +--****--+ |20|30* 1| *******--+ | 1| 2| 3| +--+--+--+ 我们沿着图中的星号线剪开,得到两个部分,每个部分的数字和都是60. 本题的要求就是请你编程判定:对给定的m x n 的格子中的整数,是否可以分割为两个部分,使得这两个区域的数字和相等. 如果存在多种解

蓝桥杯-历届试题 买不到的数目

历届试题 买不到的数目   时间限制:1.0s   内存限制:256.0MB        问题描述 小明开了一家糖果店.他别出心裁:把水果糖包成4颗一包和7颗一包的两种.糖果不能拆包卖. 小朋友来买糖的时候,他就用这两种包装来组合.当然有些糖果数目是无法组合出来的,比如要买 10 颗糖. 你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17.大于17的任何数字都可以用4和7组合出来. 本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字. 输入格式 两个正整数,表示每种包