题目太长不贴,,,我懒-。-

来源:互联网 发布:边锋网络招聘 编辑:程序博客网 时间:2024/04/29 18:43
/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co.,     Ltd. 
File name:
Author:fhb    Version:0.1    Date: 
Description:
Funcion List: 
二、编写函数int stat(int a[],int n,int c[][2])。
a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。
函数从前至后依次将a数组中每两个相邻元素拼成一个不超过2位的整数,
从而生成有n/2个元素组成的整数数列;统计该数列中不同整数各自出现的次数,
并将统计结果保存到c指向的二维数组中。函数返回不同整数的个数。
*****************************************************/


#include<stdio.h>


int stat(int a[],int n,int c[][2])
{
int i,j = 0;
int b[n/2];
int count = 0;
int flag = 0;

//合成题目要求的数字

for(i = 0;i < n;i+=2)
{
b[j] = a[i] * 10 + a[i+1];
j++;
}

for(i = 0;i < n/2;i++)
{
flag = 0;
for(j = 0;j < i;j++)
{
if(b[j] == b[i])
{
flag = 1;//如果之前已经出现了这个数则跳出循环,并改变标志位的之值
break;
}
}
if(flag==0)
{
//标志位没有改变就将数字记在新的位置,数量记为1
c[count][0] = b[i];
c[count][1] = 1;
count++;
}
else
{
//标志位改变了就找到之前的值并将数量加1
int k;
for(k = 0;k < count;k++)
{
if(c[k][0] == b[j])
{
c[k][1]++;
}
}
}
}
return count;
}
int main()
{
int a[20];
int c[10][2];
int i;

//由时间随机分配值,对3取余便于验证结果
srand(time(NULL));
for(i = 0;i < 20;i++)
{
a[i] = rand() % 3;
printf("%d ",a[i]);
}
printf("\n");

int count=stat(a,20,c);

//输出
for(i = 0;i < count;i++)
{
printf("%d\t%d\n",c[i][0],c[i][1]);
}

return 0;

}


0 0
原创粉丝点击