题目如下:
编写一个C程序,实现以下功能:
编写一个函数,该函数的能判断一个英文句子str中是否含有某个单词w,如“How old are you?”含有“old”。在main函数中输入一个英文句子,再输入一个单词,如果英文句子中含有那个单词,则输出“YES”,否则输出“NO”。
对题目的浅度分析:
1.解决该题需要解决的问题:
2.创建一个判断句子中是否存在指定单词的函数,并通过pd变量判断输出yes或者no
3.需要特殊处理的地方,开头的首字母要转为小写便于判断,其次最后一个单词需要特别注意,避免比较到两字符串的空字符,所以j应设置一个范围
对题目的深入解析及源代码如下:
#include <stdio.h>
#include <string.h>
void main()
{
char a[100];
char b[100];
int pd;
int cz(char m[],char n[]);
printf("输入一个句子:");
gets_s(a,100);//vs2019中gets已经无法使用但可以使用gets_s();
printf("输入你要查找的单词:");
gets_s(b, 100);
pd=cz(a,b);//通过判断变量来确定是否含有指定单词
if (pd == 1)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
int cz(char m[], char n[])
{
int i,l,l1,j;
_strlwr(m);//将开头大写字母,及一些大写的单词转化为小写,方便比较
l=strlen(m);
l1 = strlen(n);
int count,pd=0;
for (i = 0;i <= l- 1;i++)//以长句子作为外循环,从每个但词开始与指定
{// 单词首字母做比较
count = i;
j = 0;
while(m[count]==n[j]&&j<=l1-1)//如果首字母相同,则继续比较
{// 直到与指定单词比较完毕
count++;
j++;
}
if (j == l1)//如果j等于指定单词长度则所明,所比较字母都相同
{
pd = 1;
break;
}
}
return pd;//返回判断值
}
总结:
本文皆为原创,未经允许不得转载