请问怎么用C语言统计一个数组中不同元素它们重复的个数啊?

RT。由于数组中有一些元素是重复的,需要讲它们及其重复的次数,分别标记出来,请问C语言代码怎么写啊?把12个整型数据存放到一维数组a中,找出a中各不同元素的数值和出现的次... RT。 由于数组中有一些元素是重复的,需要讲它们及其重复的次数,分别标记出来,请问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[]数组不用再排序的,只要统计出它们其中重复的数目就可以了。
展开
 我来答
爱学习爱教育的小豆丁
高粉答主

2019-10-07 · 教育达人一起学习
爱学习爱教育的小豆丁
采纳数:176 获赞数:138169

向TA提问 私信TA
展开全部

用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语言

百度网友866c77a
2016-01-01 · TA获得超过6951个赞
知道小有建树答主
回答量:215
采纳率:0%
帮助的人:123万
展开全部
先排序,再相减就可以啦!

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他们就相等。
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gao745
推荐于2018-02-23 · TA获得超过426个赞
知道小有建树答主
回答量:442
采纳率:0%
帮助的人:346万
展开全部
#include <stdio.h>
#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;
}

可以使用。。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
star734
2010-01-11 · TA获得超过2291个赞
知道小有建树答主
回答量:694
采纳率:0%
帮助的人:401万
展开全部
so easy
该程序还顺便统计了除数字之外的,空白符(空格、制表符、换行符)以及其他所有字符出现的次数
#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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
int21h
2010-01-11 · TA获得超过297个赞
知道小有建树答主
回答量:180
采纳率:0%
帮助的人:97万
展开全部
用链表实现比较好。链表第一个元素是key,用以存储数组a中的不同的元素,第二个元素用以存储该元素在数组a中出现的次数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式