统计不同的单词个数。

Problem Description

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

Input

有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。

Output

每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。

Sample Input

you are my friend

#

Sample Output

4

先上个代码吧。马上断网了。

#include <stdio.h>
#include <string.h>
int main()
{
    char s[1000][1000];
	char a[1000];
	int i,l,j,k,sum,p,wbx;
	while(gets(a) &&a[0]!='#')
	{
		memset(s,'\0',sizeof(s));
		l=strlen(a);
		k=p=sum=0;
		int sum1=0;
		for(i=0;i<l;i++)
		{
			if(a[i]==' ')
			{
				if(a[i+1]==' ')
					continue;
				else if(a[i+1]=='\0')
					break;
				else
				{
					p=0;
					k++;
				}

			}
			else
			{
				s[k][p]=a[i];
				p++;
				sum1=1;
			}
		}
		for(i=0;i<k;i++)
		{
			wbx=1;
			for(j=i+1;j<=k;j++)
			{
				if(strcmp(s[i],s[j])==0)
				{
					wbx=0;
					break;
				}
			}
			if(wbx)
				sum++;
		}
		printf("%d\n",sum1?sum+1:sum);
	}
	return 0;
}
时间: 2024-10-09 18:31:50

统计不同的单词个数。的相关文章

C 循环统计输入的单词个数和字符长度

#include <stdio.h> #include <Windows.h> int main(void) { char word[128]; int count = 0; int length = 0; printf("请输入任意多个单词:\n"); while (1) { if (scanf("%s",word) != -1) { count++; length += strlen(word); } else { break; } }

【C语言】输入一个字符串,统计其中的单词个数,将第一个单词的首字母改为大写,并输出改写后的字符串

#include<stdio.h> int main() { char a[100]; int i, j=1; printf("请输入一串字符:"); gets_s(a); for (i = 0; a[i] != '\0'; i++)/*找出单词个数*/ { if (a[i] == ' ') j += 1; } printf("单词个数:%d\n", j); if (a[0] >= 'a' && a[0] <= 'z')/*判

1219: 统计字符串的单词个数

题目描述 输入一行字符,统计并输出其中有多少个单词,单词之间用空格分隔. 输入 只有一行,保证只包含可见字符,且此行的所有字符数不超过100. 输出 一个整数,表示输入的一行字符中共有多少个单词.请注意行尾输出换行. 样例输入 I am a program. 样例输出 4 1 #include<iostream> 2 #include<cstdio> 3 #include<string.h> 4 using namespace std; 5 int main(){ 6

统计文件中单词个数

import sys import string #import collections if len(sys.argv) == 1 or sys.argv[1] in {"-h", "--help"}: print("usage: uniqueword filename_1 filename_2 ... filename_n") sys.exit() else: words = {} # words = collections.defaultd

统计单词个数

驱动开发的第六章让我了解了统计单词个数的Linux驱动程序开发和测试的完整过程. Linux系统将每一个驱动都映射成一个文件,这些文件被称为设备文件或驱动文件,都保存在/dev目录中.由于大多数Linux驱动都有与其对应的设备文件,因此与Linux驱动交换数据就变成了与设备文件交换数据. 编写Linux驱动程序的步骤:第一步,建立Linux驱动骨架(装载和卸载Linux驱动):第二步,注册和注销设备文件:第三步,指定与驱动相关的信息:第四步,指定回调函数:第五步,编写业务逻辑:第六步,编写mak

NOIP2001 统计单词个数

题三 统计单词个数(30分) 问题描述 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个).要求将此字母串分成k份(1<k<=40),且每份中包含的单词个数加起来总数最大(每份中包含的单词可以部分重叠.当选用一个单词之后,其第一个字母不能再用.例如字符串this中可包含this和is,选用this之后就不能包含th). 单词在给出的一个不超过6个单词的字典中. 要求输出最大的个数. 输入格式 去部输入数据放在文本文件input

统计字符串中单词的个数

1.单纯统计单词个数,单词与单词之间只考虑空格的情况 // word_statistic.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include <string> using namespace std; #define M 10000 #define N 20 int _tmain(int argc, _TCHAR* argv[]) { char str1[M]={0};

codevs 1040 统计单词个数

1040 统计单词个数 2001年NOIP全国联赛提高组  题目等级 : 黄金 Gold 题目描述 Description 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个).要求将此字母串分成k份(1<k<=40),且每份中包含的单词个数加起来总数最大(每份中包含的单词可以部分重叠.当选用一个单词之后,其第一个字母不能再用.例如字符串this中可包含this和is,选用this之后就不能包含th)(管理员注:这里的不能再用指

第六章第一个Linux驱动程序:统计单词个数

第六章介绍如何在多种平台,使用多种方法测试Linux驱动. 本章主讲统计单词个数的算法的实现技术:Linux驱动.统计单词个数的功能是封装在Linux驱动中的.驱动不一定是直接和硬件打交道的,还可以喝普通的library一样提供其他程序的调用来实现特定功能的. 第一节Linux驱动到底是个什么东西 Linux驱动和普通的Linux API没有本质上的区别,只是使用Linux驱动的方式和使用Linux API的方法不同. Linux系统将每一个驱动都映射成一个文件,这些文件称为设备文件或驱动文件,