附加题:编程实现输入一串英文,统计其中各单词出现的个数(不区分大小写字母),以“000”作为字符串输入结束标志,例如:
Twinkle twinkle little star 000(回车)
twinkle little star
2 1 1 (50分)
#include<stdio.h>
#include<string.h>
#define M 101
struct STU{
char strs[M];
int num;
}st[M];//存储计算后的单词和个数
char strs[M][M];//储存输入的单词
int preg_strs(int);//统计不同的单词和个数
void A_to_a(char[]);//将大写的单词改成小写的
void print_strs(int);//输出结果
int main()
{
int m,k;
k=0;
while(scanf("%s",strs[k])!=EOF && !( strs[k][0]=='0' && strs[k][1]=='0' && strs[k][2]=='0') )
{
k++;
}
m=preg_strs(k);
print_strs(m);
getchar();
return 0;
}
void print_strs(int m)
{
int i,j,len;
for(i=0;i<m;i++){
printf(i==0?"%s":"\t%s",st[i].strs);
}
printf("\n");
for(i=0;i<m;i++){
printf("%d",st[i].num);
if(i != m-1){
len=strlen(st[i].strs);
for(j=0;j<len-1;j++){
printf(" ");
}
printf("\t");
}
}
printf("\n");
}
int preg_strs(int k)
{
int m,i,j;
m=0;
for(i=0;i<k;i++){
A_to_a(strs[i]);
for(j=0;j<m;j++){
if(strcmp(strs[i],st[j].strs) == 0)
{
break;
}
}
if(j>=m){
strcpy(st[m].strs,strs[i]);
st[m].num=1;
m++;
}else{
st[j].num++;
}
}
return m;
}
void A_to_a(char str[])
{
int i=0;
for(i=0;str[i]!='\0';i++){
if(str[i]<'a') {
str[i]+=32;
}
}
return ;
}