m0_74153183 2022-10-25 23:44 采纳率: 95.5%
浏览 277
已结题

给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。

问题遇到的现象和发生背景

(为什么我的代码有错误)一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。

现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例 1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例 2)。
输入格式
共 22 行。

第 11 行为一个字符串,其中只含字母,表示给定单词;

第 22 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。

输出格式
一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从 00 开始);如果单词在文章中没有出现,则直接输出一个整数 -1−1。

img

用代码块功能插入代码,请勿粘贴截图
#include<stdio.h>
#include<string.h>
int main()
{
    char a[1000], b[1000];
    int count1[100];
    int k=0;
    gets(a);
    gets(b);
    int len1 = strlen(a);
    int len2 = strlen(b);
    for (int i = 0; i < len1; i++)
    {
        if (a[0] == b[i])
        {
            int flag=1;
            for (int j = 0; j < len1; j++)
            {
                if (a[j] != b[i + j])
                {
                    flag=0;
                    break;
                }
            }
            if (flag)
            {
                count1[k] = i;
                k++;
                continue;
            }
        }
    }
    if (k > 0)
    {
        printf("%d ", k);
        printf("%d\n", count1[0]);
    }
    else
        printf("-1\n");
    return 0;
}

运行结果及报错内容

原本的正确运行结果应该是这样的

img


但是我的运行结果是这样的

img

  • 写回答

1条回答 默认 最新

  • X-道至简 2022-10-26 06:43
    关注

    第一个for循环 i<len1 改成<len2 还有没有处理大小写字母转换

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月4日
  • 已采纳回答 10月27日
  • 创建了问题 10月25日

悬赏问题

  • ¥50 adb连接不到手机是怎么回事?
  • ¥15 vs2022无法联网
  • ¥15 TCP的客户端和服务器的互联
  • ¥15 VB.NET操作免驱摄像头
  • ¥15 笔记本上移动热点开关状态查询
  • ¥85 类鸟群Boids——仿真鸟群避障的相关问题
  • ¥15 CFEDEM自带算例错误,如何解决?
  • ¥15 有没有会使用flac3d软件的家人
  • ¥20 360摄像头无法解绑使用,请教解绑当前账号绑定问题,
  • ¥15 docker实践项目