学习工控知识,就来工控小新
农历腊月初八/1/18
往期推荐
年1月15日,每日一分钟学习C语言,学习路上不能停
年1月14日,每日一分钟学习C语言,学习路上不能停
每日一练
/DailyExercises
字符串匹配
输入两个字符串s1和s2,在s1中查找s2对应的字符串是否存在,若存在则输出它第一次出现的位置;若不存在,则输出“没有找到该字符串”。
题目分析
这个C语言题目是一个关于字符串匹配的问题,也就是说,要在一个长字符串s1中找到一个短字符串s2是否存在,以及它的位置。这个问题有很多种解决方法,但是最简单和最常用的一种是暴力匹配法,也叫朴素匹配法。这种方法的思路是,从s1的第一个字符开始,依次和s2的每个字符进行比较,如果都相同,就说明找到了s2,输出它的位置;如果有不同的,就把s1的指针后移一位,再和s2进行比较,直到s1的末尾或者找到s2为止。这种方法的优点是简单易懂,不需要额外的空间,缺点是效率较低,时间复杂度是O(n*m),其中n是s1的长度,m是s2的长度。
为了让你更好地理解这个方法,我用C语言写了一个程序,你可以在VC6.0的环境下运行和调试它。这个程序包含了两个头文件,分别是stdio.h和string.h,用于输入输出和字符串操作。主程序中定义了两个字符串s1和s2,用scanf函数从键盘输入它们的值,然后调用一个自定义的函数match,用于实现暴力匹配法。这个函数的参数是两个字符串指针,返回值是一个整数,表示s2在s1中的位置,如果不存在,就返回-1。
程序展示
函数的具体实现如下:
主程序中,调用这个函数后,根据返回值判断s2是否存在于s1中,如果存在,就输出它的位置,如果不存在,就输出“没有找到该字符串”。程序的完整代码如下:
程序测试
运行上述代码,在VC6.0的环境下,可以得到如下的输出:
这与题目给出的结果一致,说明我们的算法是正确的。
源代码获取
下期题目
解数独编写一个程序,通过填充空格来解决数独问题。数独的解法需遵循如下规则:1.数字1-9在每一行只能出现一次。2.数字1-9在每一列只能出现一次。3.数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用.表示。
#新春年货不打烊#