编写函数void count(char a[],char w[][10],int n,int b[])。功能是:统计w指向的数组中的n个单词在a指向的字符串中各自出现的次数(将非字母字符看作单词分

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



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值