题目:编写函数void count(char a[],char w[][10],int n,int b[])。功能是:统计w指向的数组中的n个单词在a指向的字符串中各自出现的次数(将非字母字符看作单词分割符),拧将统计结果依次保存在b指向的数组中。
#include <stdio.h>#include <stdlib.h>#include <string.h>void input(char w[][10],int n); //输入函数void count(char a[],char w[][10],int n,int b[]);int main(){ char w[10][10]; char str[100]; int result[50]; //用于存放统计结果 int n = 0; //单词个数 PRintf("请输入一个总的字符串:/n"); fgets(str,100,stdin); printf("请确认需要找出的单词数:/n"); scanf("%d",&n); printf("请输入%d个单词:/n",n); input(w,n); count(str,w,n,result); return 0;}void input(char w[][10],int n){ int i = 0; int j = 0; for (i = 0 ; i < n ; i++) { scanf("%s",w[i]); }}void count(char a[],char w[][10],int n,int b[]){ int count_num = 0; int i = 0; //i为总字符串a[]的循环变量 char temp[10]; //定义临时数组用于和w比较 int j = 0; //该循环变量用于临时数组 int k = 0; //该循环变量用于b[] int l = 0; //该循环变量用于w[][10] for (l = 0 ; l < n ;l++ ) //现从w中拿出第0行进行比较 { for ( i = 0 ; i < strlen(a) ; i++) { while ( (a[i] >= 'A' && a[i] <= 'Z') || ( (a[i] >= 'a' && a[i] <='z') ) ) { temp[j]=a[i]; i++; j++; } temp[j] = '/0'; //赋予temp /0 字符串结束标志 if ( strcmp(temp,w[l]) == 0) { count_num++; } j = 0; //j置0,再重新为temp赋值 } b[k] = count_num; k++; count_num = 0; } printf("结果分别为:/n"); for ( i = 0 ; i < k ; i++) { printf("%d/n",b[i]); }}
新闻热点
疑难解答