1116

来源:互联网 发布:知乎每日精选aqq 编辑:程序博客网 时间:2024/06/05 19:14
//编写函数int stat(int a[],int n,int c[][2])。a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。函数从前至后依次将a数组中每两个相邻元素拼成一个不超过2位的整数,从而生成有n/2个元素组成的整数数列;统计该数列中不同整数各自出现的次数,并将统计结果保存到c指向的二维数组中。函数返回不同整数的个数。


#include <stdio.h>
#include<time.h>


int stat(int a[], int n, int c[][2])//将a中每两位组成的整数比较后,将数值和个数存于二维数组c中
{
int i;
int j;
int k;
int num = 0;                                    //c中个数计数
int count = 0;                              //不同整数的个数计数
int b[50];                                  //保存二位整数


for (i = 0; i < n; i++)      //保存二位整数于b中
{
if (i % 2 == 0)
{
b[i / 2] = a[i] * 10 + a[i + 1];
}
}


for (i = 0; i < n / 2; i++)                  //b中每个整数和前面的整数比较
{
for (j = 0; j < i; j++)
{
if (b[j] == b[i])
{
break;
}
}
if (j == i)
{
c[num][1] = b[i];
for (k = i; k < n / 2; k++)
{
 if (b[k] == b[i])
{
count++;
}
}
c[num][2] = count;            //没有相同则保存,且计数此个数
num++;
count = 0;
}
}


return num;
}


int main()
{
int n;                              //a中偶数个整数的个数
int i;
int len;                             //不同整数的个数
int a[100];
int c[50][2];


srand(time(NULL));


printf("Enter an even number(<=100)!\n");
scanf("%d",&n);
printf("Puts a!\n");


for (i = 0; i < n; i++)                //输出a中整数
{
if ((i != 0) && (i % 2 == 0))
{
printf(",");
}
a[i] = rand() % 10;
printf("%d ",a[i]);
}


printf("\n");


len = stat(a,n,c);                   //求不同整数的个数


printf("The result!\n");


for (i = 0; i < len; i++)                  //输出
{
printf("The number of %2d is %d\n",c[i][1],c[i][2]);
}


    return 0;
}
0 0
原创粉丝点击