请问怎么用C语言统计一个数组中不同元素它们重复的个数啊?
把12个整型数据存放到一维数组a中,找出a中各不同元素的数值和出现的次数。例如已经给定数组a[12]={5,1,3,2,4,6,5,1,3,2,4,6}, 要统计其中不同元素把它们放在另外一个数组中b[]={1,2,3,4,5,6}, 每个元素重复的次数数组c[]={2,2,2,2,2,2},请问程序应该怎么编写,急呵,谢谢!
----------------------------------
b[]数组不用再排序的,只要统计出它们其中重复的数目就可以了。 展开
用C语言统计一个数组中不同元素重复的个数:
public class Test {
public int count(int[] array) {
int len = array.length;
for (int i = 0; i < array.length - 1; i++) {
for (int j = i + 1; j < array.length; j++) {
int num = array[i];
if (array[j] == num) {
// 重复,数组总长度减1
len--;
i++;
}
}
}
return len;
}
public static void main(String[] args) {
// 测试数据:总共是9个不同的元素,按照升序排好,其中有重复出现的元素。
int[] array = new int[] { 1, 1, 2, 2, 2, 3, 4, 5, 5, 6, 7, 7, 8, 9 };
System.out.println(new Test().count(array));
}
}
扩展资料:
C程序中函数特性
C程序中函数的数目实际上是不限的,一个C程序中必须至少有一个函数,而且其中必须有一个并且仅有一个以main为名的函数,这个函数称为主函数,整个程序从这个主函数开始执行。
函数内部究竟是如何工作的,外部程序是不知道的。外部程序所知道的仅限于输入给函数什么以及函数输出什么。函数提供了编制程序的手段,使之容易读、写、理解、排除错误、修改和维护。
参考资料来源:百度百科—c语言
int a[100];//假设有100个元素
tint b,t=0;
for(int i=1;i<100;i++)
{
if(t<a[i])
{
t =a[i];
a[i] = a[i+1];
a[i+1] = a[i];//先用冒泡法排序;
}
}
for(int i=1;i<100;i++)
{
if(a[i+1]-a[i]==0)
{
b++;//用相邻元素相减,假设等于0他们就相等。
}
}
#include <conio.h>
int main(void)
{
int a[12],b[12],c[12] = {0};
int i,j,cnt = 0;
/* 输入数据 */
for(i=0; i<12; i++)
{
scanf("%d",&a[i]);
}
/* 排序 */
for(i=0; i<12-1; i++)
for(j=0; j<12-1-i; j++)
{
int t;
if( a[j] > a[j+1] )
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
for(i=0; i<12; i++)
{
for(j=0; j<cnt; j++)
if( b[j] == a[i] )
break;
/* 判断 */
if( j == cnt ) /* 增加元素 */
{
b[cnt++] = a[i];
c[cnt-1]++;
}
else /* 记录重复次数 */
{
c[j]++;
}
}
puts("\nb[]");
for(i=0; i < cnt; i++)
printf("%4d",b[i]);
puts("\n\nc[]");
for(i=0; i < cnt; i++)
printf("%4d",c[i]);
getch();
return 0;
}
可以使用。。
该程序还顺便统计了除数字之外的,空白符(空格、制表符、换行符)以及其他所有字符出现的次数
#include <stdio.h>
/* count digits, white space, others */
main()
{
int c, i, nwhite, nother;
int ndigit[10];
nwhite = nother = 0;
for (i = 0; i < 10; ++i)
ndigit[i] = 0;
while ((c = getchar()) != EOF)
if (c >= '0' && c <= '9')
++ndigit[c'
0'];
else if (c == ' ' || c == '\n' || c == '\t')
++nwhite;
else
++nother;
printf("digits =");
for (i = 0; i < 10; ++i)
printf(" %d", ndigit[i]);
printf(", white space = %d, other = %d\n",
nwhite, nother);
}