实现一个字符串中单词个数的统计,并按照单词字典序输出单词以及单词的出现个数。使用strsep
2014-05-30 15:00
801 查看
请你实现一个字符串中单词个数的统计,并按照单词字典序输出单词以及单词的出现个数。Hint:a.不考虑标点符号.b.如果有单词是大写将单词转换为小写统计c.句子中除了单词全部都是空格,没有其他特殊字符。
Input:”I love you do you love me”
Output:
do 1
I 1
love 2
me 1
you 2
#include<stdio.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX 100
struct WORD
{
char str[40];
int num;
}words[MAX];
//linux 下没有该函数,大写字母转为小写字母
char *myStrlwr( char *s)
{
char *str=s;
while(*str!='\0')
{
if(*str>='A' && *str <='Z')
*str=*str+32;
str++;
}
return s;
}
//统计字符串出现的次数
int statistics(char * source,struct WORD words[])
{
char *p[MAX];
int in=0;
while( (p[in]=strsep(&source, " ")) !=NULL)
{
in++;
}
int i,j;
int count=0; //统计当前的单词数
for(i=0; i < in ; i++)
{
for(j=0; j < count ;j++)
{
if( strcmp(p[i] , words[j].str)==0)
{
words[j].num++;
break;
}
}
if(j==count)
{
strncpy(words[count].str, p[i], 40);
words[count].num++;
count++;
}
}
return count;
}
int cmp(const void *a,const void *b)
{
return strcmp( (*(struct WORD*)a).str, (*(struct WORD *) b).str);
}
//对字符串按字典序排序
void sort(struct WORD words[],int len)
{
qsort(words,len,sizeof(struct WORD),cmp);
}
//显示
void print(struct WORD words[],int len)
{
int i;
for(i=0;i<len;i++)
printf("%s\t%d\n",words[i].str,words[i].num);
printf("\n");
}
int main()
{
char str[100]="I love you do you love me";
printf("输入字符串为:");
printf("%s\n", str);
char *lowercase = myStrlwr(str);//将字符串转换成小写形式
int len = statistics(lowercase,words);
printf("字符串中的单词个数: %d\n",len);
sort(words,len);
print(words,len);
return 0;
}
Input:”I love you do you love me”
Output:
do 1
I 1
love 2
me 1
you 2
#include<stdio.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX 100
struct WORD
{
char str[40];
int num;
}words[MAX];
//linux 下没有该函数,大写字母转为小写字母
char *myStrlwr( char *s)
{
char *str=s;
while(*str!='\0')
{
if(*str>='A' && *str <='Z')
*str=*str+32;
str++;
}
return s;
}
//统计字符串出现的次数
int statistics(char * source,struct WORD words[])
{
char *p[MAX];
int in=0;
while( (p[in]=strsep(&source, " ")) !=NULL)
{
in++;
}
int i,j;
int count=0; //统计当前的单词数
for(i=0; i < in ; i++)
{
for(j=0; j < count ;j++)
{
if( strcmp(p[i] , words[j].str)==0)
{
words[j].num++;
break;
}
}
if(j==count)
{
strncpy(words[count].str, p[i], 40);
words[count].num++;
count++;
}
}
return count;
}
int cmp(const void *a,const void *b)
{
return strcmp( (*(struct WORD*)a).str, (*(struct WORD *) b).str);
}
//对字符串按字典序排序
void sort(struct WORD words[],int len)
{
qsort(words,len,sizeof(struct WORD),cmp);
}
//显示
void print(struct WORD words[],int len)
{
int i;
for(i=0;i<len;i++)
printf("%s\t%d\n",words[i].str,words[i].num);
printf("\n");
}
int main()
{
char str[100]="I love you do you love me";
printf("输入字符串为:");
printf("%s\n", str);
char *lowercase = myStrlwr(str);//将字符串转换成小写形式
int len = statistics(lowercase,words);
printf("字符串中的单词个数: %d\n",len);
sort(words,len);
print(words,len);
return 0;
}
相关文章推荐
- 实现一个控制台程序,给定一段英文字符串,统计其中各个英文单词(4字符以上含4字符)的出现频率。
- Java实现 统计单词出现的次数并按照单词频率从高到低输出
- 将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:
- 每天一个小程序之python实现统计英文单词出现个数
- 编写一函数,由实参数来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述的结果
- 编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。
- 编写一个程序统计输入字符串中:各个数字,空白字符,以及其他所有字符常出现的次数。
- java一个算法题:输出一个字符串中出现次数最多的字符,以及次数
- 一个字符串中出现次数最多的单词 java语言实现
- 编写一个函数,由实参传来一个字符串,统计此字符串中字母,数字,空格,和其他字符的个数,在主函数中输入字符串以及输出上述统计的结果。再考虑将算的的结果放在一个数组中
- mysql自定义函数实现统计一个字符串在另一个长字符串中出现的次数
- 事件代理总结: 已经有一些使用主流类库的事件代理示例出现了,比如说jQuery、Prototype以及Yahoo! UI。你也可以找到那些不用任何类库的例子,比如说Usable Type blog上的这一个。一旦需要的话,事件代理将是你工具箱里的一件得心应手的工具,而且它很容易实现。
- C# 实现统计字符串中不同单词的出现次数【百度笔试题】
- 《C++ Primer》学习笔记:map容器insert操作的使用——编写程序统计并输出所读入的单词出现的次数
- 利用Map实现的统计每个输入字符串或则单词出现的次数
- 给定任意一个字符串,使用 for in 语句来统计字符出现的个数
- 统计一个文档中出现频率最多的k个单词的实现
- 练习2-4:编一个程序统计文件中特定单词出现的次数(要求使用string类的运算符==来查找单词)
- 2015蘑菇街笔试题——给定一个英文单词的字符串,按照英文单词的顺序反转输出
- Java中实现统计一个字符串在另一个字符串中出现的次数统计