L1-070 吃火锅(C语言)
L1-070 吃火锅(C语言)
题目描述:
以上图片来自微信朋友圈:这种天气你有什么破事打电话给我基本没用。但是如果你说“吃火锅”,那就厉害了,我们的故事就开始了。
本题要求你实现一个程序,自动检查你朋友给你发来的信息里有没有chi1 huo3 guo1
。
输入格式:
输入每行给出一句不超过 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
-_-#
解题思路
循环接收输入的每一条信息,直到遇见单独的
.
,输入结束。每接收一条信息,判断该字符串中是否存在chi1 huo3 guo1
这个字串,存在则修改相应的值,不存在则接收下一条信息。
易错分析
- 每一条信息接收一次,因为可能存在空格,因此不能使用
scanf()
函数接收,应使用gets()
函数 - 每一条信息只判断是否存在字串,不需要判断存在几个字串 (测试点 2)
- 单独的
.
是结束标志,但可能存在.
开头的信息,此时没有结束,仍需进行判断,并继续接收下一条信息 (测试点 3)
解题方法
本题重点就在字符串中查找子串的方法
方法一:
使用
strstr()
函数
char *p = strstr(t1,t2)
,若t2
是t1
的字串,返回值不为空,反之,返回值为空
用法举例:
char t1[] = "abcdefgh";
char t2[] = "def";
char *p = strstr(t1,t2);
//结果
p = "defgh"
---------------------------------------------------
char t1[] = "abcdefgh";
char t2[] = "xyz";
//结果
p = NULL
方法2:
使用
strncmp()
函数
strncmp(t1,t2,n)
,比较t1
和t2
的n个字符,若返回值为0,则两字符串的n个字符相同
【】注意,t1
和t2
代指字符串开始的位置,即
strncmp(t1,t2,n)
指的是t1
和t2
两个字符串从头开始比较n个字符
strncmp(&t1[3],&t2[5],4)
指的是t1[3]
开始的4个字符与t2[5]
开始的4个字符进行比较
题目代码
方法1和方法2取其一即可
#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main(void)
{char temp[81] = { 0 };char t[] = "chi1 huo3 guo1";int tiaoshu = 0; //朋友发来的信息条数int first = 0; //第一条出现的位置,为0则没有要的信息int cishu = 0; //吃火锅出现的总次数while (1){gets(temp);if ('.' == temp[0] && strlen(temp) == 1) //跳出循环的条件break;tiaoshu++;//方法1char* p = strstr(temp, t);if (p != NULL){if (0 == first)first = tiaoshu;cishu++;}//方法2//if (strlen(temp) >= 14)//{// for (int i = 0; i <= strlen(temp) - 14; i++)// {// if (0 == strncmp(&temp[i], t, 14))// {// if (0 == first)// first = tiaoshu;// cishu++;// break; //防止出现多次吃火锅的信息// }// }//}}//输出printf("%d\n", tiaoshu);if (0 == first)printf("-_-#");elseprintf("%d %d", first, cishu);return 0;
}
L1-070 吃火锅(C语言)相关推荐
- PTA 7-18 吃火锅c语言
以上图片来自微信朋友圈:这种天气你有什么破事打电话给我基本没用.但是如果你说"吃火锅",那就厉害了,我们的故事就开始了. 本题要求你实现一个程序,自动检查你朋友给你发来的信息里有没 ...
- C语言:L1-070 吃火锅 (15 分)
文章目录 一.题目 二.方法1 1.思路 2.代码 一.题目 以上图片来自微信朋友圈:这种天气你有什么破事打电话给我基本没用.但是如果你说"吃火锅",那就厉害了,我们的故事就开始了 ...
- pta——点赞,打印杨辉三角,吃火锅(c语言)
程序设计实训8月16日小组编程 今日碎碎念:今天稀里糊涂地在规定时间内倒是都做出来了,但是还有些问题没有想明白再回顾一下.(大佬都在自己的博客上写学习笔记,我只能用用CSDN了唔) 7-1 点赞 微博 ...
- pta 吃火锅(C语言实现)
题目描述 微信朋友圈:这种天气你有什么破事打电话给我基本没用.但是如果你说"吃火锅",那就厉害了,我们的故事就开始了. 本题要求你实现一个程序,自动检查你朋友给你发来的信息里有没有 ...
- 用腾讯优图AI视觉模组在树莓派上玩吃火锅体感游戏
今年上半年,由于疫情原因,Switch 大火,Switch 平台上有许多款体感游戏,比如:健 身环大冒险.马力欧赛车.舞力全开.这些游戏凭着"硬核健身"的标签吸引了大量玩家, 通过 ...
- L1-6 吃火锅 (15分)
L1-6 吃火锅 (15分) 以上图片来自微信朋友圈:这种天气你有什么破事打电话给我基本没用.但是如果你说"吃火锅",那就厉害了,我们的故事就开始了. 本题要求你实现一个程序,自动 ...
- 吃火锅有四忌[转载]
一忌吃的时间太长 有的人,一吃就是数小时之久,甚至通宵达旦.这样会使胃液.胆汁.胰液等消化液不停地分泌,腺体得不到正常休息,导致胃肠功能紊乱,发生腹痛.腹泻,严重的可患慢性胃肠炎.胰腺炎等. 二忌吃得 ...
- 上海女白领吃火锅碰瓷,支付宝口碑居然真的要赔?
昨天中午,新闻晨报在微博上发出一条新闻:上海一位汪小姐吃火锅的时候,因用支付宝口碑扫码中了一个999元大红包,结果因为太激动手机不小心掉进油汤里,捞出来以后开不了机了.关键是这位小姐觉得这是口碑和商家 ...
- 7-110 吃火锅 (15 分)
7-110 吃火锅 (15 分) 以上图片来自微信朋友圈:这种天气你有什么破事打电话给我基本没用.但是如果你说"吃火锅",那就厉害了,我们的故事就开始了. 本题要求你实现一个程序, ...
最新文章
- mysql 分表后如何扩展_mysql扩展至分库分表
- 【完结】给新手的12大深度学习开源框架快速入门项目
- 三组关键词,拆解2021年赤子城的中期业绩报告
- vue项目,webpack中配置src路径别名及使用
- mysql 聚合函数求积_Oracle聚合求和和聚合求积(顺便解决BOM展开的问题)
- 希尔排序是一种稳定的排序算法_十大经典排序算法——希尔排序
- 使用Redis和Apache Kafka处理时间序列数据
- C#:设置CefSharp的一些参数,比如忽略安全证书
- Endurance for Mac(电池续航管理提升工具)
- 机器学习发展历史回顾
- 企业级多用户发卡平台源码PHP
- 为什么canvas画的是正方形是长方形
- wps居中对齐不在中间_wps怎么把字水平居中对齐
- springboot-全局异常处理器
- 大屏自适应文章收藏分享
- Python数据分析实例,利用Pandas建立流域三层蒸发和蓄满产流模型
- python实现kd树以及最近邻查找算法
- 将页面中的指定 div 下载为图片
- 字体文件检查工具Webfont Generator
- 一款FPGA时序电路数据画图软件