⑴ 编写程序输入n个整数,查找并删除重复的数字,打印结果。(c语言)
#include<stdio.h>
#include<malloc.h>
intmain(void)
{
int*a,n,i,j,k;
scanf("%d",&n);
a=(int*)malloc(sizeof(int)*n);
for(i=0;i<n;++i)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;++i)
{
for(j=i+1;j<n;++j)
{
if(a[j]==a[i])
{
for(n--,k=j;k<n;k++)
{
a[k]=a[k+1];
}
}
}
}
for(i=0;i<n;++i)
{
printf("%d",a[i]);
}
free(a);
return0;
}
⑵ C语言怎么算 同或,找一个数组中重复出现了一次的元素
方法1:先快速排序,然后遍历
方法2:遍历数组,把遍历的元素计算一个hash放到另外的数组里去,如果一个位置放了2次,就表明有2个。
⑶ c语言编程:输出数组中重复出现的数
#include<stdio.h>
intmain()
{inti,j,k=0,k1,p,a[10],b[5];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
if(a[j]==a[i])
{p=1;
for(k1=0;k1<k;k1++)
if(a[i]==b[k1])p=0;
if(p)
{printf("%d",a[i]);
b[k++]=a[i];
}
};
return0;
}
⑷ 请问怎么用C语言统计一个数组中不同元素它们重复的个数啊
用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));
}
}
(4)找出重复出现的数据c语言扩展阅读:
C程序中函数特性
C程序中函数的数目实际上是不限的,一个C程序中必须至少有一个函数,而且其中必须有一个并且仅有一个以main为名的函数,这个函数称为主函数,整个程序从这个主函数开始执行。
函数内部究竟是如何工作的,外部程序是不知道的。外部程序所知道的仅限于输入给函数什么以及函数输出什么。函数提供了编制程序的手段,使之容易读、写、理解、排除错误、修改和维护。
⑸ c语言统计数据时怎么排除重复数据
如果是统计字符串个数总数的话,你不是已经获取这些重复数据的数量count了吗,你只需要定义一个临时变量sum,
在每一次循环结束后,让
sum
=
sum
+
(count
-1)
就好了(count是str出现的总次数,-1是至少留一个,不至于全部都去掉)。最后减去这个sum就行。
如果是是要删除这些重复的字符的话,那就比较费劲了,毕竟数组的删除是比较坑爹的,建议换成链表。而且你这个删除还不是一个两个的事儿。链表做删除很容易!
⑹ 用C语言实现查找数组中重复的数据,删除重复数据后输出数组.
从第一个元素开始一次和其后元素比较,如果相等,先用一个变量记下这个位置,后面的元素全部向前移动,再从刚才记下的位置继续比较,直到比较完毕,也就是合并完了所有的相同元素。再输出数组就行了。
⑺ C语言,查找数组里重复出现的数字;
//如果这题目是在oj上,请去掉所有的注释
#include<stdio.h>
intmain()
{
//用数组下标1~104表示输入的数字
//用数组每个元素的值表示该下标对应的元素输入次数
inta[105]={0},i,n,ni,max;
scanf("%d",&n);
max=a[0];
for(i=0;i<n;i++)
{
scanf("%d",&ni);
a[ni]++;
if(max<a[ni])
max=a[ni];
}
for(i=104;i>0;i--)//想想为什么倒着比较
{
if(a[i]==0)continue;
if(max==a[i])
{
printf("%d%d ",i,a[i]);
break;
}
}
return0;
}
⑻ C语言问题:查找重复的数据
问一下?数字有没有漏的?比如说N=5;数字是不是1234
全部都在数组里面?还是说数字是这个范围,不一定全部在?
⑼ C语言求简化,是找出重复数字。
不要只是考虑数学算法,也要充分利用编程语言的特性啊
思路就是建立10000个元素的数组,输入数字填到对应下标的元素中去,那么只要发现已经填过的元素,必然就是重复的元素了。
根本不需要循环比较(每个元素的比较没有任何循环),算法时间复杂度是最小的
这也是hash表的基本思想
for(i=0;i<b;i++) //////////////////循环输入后面b个数字
scanf("%lld",&a[i]);
long long av[10000]; ////////// 建立一个N元素的数组用于存放元素 N=10000
memset(av, 0, 10000 * sizeof(long long)); // 数组元素全部清零
for(i=0;i<b-1;i++) //////////////////一个一个数字分别填充到数组中
{
if(av[a[i]] != 0) /////////////// 对应下标的数组已经被填充,说明这个数字是重复的
{
d = 1;
break;
}
}
if(d==1) ////////////因为只能有一个重复的,如果已输出过,结束这次循环
break;
⑽ 一个C语言算法,关于筛选重复数据
用两个for
第一个for为历遍数组。
嵌套的另一个for用来判断本数之前是否有与其相同的数。
没有就输出。
有就忽略。
参考这个:
#include
main()
{
int
a[20],i,j,n=0;
for(i=0;i<20;i++)
scanf("%d",&a[i]);
for(i=0;i<20;i++)
{
for(j=0;j
评论
0
0
加载更多