当前位置:首页 » 编程语言 » c语言数组数据查重
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言数组数据查重

发布时间: 2023-05-31 14:10:02

❶ 明明的随机数c语言查重该怎么办

算法
筛排处理 明明的随机数(C语言描述)

三寸雪
原创
关注
3点赞·1550人阅读
问题 : 筛排处理 明明的随机数
时间限制: 1Sec 内存限制: 128MB
题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N<=100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作

输入
每组输入数据的第一行含有一个正整数N,表示后面行中有N个随机整数。若N=0,表示处理结束。

输出
对应每组输入数据,输出一组数据,该数据由单独一行开头,内含一友信搜个N,表示后面有N个排好序的整数,整数之间空一格。每组输出数据之间空一行。

样例输入
12
2 4 6 17 20 40 43 45 60 64 85 98
17
35 75 40 61 56 21 85 61 50 83 52 22 44 68 51 80 38
0

样例输出
12
2 4 6 17 20 40 43 45 60 64 85 98

16
21 22 35 38 40 44 50 51 52 56 61 68 75 80 83 85

思路:
根据题目描述,无非就是将数据进行筛选剔除和重新排序
第一种:先进行排序,再将相同的数逐个剔除
第二种:先筛选剔除再进行重排
我用的是第二种,同时是采取边输入边剔除的方式。

代码:
#include<好历stdio.h>
int main()
{
int n,i,j,t,index=0,count=0; //index为0则表示无重复,不需要剔除,count用于计数
int a[105];
scanf("%d",&n);
while(n!=0)
{
for(i=0;i<n;i++)
{
scanf("%d",&t);
if(i==0)a[i]=t;
else
{
j=i-count; //i-count接下来要储存的数数组下标
while(j>0)
{
if(t==a[--j]){index=1;break;}
}
if(index==0)a[i-count]=t;
else index=0,count++; //count记录下多少个不用储存的t
}
}
for(i=0;i<n-count;i++) //n-count表示筛选后剩下的数
for(j=i+1;j<n-count;j++)
if(a[i]>a[j])t=a[i],a[i]=a[j],a[j]=t;
/*********输出部分************************/
printf("%d\n",n-count);
for(i=0;i<n-count;i++)
{
if(i!=n-count-1)printf("%d ",a[i]);
else printf("%d\n",a[i]);
}
printf("\坦销n");

count=0; //重新初始化count
scanf("%d",&n);
}

return 0;
}
登录后复制

这是以第一种方法写的代码
注意 这是当输入数据只有一组的情况

#include<stdio.h>
int main()
{
int a[100];
int b[100];
int n,i,j,

❷ C语言中,怎样判断一个数组中是否有重复元素呢最好用程序实现

import org.apache.commons.lang.ArrayUtils;

public boolean isDupInArray(Object[]array){

if(ArrayUtils.isEmpty(array)==true){

return false;

}

for(Object obj:array){

if(ArrayUtils.indexOf(array,obj)!=ArrayUtils.lastIndexOf(array,obj)){

return true;

}

}

return false;

}

(2)c语言数组数据查重扩展阅读:

Return用法

1.含义:return表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,返回值可以是一个常量,变量,或是表达式。

2.作用:结束正在运行的函数,并返回函数值。

3.返回值:

计算结果表示函数执行的顺利与否(-1、0)

返回值可以为各种数据类型,如:int,float,double,char,a[](数

组),*a(指针),结构或类(c++)

返回类型规定了return后面所加的量的类型,如果返回类型声明为

void,则不需要返回值。public static void Main()//程序入口只可以声

明为void和int的返回

{

//不需要返回值就OK

}

public static void mm()

{

return;//有些时候,在void的方法中,你需要跳出它,可以直接

用return而不能加任何量在后面

}

public static int cc()

{

return 321;//因为返回类型声明为int,所以返回一个整数

}

public static string msmsm()

{

return“asdfhasjghdg”;//因为返回类型声明为string,所以返回一个字

符串

}

❸ C语言用数组检查一组数字中是否有重复

//判定一个数组中是否存在相同的数。
//拿每个数和它后面所有的数比较,有相同的就返回真。
//全部比较完都没有相同的就返回假。
intHasIdentical(constint*arr,intn)
{
inti=0,j=0;
for(i=0;i<n;++i)
{
for(j=i+1;j<n;++j)
{
if(arr[i]==arr[j])
{
return1;
}
}
}

return0;
}

//按照你的意思,这个函数可以这样改写:
intjudgement(inta,intb,intc,intd,inte,intf,intg,inth,inti)
{
intarr[9]={0};
arr[0]=a;arr[1]=b;arr[2]=c;arr[3]=d;arr[4]=e;
arr[5]=f;arr[6]=g;arr[7]=h;arr[8]=i;

return!HasIdentical(arr,9);
}

❹ C语言数组判断是否有重复元素

这是方法定义,num是参数,在调用方法的时候会传值的,参数值不是在方法里定义的。

❺ C语言,如何查找一个数组内有没有相同的元素

两个循环,排除自身,逐个判断。

#include<stdio.h>
intmain()
{
intn,a[500];
while(scanf("%d",&n)>0)
{
for(inti=0;i<n;i++)scanf("%d",a+i);
for(inti=0;i<n;i++)
for(intj=0;j<i;j++)
if(i!=j&&a[i]==a[j])goto_no;
printf("YES ");
continue;
_no:
printf("NO ");
}
return0;
}

❻ 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语言中如何判断两个数组内容是否相同

C语言有轮兆个函数 memcmp 是用来进谈桐告含明行内存比较的 x0dx0aextern int memcmp(void *buf1, void *buf2, unsigned int count);x0dx0ax0dx0aif(0==memcmp(ID,ID1,20)) //ID1等于ID2x0dx0a{x0dx0a}

❽ C语言中判断两个数组内容是否相同!

C语言有个函数

memcmp是用来进行内存比较的

extern

int

memcmp(void

*buf1,

void

*buf2,

unsigned

int

count);

if(0==memcmp(ID,ID1,20))

//ID1等于ID2

{

}

先要明确运算符按优先级不同分类,《C程序设计》运算符可分为15种优先级,从高到低,优先级为1 ~ 15,除第2.13级和第14级为从右至左结合外,其它都是从左至右结合,它决定同级运算符的运算顺序。

产生来源

在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。

关于可变长数组(VLA)的问题:原来的C89标准中是不允许可变长数组出现的,但是在C99标准中,加入了对VLA的支持,但是支持的编译器不多,而且由于栈溢出的安全问题,没有太多的人敢用这个可变长数组,所以在C11标准中又把它规定为可选实现的功能了。

以上内容参考:网络-数组

❾ C语言,查找数组里重复出现的数字;

检查一个数中每位的数字是否重复,
n%10来得到当前最小位的值,
每次迭代都n/=10 ,使得数字都向右移动一位
n>0来检测是否已经检测完了。
比如123这个数;
n%10
==
3,说明3已经出现,所以digit_seen[3]
==
true了,如果检测到digit_seen[3]
==
true,说明已经有3这个数字了,就重复了,所以就直接跳出循环,此时n!=0,再通过检测n就可以判断了。
n/=10来将数字向右移动一位,这个时候n
==
12
继续前两步,直到n=0(因为任何小于等于9的整形数除以10都是0)

❿ C语言判断数组是否重复,

chachong(a[6]);//函数调用int
chachong(int
a[]);//函数声明这问题需要楼主了解数组知识a[6]只是一个值;而且是一个未定义的值;因为数组a不存在下标为6的元素;建议改为chachong(a);//函数调用int
chachong(int
*a);//函数声明