L1——070吃火锅
输入格式:
输入每行给出一句不超过 80 个字符的、以回车结尾的朋友信息,信息为非空字符串,仅包括字母、数字、空格、可见的半角标点符号。当读到某一行只有一个英文句点 .
时,输入结束,此行不算在朋友信息里。
输出格式:
首先在一行中输出朋友信息的总条数。然后对朋友的每一行信息,检查其中是否包含 chi1 huo3 guo1
,并且统计这样厉害的信息有多少条。在第二行中首先输出第一次出现 chi1 huo3 guo1
的信息是第几条(从 1 开始计数),然后输出这类信息的总条数,其间以一个空格分隔。题目保证输出的所有数字不超过 100。
如果朋友从头到尾都没提 chi1 huo3 guo1
这个关键词,则在第二行输出一个表情 -_-#
。
#include<stdio.h> // 包含标准输入输出库 #include<string.h> // 包含字符串处理函数库 char str[81]; // 定义一个字符数组str,用于存储输入的字符串,最大长度为80(留一个位置给字符串结束符'\0') int first_index = -1; // 记录第一个符合条件的字符串的索引,初始值为-1表示未找到 int s_count = 0; // 记录总输入字符串的个数 int t_count = 0; // 记录符合条件的字符串的个数 int main() { while(1){ // 无限循环,直到用户输入"."结束 gets(str); // 从标准输入读取一行字符串,存储到str中(注意:gets函数不安全,可能导致缓冲区溢出,建议使用fgets替代) if(strcmp(".",str)==0) break; // 如果输入的字符串是".",则退出循环 s_count++; // 每输入一个字符串,总输入计数加1 char * p = strstr(str,"chi1 huo3 guo1"); // 在字符串str中查找子串"chi1 huo3 guo1",返回指向子串的指针,如果未找到返回NULL if(p != NULL){ // 如果找到了子串 if(first_index<0) first_index = s_count; // 如果first_index还未被赋值,则记录当前字符串的索引 t_count++; // 符合条件的字符串计数加1 } } printf("%d\n",s_count); // 输出总输入字符串的个数 if(t_count==0) printf("-_-#"); // 如果没有符合条件的字符串,输出"-_-#" else printf("%d %d\n",first_index,t_count); // 否则输出第一个符合条件的字符串的索引和总符合条件的字符串个数 return 0; // 程序正常结束 }
strstr
函数的功能
strstr
是C标准库中的一个字符串处理函数,定义在 <string.h>
头文件中。它的功能是在一个字符串中查找子串。
- 函数原型:c复制haystack:被搜索的字符串(通常是较长的字符串)。needle:要查找的子串。
- 返回值:如果找到子串,返回指向子串在 haystack 中首次出现位置的指针。如果未找到子串,返回 NULL。