程序一、编写函数void count(char a[],char w[][10],int n,int b[])。功能是:统计w指向的数组中的n个单词在a指向的字符串中各自出现的次数(将非字母字符看作单词分割符),拧将统计结果依次保存在b指向的数组中。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void count(char a[], char w[][10], int n, int b[]);
int main()
{
char a[100], w[10][10];
int b[100];
int n,i;
printf("Please inpu a string:\n");
scanf("%s", a);
printf("Please input the number of the words:\n");
scanf("%d", &n);
printf("Please input the words:\n");
for(i = 0; i < n; i++)
{
scanf("%s", w[i]);
}
count(a, w,n,b);
return 0;
}
void count(char a[], char w[][10], int n, int b[])
{
int i, t;
int j = 0;
int k = 0;
int num = 0;
int len_word;
int len_str = 0;
for(i = 0; i < n; i++)
{
k = 0;
num = 0;
len_word = strlen(w[i]);
while(a[k] != '\0')
{
len_str = 0;
j = 0;
if(isalpha(a[k]))
{
while(a[k] == w[i][j] && a[k] != '\0')
{
len_str++;
k++;
j++;
}
}
if(len_word == len_str && !isalpha(a[k]))
{
num++;
}
k++;
}
b[i] = num;
}
for(i = 0; i < n; i++)
{
printf("%s=%d ", w[i], b[i]);
}
printf("\n");
}
程序二、编写函数int stat(int a[],int n,int c[][2])。a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。函数从前至后依次将a数组中每两个相邻元素拼成一个不超过2位的整数,从而生成有n/2个元素组成的整数数列;统计该数列中不同整数各自出现的次数,并将统计结果保存到c指向的二维数组中。函数返回不同整数的个数。
#include <stdio.h>
int start(int a[], int n, int c[][2]);
int main()
{
int a[100];
int c[100][2];
int n, i;
printf("Please input a number:");
scanf("%d", &n);
if(n % 2 != 0)
{
printf("Please input a new number:");
scanf("%d", &n);
}
printf("Please input the numbers:\n");
for(i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
start(a, n, c);
return 0;
}
int start(int a[], int n, int c[][2])
{
int i;
int j = 0;
int num = 0;
for(i = 0; i < n; i +=2) //组成n/2个数
{
c[j++][0] = a[i] * 10 + a[i+1];
}
for(i = 0; i < n/2; i++) //统计出现的次数
{
for(j = 0; j < n/2; j++)
{
if(c[i][0] == c[j][0])
{
num++;
}
}
c[i][1] = num;
num = 0;
}
for(i = 0; i < n/2; i++)
{
printf("%5d", c[i][0]);
printf("%5d", c[i][1]);
printf("\n");
}
printf("\n");
}