字数

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 29470    Accepted Submission(s): 7081

Problem Description
lily的好朋友xiaoou333近期非常空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。以下你的任务是帮助xiaoou333解决问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成。没有标点符号,遇到#时表示输入结束。
Output
每组仅仅输出一个整数,其单独成行。该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend #
Sample Output
4
总会有一种适合你。。。

//*************Set****************/
#include<iostream>
#include<sstream>
#include<string>
#include<set>
using namespace std;
int main()
{string line,word;set <string> list;while(getline(cin,line)&&line!="#"){list.clear();istringstream stream(line);while(stream>>word){if(list.end()==list.find(word))list.insert(word);}cout<<list.size()<<endl;}return 0;
} 
//************fopen文件*******************/
#include<stdio.h>
#include<string.h>
#define N 10000
char  article[N],tmp[101],word[N][101];
int main()
{int len,pos,k,cnt;freopen("hdu_2072_in.txt","r",stdin);freopen("hdu_2072_out.txt","w",stdout);while(gets(article)!=NULL){if(article[0]=='#') break;cnt=0;len=strlen(article);pos=0;while(pos<len){sscanf(article+pos,"%s",tmp);for(k=0;k<cnt;k++)if( strcmp(word[k],tmp)==0) break;if( k==cnt )  strcpy(word[cnt++],tmp); pos += strlen(tmp) + 1;}printf("%d/n",cnt);}return 0;
}
//************SSSSSSScanf*******//
HDOJ——2072单词数
SSCANF使用方法:(继qsort,bsearch,strchr后发现的又一好使的函数)
sscanf与scanf相似,都是用于输入的。仅仅是后者以键盘(stdin)为输入源。前者以固定字符串为输入源。

样例: 1. 常见使用方法。

char buf[512] ; sscanf("123456 ", "%s", buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中。 printf("%s\n", buf); 结果为:123456 2. 取指定长度的字符串。如在下例中。取最大长度为4字节的字符串。 sscanf("123456 ", "%4s", buf); printf("%s\n", buf); 结果为:1234 3. 取到指定字符为止的字符串。

如在下例中,取遇到空格为止字符串。

sscanf("123456 abcdedf", "%[^ ]", buf); printf("%s\n", buf); 结果为:123456 4. 取仅包括指定字符集的字符串。如在下例中,取仅包括1到9和小写字母的字符串。

sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf); printf("%s\n", buf); 结果为:123456abcdedf 当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf); printf("%s\n",buf); 结果为:123456 5. 取到指定字符集为止的字符串。如在下例中。取遇到大写字母为止的字符串。

sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf); printf("%s\n", buf); 结果为:123456abcdedf 6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,先将 "iios/"过滤掉。再将非'@'的一串内容送到buf中 sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf); printf("%s\n", buf); 结果为:12DDWDFF 7、给定一个字符串“hello, world”,仅保留world。(注意:“,”之后有一空格) sscanf(“hello, world”, "%*s%s", buf); printf("%s\n", buf); 结果为:world %*s表示第一个匹配到的%s被过滤掉。即hello被过滤了 假设没有空格则结果为NULL。

#include <stdio.h>
#include <string.h>
#include <math.h>
char word[1000];
char arr[100][100];  //arr用于存储曾经出现过的单词
int main()
{int len, pos;char temp[100];while(gets(word) && strcmp(word, "#") != 0)//题目要求不是文章结尾为,注意strcmp用比較用“#”{len = strlen(word);//总长度(包括空格)pos = 0;int cnt = 0;// pos加单词长度一直到>lenwhile(pos <= len){sscanf(word + pos, "%s", temp); //把一个单词存入temp,空格省去(sscanf应该是读到空格截止,对于sscanf,空格非常重要)//word + pos为指针指向位置//printf("%s++++++++++++++++++++\n",temp);int k;for(k = 0; k < cnt; ++k)if(strcmp(temp, arr[k]) == 0)   //假设和曾经存入的单词同样,则不计数break;if(k == cnt)strcpy(arr[cnt++], temp);   //把temp存入arr,并计数器cnt加一pos += strlen(temp) + 1;// +1表示加上空格,最后一次pos肯定会大于len}printf("%d\n", cnt);}return 0;
}

版权声明:本文博主原创文章,我们随意转载!好东西要大家一起分享嘛!

哈哈哈!。

转载于:https://www.cnblogs.com/hrhguanli/p/4835742.html

HDoj-2072-字数相关推荐

  1. 杭电oj HDOJ 2072 单词数

    杭电oj HDOJ 2072 单词数 Problem Description lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是 ...

  2. hdoj.1735 字数统计 20140811

    字数统计 Time Limit: 1000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  3. HDOJ 2072 单词数

    Problem Description lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是帮助xiaoou333解决这个问题. ...

  4. 【渝粤题库】国家开放大学2021春2072人文社会科学基础(A)答案

    试卷代号:2072 2 0 2 1年春季学期期末统一考试 人文社会科学基础(A) 试题答案及评分标准(开卷) (供参考) 2021年7月 一.名词解释(共3道题,每题10分,共30分) 1.答案要点: ...

  5. span 可编辑 控制数量_CSS如何限制显示的文本字数

    展开全部 " css控制字数 .dd { border: solid 1px gray; width:180px; overflow: hidden; text-overflow: elli ...

  6. 并查集 HDOJ 1232 畅通工程

    题目传送门 1 /* 2 并查集(Union-Find)裸题 3 并查集三个函数:初始化Init,寻找根节点Find,连通Union 4 考察:连通边数问题 5 */ 6 #include <c ...

  7. textarea输入框限制字数(JS)

    第一种: <textarea οnkeyup="checkLen(this)"></textarea> <div>您还可以输入 <span ...

  8. adobe怎么统计字数_本科毕业论文怎么写(正文写作要点精华)

    毕业论文的写作过程包括,选题.找资料.做开题.列提纲.写正文.修改定稿等环节.要想知道本科毕业论文怎么写,我们就需要分别从这几个方面进行全面了解,由于,本栏目其他文章已经对论文选题.开题报告.论文提纲 ...

  9. 杭电oj2072c语言,杭电acm 2072(单词数)

      #include//此种解法dsds# dsds是可以输入的,但是HDOJ也通过了.下面的解法解决了此问题. #include #include using namespace std; int ...

最新文章

  1. macbook 分屏软件
  2. mysql php commit_php mysqli_autocommit()使用实例
  3. java怎么防止表单重复提交_如何防止表单重复提交
  4. 怎样用c语言写超市管理程序,C语言超市收银管理系统实现程序.doc
  5. Java--任务定时调度
  6. 新版 Windows 10 最佳功能预览,五月即将更新
  7. 基于用户长短期表示的新闻推荐
  8. 如果mysql磁盘满了,会发生什么?还真被我遇到了~
  9. Ubuntu使用systemd设置开机自启动
  10. 微型计算机偏移地址,请高手讲解一下在微机原理里面,偏移地址,段地址,实体地址之间的关系!配合图解更好,谢谢!...
  11. Python 获取LOL所有英雄的传说
  12. 画计算机乐谱,邓紫棋《画》简谱
  13. Unity3D优化:分场景烘焙,综合场景加载
  14. 机器学习实战-54: 集成学习分类算法(ada-boost)
  15. 【“玩物立志”scratch少儿编程】坦克动荡-“穿墙控制”和“子弹反弹”的实现-含完整代码
  16. 计算机的USB接口可以扩展吗,电脑的USB接口不够用怎么办?别急,我来支招!
  17. 参考文献里的各个字母含义
  18. 人工智能笔记 2.1人工智能导论- 1.什么是AI,深度优先,广度优先,最优路径
  19. STM32MP157驱动开发——4G通信模块驱动
  20. 人工智能 Java 坦克机器人系列: 神经网络,下部

热门文章

  1. secureCRT FX 8.0 下载地址
  2. C++ string 字符串删除指定字符
  3. wordpress谷歌字体_如何为您的WordPress网站设置Google Analytics(分析)目标
  4. 手变小是怎么回事_怎么让手指变细变长 9个小习惯轻松帮你解决
  5. 关于请求2min中后会失败(failed)
  6. 五分钟彻底理解Java Proxy原理
  7. python领域的名人_计算任意视频中各人物的出镜时间(附Python实现)
  8. 基于OpenCV+WinForm开发的图形图像渲染控件
  9. 类C语言--树习题:判别两棵树是否相等。
  10. Vue 解决 Warning: [antdv: LocaleProvider] `LocaleProvider` is deprecated. Please use `locale` .....