题目描述 Description
  一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。 
  现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章
  中的某一独立单词在不区分大小写的情况下完全相同(参见样例1 ),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2 )。
 输入输出格式 Input/output
输入格式:
  输入文件名为stat.in ,2 行。 
  第1 行为一个字符串,其中只含字母,表示给定单词; 
  第2 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。
输出格式:
  输出文件名为stat.out 。 
  只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从 0 开始);如果单词在文章中没有出现,则直接输出一个整数-1。
 输入输出样例 Sample input/output
样例测试点#1
输入样例:

【输入样例1】
To
to be or not to be is a question
【输入样例2】
to
Did the Ottoman Empire lose its power at that time

输出样例:

【输出样例1】
2 0
【输出样例2】
-1

说明 description
数据范围
1≤ 单词长度≤10。 
1≤ 文章长度≤1,000,000。 
noip2011普及组第2题
思路:循环至末尾,遇到空格,判断空格前的单词是否与要找的单词相符,是的话输出位置,否则没找到,输出-1。
代码①如下(本代码来自我的老师:http://www.cnblogs.com/huashanqingzhu/p/4051137.html):
 #include<stdio.h>
#include<string.h>
int main()
{
char s1[],s2[];
int f1;
long first=-,num=;//first:首次出现的下标。num:总共出现的次数
char ch;
int i;
int index=-;//表示当前扫描文章的下标
scanf("%s",s1);
getchar();//吸收回车符
for(i=;s1[i]!='\0';i++)
{
if(s1[i]>='A'&&s1[i]<='Z')//若是大写字母,则变为小写字母
s1[i]=s1[i]+;
}
f1=;//尚未开始输入文章当中的新单词
i=;//从文章输入的字符保存在s2数组当中的下标
while((ch=getchar())!=EOF)//没到结束
{
index++;
if(ch==' ')//空格
{
if(f1==)
{
continue;//跳出循环
}
else
{
s2[i]='\0';//给这里表上末尾
if(strcmp(s1,s2)==)//如果两个一样大
{
if(first==-)
first=index-strlen(s2);
num++;//出现过,num++
}
i=;
f1=;
}
}
else
{
f1=;
if(ch>='A'&&ch<='Z') ch=ch+;
s2[i]=ch;
i++;
}
}
if(num>)//出现过
printf("%d %d\n",num,first);
else printf("-1\n");//没出现过
return ;
}

代码②如下:

 #include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
int i,j,t=,tt=;
char s[],ss[];//文章,单词
freopen("stat.in","r",stdin);
freopen("stat.out","w",stdout);
gets(ss);
gets(s);
for(i=;i<=(strlen(s)-strlen(ss));i++)
{
for(j=;j<=strlen(ss)-;j++)
{
if(toupper(s[j+i])!=toupper(ss[j])) break;//不是一样的,game over!!
if(i>&&s[i-]!=' ') break;//一样的,但后面是空格,不一样,game over!!
}
if(j==strlen(ss)&&(s[j+i]==' '||j+i==strlen(s)))//找到了耶,记录之
{
t++;
if(t==)
{
tt=i;
}
}
}
if(t==) printf("-1\n");//没找到,输出-1
else printf("%d %d\n",t,tt);//找到了,输出单词位置
return ;
}
 

NOIP2011-普及组复赛-第二题-统计单词数的更多相关文章

  1. NOIP2005-普及组复赛-第二题-校门外的树

    题目描述 Description 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0 ...

  2. NOIP2014-普及组复赛-第二题-比例简化

    题目描述 Description 在社交媒体上,经常会看到针对某一个观点同意与否的民意调查以及结果.例如,对某一观点表示支持的有1498 人,反对的有 902人,那么赞同与反对的比例可以简单的记为14 ...

  3. NOIP2010-普及组复赛-第二题-接水问题

    题目描述 Description 学校里有一个水房,水房里一共装有 m 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为 1.  现在有 n 名同学准备接水,他们的初始接水顺序已经确定.将这些 ...

  4. NOIP2012-普及组复赛-第二题-寻宝

    题目描述 Description 传说很遥远的藏宝楼顶层藏着诱人的宝藏.小明历尽千辛万苦终于找到传说中的这个藏宝楼,藏宝楼的门口竖着一个木板,上面写有几个大字:寻宝说明书.说明书的内容如下:藏宝楼共有 ...

  5. NOIP2001-普及组复赛-第二题-最大公约数和最小公倍数问题

    题目描述 Description 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数条件:  1.P,A是正整数 ...

  6. 【单调队列】Vijos P1771 瑞士轮 (NOIP2011普及组第三题)

    题目链接: https://vijos.org/p/1771 题目大意: 给定2N个人(N<=100 000)和其初始分数.能力值(能力两两不同),比赛M次(M<=50),每次PK都是按分 ...

  7. NOIP2002-普及组复赛-第二题-级数求和

    题目描述 Description 已知:Sn= 1+1/2+1/3+…+1/n.显然对于任意一个整数K,当n足够大的时候,Sn大于K. 现给出一个整数K(1<=k<=15),要求计算出一个 ...

  8. NOIP2011 普及组 T3 洛谷P1309 瑞士轮

    今天题做太少,放道小题凑数233 题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公 ...

  9. 洛谷 P1308 统计单词数【string类及其函数应用/STL】

    题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给 ...

随机推荐

  1. C++的第一天

    第一次写博客,第一天的C++,从第一讲视屏中了解到了,类,对象,oop编程思想 1.类包括对象和对象的行为,对象具有静态连接(对象的名字)和动态链接(对象的行为),视屏中提到了多态性,应该是不同的类具 ...

  2. CodeForces 709C Letters Cyclic Shift

    贪心. 肯定是两个$a$之间的那些字符都$-1$,没有$a$就全部$-1$.如果输入的串全是$a$,那么把最后一个$a$改成$z$. #pragma comment(linker, "/ST ...

  3. LoadRunner日志(归档记录,以便自己查阅)

    1.当设置迭代次数大于1时,回放从第二次迭代开始发生错误 这种现象多是由于在"Run-time Setting"的"Browse Emulation"的设置中, ...

  4. ueditor1.4.3 在IE8下的 BUG

    ueditor1.4.3  .net 版 在IE8 下,多图片上传完成后,点击确认时报错,无法插入图片到编辑器中 原因是 ueditor.all.js 中的 24835 行 if (whitList[ ...

  5. linux 通过pid寻找程序路径的最简单命令

    在linux实际操作命令中,查看pid的方式有很多种,通过pid找程序路径的方式也有好几个,但是可能大家都忽略的一个很简单也是很实用的命令:pwdx. 比如要查找某个java编写的程序运行情况可通过j ...

  6. 字符串ID转换成字符串名字

    select  U.CnName+','  from f_splitstr('1828,1055333,1,1035681,752,494,22549,219,23860,478,23453,677, ...

  7. cuckoo相关

    Q1:pefile is out of date 现象:ERROR: Your version of pefile is out of date.  Please update to the late ...

  8. linux强制svn提交时必须写注释

    打开hooks,然后将pre-commit.tmpl修改为pre-commit,打开pre-commit,写入如下代码: #!/bin/sh REPOS="$1" TXN=&quo ...

  9. DEV TdxLayoutGroup设置tab

    TdxLayoutGroup 属性的 LayoutDirection :ldvertical,ldtabbed(显示tab页),ldhorizontal

  10. redo log

    1.redo log相关数据字典 v$log:display the redo log file information from the control file v$logfile:identif ...