编程实现输入一串英文,统计其中各单词出现的个数(不区分大小写字母)以“000”作为字符串输入结束标志

编程实现输入一串英文,统计其中各单词出现的个数(不区分大小写字母),以“000”作为字符串输入结束标志,例如:
Twinkle twinkle little star 000(回车)
twinkle little star
2 1 1

这个是题 下面是我自己写的一段
#include <stdio.h>
#include <string.h>
void main()
{
char str[248];
char *word1;
char *word2[20][20];
char *o = "000";
char *buf;
char delim[] = " ";
int i=0,j;
int length;
gets_s(str);
length = strlen(str);
word1 = strtok_s(str, delim, &buf);
while (word1 != NULL)
{
if (word1 == o)
break;
for (j = 0; j < 20; j++)
{
if (word2[j][20] != word1)
{
word2[i][20] = word1;
}
}
word1 = strtok_s(NULL, delim, &buf);
puts(word2[i][20]);
i++;
}
}
思路是把写入的str切割成单独的单词 然后存入word1 再用遍历word2判断是否重复 不重复则录入 重复则用一个数组来记录数 最后输出word2和数组就可以了
但是目前遇到两个问题 一个是没办法判断000为终止符 一个是没法判断word2里有word1的词 运行的话重复的单词还是会录入word2
求大神帮忙完善一下这段程序 刚C语言入门 不会用基础外的高阶语法 所以希望回答的人答案别是复制的 写map之类的也不用回答了 看不懂

第1个回答  2017-05-26
#include"stdio.h"
main()
{
char a[100][100]={' '},*p,*p1[20];
int i,j=0,l=0,k,c,ji=1,s=1;

for(j=0;j<100;j++)
for(i=0;i<100;i++)
{
scanf("%c",&a[j][i]);
if(a[j][i]=='0')
l++;
if(l==3)
{k=j; j=100;break;}
if(a[j][i]==' ')
break;

}
for(i=0;i<k;i++)
{
p1[i]=a[i];
}

for(j=0;j<k;j++)
{ for(i=j+1;i<k;i++)

{

if(strcmp(p1[j],p1[i])==0)
ji++; }
for(c=0;c<j;c++)
{ if(strcmp(p1[c],p1[j])==0)
s=0;}
if(s)
printf("%s %d \n",p1[j],ji);ji=1;

}
}

哎...伤心..考试的时候没做出来追问

网上复制的就别来了 这段错误代码第一段是循环是100次的字符串输入 石乐志

相似回答
大家正在搜