weixin: [图片] weixin: 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例 1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例 2)。 输入格式 共 2行。 第 1 行为一个字符串,其中只含字母,表示给定单词; 第 2 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。 输出格式 一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从 0 开始);如果单词在文章中没有出现,则直接输出一个整数 -1用C语言编写。
时间: 2023-02-19 19:03:34 浏览: 170
可以使用以下 C 语言代码来实现这个功能:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
char word[100]; // 给定单词
char article[1000]; // 给定文章
int count = 0; // 单词出现的次数
int position = -1; // 第一次出现的位置
// 读入给定单词和文章
scanf("%s", word);
getchar(); // 读入空格
fgets(article, 1000, stdin);
// 将单词转化为小写
for (int i = 0; i < strlen(word); i++)
word[i] = tolower(word[i]);
// 将文章转化为小写
for (int i = 0; i < strlen(article); i++)
article[i] = tolower(article[i]);
// 在文章中查找单词
char *p = article;
while ((p = strstr(p, word)) != NULL)
{
// 如果单词前面或后面是空格,则统计单词出现的次数和第一次出现的位置
if ((p == article || *(p - 1) == ' ') && (*(p + strlen(word)) == ' ' || *(p + strlen(word)) == '\n' || *(p + strlen(word)) == '\0'))
{
count++;
if (position == -1)
position = p - article;
}
p++;
}
// 输出单词出现的次数和第一次出现的位置
if (count > 0)
printf("%d %d\n", count, position);
else
printf("-1\n");
return 0;
}
上面的代码使用了 strstr 函数来在文章中查找单词,并使用 tolower 函数将单词和文章转化为小写。然后,使用一个循环来遍历文章中的每一个单词,并检
阅读全文
相关推荐



















