c语言单词统计题目
- 提问者网友:山高云阔
- 2021-07-20 13:42
从键盘输入一行字符(文本),统计其中不同“单词”的数目。
例: 假定输入字符(文本):
88a123*.**abcd\;123a123,-abcd+?x1x2w\a1\a2
统计“单词”及其数目如下:
a123,2个;abcd,2个;x1x2w,1个;a1,1个;a2,1个*/
- 五星知识达人网友:不想翻身的咸鱼
- 2021-07-20 14:11
很幸运看到你的问题。
但是又很遗憾到现在还没有人回答你的问题。也可能你现在已经在别的地方找到了答案,那就得恭喜你啦。
可能是你问的问题有些专业了,没人会。或者别人没有遇到或者接触过你的问题,所以帮不了你。建议你去问题的相关论坛去求助,那里的人通常比较多,也比较热心,可能能快点帮你解决问题。
希望我的回答也能够帮到你!
祝你好运~!
- 1楼网友:雪起风沙痕
- 2021-07-20 15:30
- 2楼网友:長槍戰八方
- 2021-07-20 14:32
#include <stdio.h> #include <string.h> #include <ctype.h> #include <malloc.h>
struct word_t { char * word; int num; struct word_t * next; }; struct head_t { struct word_t * list; int num; };
int main() { char temp[256]; struct head_t *head; int len; char tmp[32]; head=(struct head_t*)malloc(sizeof (struct head_t)); head->list=NULL; head->num=0;
do{ printf("Please input some character:"); fgets(temp,256,stdin);
len=strlen(temp); for(int i=0;i<len;i++) { if(!isalpha(temp[i])) continue; else { for(int j=0;j<len-i;j++) { if(isalnum(temp[i+j])) tmp[j]=temp[i+j]; else { i+=j; char * word_tmp=(char *)malloc(sizeof(char)*(j+1)); strncpy(word_tmp,tmp,j); word_tmp[j]='\0'; printf("%s\n",word_tmp); if(head->list==NULL) { struct word_t * st_word_tmp=(struct word_t *)malloc(sizeof (struct word_t)); st_word_tmp->word=word_tmp; st_word_tmp->next=NULL; st_word_tmp->num=1; head->list=st_word_tmp; head->num=1; } else { for(struct word_t* st_word_temp=head->list;st_word_temp!=NULL;st_word_temp=st_word_temp->next) { if(!strcmp(st_word_temp->word,word_tmp))//find word { st_word_temp->num++; break; } } if(st_word_temp==NULL) { struct word_t * st_word_tmp=(struct word_t *)malloc(sizeof (struct word_t)); st_word_tmp->word=word_tmp; st_word_tmp->num=1; st_word_tmp->next=head->list; head->list=st_word_tmp; head->num++; } } break; } } } } for(struct word_t *test=head->list;test!=NULL;test=test->next) printf("\t%s : %d\n",test->word,test->num);
}while(1); for(int k=0;k<head->num;k++) { delete head->list->word; struct word_t* tmp_delete=head->list; head->list=head->list->next; delete tmp_delete; }
return 0; }