编写函数void count(char a[],char w[][10],int n,int b[])。功能是:统计w指向的数组中的n个单词在a指向的字符串中各自出现的次数(将非字母字符看作单词分割符),拧将统计结果依次保存在b指向的数组中。
#include <stdio.h>
#include <string.h>
void count(char a[],char w[][10],int n,int b[]);
int main()
{
char str[100] = "word/or.are,my&my.or/orhr;quit>time,word;my*";
char word[5][10] = {"word","my","quit","or","are"};
int b[5]; //b数组用来存放统计结果
int i;
printf("The strings array is :\n%s\n",str);
printf("The word array is :\n");
for( i = 0 ; i < 5 ; i++ )
{
printf("%-10s",word[i]);
}
count(str,word,5,b);
printf("\nThe w array words appear time in word :\n");
for(i = 0 ; i < 5 ; i++ )
{
printf("%-4d",b[i]);
}
printf("\n");
return 0;
}
void count(char a[],char w[][10],int n,int b[])
{
int i , j , k ;
int len , count ; //count用来记录单词个数,len用来记录有相同字符的个数
for( i = 0 ; i < n; i++ )
{
j = 0; //每一个单词都要从a数组的第一个字符开始做比较
count = 0; //每一个单词做一次计数记录
while( a[j] != '\0')
{
k = 0; //每做完一次比较w[i]都要单词的首字符
len = 0;
if( isalpha(a[j]) ) //当a数组的元素是字母时,与w的单词作比较
{
while( w[i][k] == a[j] )
{
k++;
j++;
len++;
}
}
if( len == strlen(w[i]) && !isalpha(a[j]) ) //确保比较的是a数组分割符分割开的单词
{
count++;
}
j++;
}
b[i] = count;
}
return ;
}
程序运行结果:
The strings array is :
word/or.are,my&my.or/orhr;quit>time,word;my*
The word array is :
word my quit or are
The w array words appear time in word :
2 3 1 2 1