编写函数int stat(int a[],int n,int c[][2])。a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。函数从前至后依次将a数组中每两个相邻元素拼成一个不超过2位的整数,从而生成有n/2个元素组成的整数数列;统计该数列中不同整数各自出现的次数,并将统计结果保存到c指向的二维数组中。函数返回不同整数的个数。
#include <stdio.h>
#include <time.h>
#define N 10
int stat(int a[],int n,int (*c)[2]);
int main()
{
int a[N],c[N/2][2];
int i,n;
n = N;
srand(time(NULL));
printf("随机输出数组: \n");
for(i = 0;i < N;i++)
{
a[i] = rand() % 100;
printf("%5d",a[i]);
}
printf("\n");
printf("输出组合数组数字次数:\n");
printf("%d",stat(a,n,c));
printf("\n");
return 0;
}
int stat(int a[],int n,int (*c)[2])
{
int i,j,k,sum;
int b[N / 2];
sum = 0;
for(i = 0;i < n;i = i + 2)
{
b[i / 2] = a[i] * 10 + a[i + 1];
}
printf("输出组合数组:");
for(i = 0;i < N / 2;i++)
{
printf("%5d",b[i]);
}
printf("\n");
for(i = 0;i < N / 2;i++)
{
for(j = i + 1;j < N / 2;j++)
{
if(b[i] == b[j])
{
k++;
c[i][0] == c[i][0] + 1;
}
}
}
for(i = 0;i <= k;i++)
{
sum = sum + c[k][0];
}
return sum;
}