编写函数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
