鱼C论坛

 找回密码
 立即注册
查看: 1446|回复: 9

[已解决]天梯L1-070吃火锅

[复制链接]
发表于 2021-9-3 20:29:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
输入格式:
输入每行给出一句不超过 80 个字符的、以回车结尾的朋友信息,信息为非空字符串,仅包括字母、数字、空格、可见的半角标点符号。当读到某一行只有一个英文句点 . 时,输入结束,此行不算在朋友信息里。

输出格式:
首先在一行中输出朋友信息的总条数。然后对朋友的每一行信息,检查其中是否包含 chi1 huo3 guo1,并且统计这样厉害的信息有多少条。在第二行中首先输出第一次出现 chi1 huo3 guo1 的信息是第几条(从 1 开始计数),然后输出这类信息的总条数,其间以一个空格分隔。题目保证输出的所有数字不超过 100。

如果朋友从头到尾都没提 chi1 huo3 guo1 这个关键词,则在第二行输出一个表情 -_-#。

输入样例 1:
Hello!
are you there?
wantta chi1 huo3 guo1?
that's so li hai le
our story begins from chi1 huo3 guo1 le
.

输出样例 1:
5
3 2

输入样例 2:
Hello!
are you there?
wantta qi huo3 guo1 chi1huo3guo1?
that's so li hai le
our story begins from ci1 huo4 guo2 le
.

输出样例 2:
5
-_-#


                               
登录/注册后可看大图

我提交的代码:
#include<stdio.h>
#define SIZE 81
int main()
{
    char temp[SIZE] = "chi1 huo3 guo1";
    char ch;
    int count_message = 0,count_keyMessage = 0;
    int first_appearance = 0;//记录第一次出现关键句的位置
    int i;
    while((ch=getchar())!='.')
    {
        i = 1;
        if(ch=='c')//读到可能是吃火锅的字符
        {
            while(i<=13)//逐个字符与关键字符串进行比较
            {
                ch = getchar();
                if(ch != temp[i])
                    break;
                i++;
            }
            if(i>13)//说明与关键字符串一致
            {
                count_keyMessage++;
                if(!first_appearance)//说明第一次出现
                    first_appearance = count_message + 1;
            }
        }
        else if(ch=='\n')
            count_message++;
    }
    printf("%d\n",count_message);
    if(count_keyMessage)
        printf("%d %d\n",first_appearance,count_keyMessage);
    else
        printf("-_-#\n");
    return 0;
}
我想问一下这个哪里有问题,输出的结果和样例是一致的?
最佳答案
2021-9-4 05:45:34
本帖最后由 jhq999 于 2021-9-4 06:08 编辑

发代码是尽量用<>发,否则会丢代码
 if(ch != temp[i])
if(ch != temp[i])
[i]
是关键字“斜体”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-3 20:49:51 | 显示全部楼层
#define SIZE 81
int main()
{
    char temp[SIZE] = "chi1 huo3 guo1";
    char ch;
    int count_message = 0,count_keyMessage = 0;
    int first_appearance = 0;//记录第一次出现关键句的位置
    int i;
    while((ch=getchar())!='.')
    {
        i = 1;
        if(ch=='c')//读到可能是吃火锅的字符
        {
            while(i<=13)//逐个字符与关键字符串进行比较
            {
                ch = getchar();
                if(ch != temp[i])
                    break;
                i++;
            }
            if(i>13)//说明与关键字符串一致
            {
                count_keyMessage++;
                if(!first_appearance)//说明第一次出现
                    first_appearance = count_message + 1;
            }
        }
        else if(ch=='\n')
            count_message++;
    }
    printf("%d\n",count_message);
    if(count_keyMessage)
        printf("%d %d\n",first_appearance,count_keyMessage);
    else
        printf("-_-#\n");
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-3 23:20:05 | 显示全部楼层
if(ch != temp)是不是复制错了
应该是 if(ch != temp[i])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-4 05:45:34 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jhq999 于 2021-9-4 06:08 编辑

发代码是尽量用<>发,否则会丢代码
 if(ch != temp[i])
if(ch != temp[i])
[i]
是关键字“斜体”
无标题.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-4 09:35:15 | 显示全部楼层
lei1996 发表于 2021-9-3 23:20
if(ch != temp)是不是复制错了
应该是 if(ch != temp)

是的,复制错了,是temp[i]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-4 09:36:40 | 显示全部楼层
jhq999 发表于 2021-9-4 05:45
发代码是尽量用发,否则会丢代码

if(ch != temp)

好的,多谢提醒
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-4 09:39:12 | 显示全部楼层
我已经找到问题所在了,就是当输入
cchi1 huo3 guo1
.
就会有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-4 09:41:19 | 显示全部楼层
还有一个问题是当吃火锅出现在字符串末尾时,统计信息总数的变量会少统计一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 17:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表