找出数组中重复的数
/* programming Name: Finding out the repeated number. 找出数组中重复的数
** author: laigaoat2005
** data : 2007-7-6
** ver: 1.0
** note: 1。本程序是一个测试程序,原数组中不能有0,第二版将改进这个问题。
** 2。本程序得到space的指点,在此特表示感谢。呵呵,初学好久了,请高人指点.
*/
#include <stdio.h>
int main(void)
{
int data[100]={12,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22}; //假定原数组已经被初始化,这里初始化前18元素作为测试
int head[100]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},repeat[100]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //这里初始化前18元素作为测试
int temp=0;
int i=0,j=0,k=0,l=0,m=0;
printf("原数组:\n");
for (i=0;i<17;i++)
{
printf("%d ",data[i]);
}
printf("\nhead[]中内容为:\n");
for(i=0;i<17;i++)
{
m=0;
temp=data[i]; //将第一个元素值赋给temp
for(j=i+1;j<17;j++) //从第二个元素开始检查原数组中的数,看它是否与前一个相等
{
if(temp==data[j]) //如果相等,
{
data[j]=0; //将原数组的值设为0
m=1; //将m设为1,作为标志
}
}
if (m==1) //如果m=1,说明找到了与前一个元素相等的数
{
repeat[k]=temp; //将前一个数的值赋给repeat[]
k++; //将repeat脚标自增1
}
else //如果没有找到与前一个数相等的元素
{
head[l]=temp; //将临时数值赋给head[];
l++; //将head的脚标自增1
}
}
for(i=0;i<17;i++)
{
if (head[i]!=0) printf("%d ",head[i]);
}
printf("\nrepeat[]中内容为:\n");
for(i=0;i<17;i++)
{
if (repeat[i]!=0) printf("%d ",repeat[i]);
}
printf("\n");
}
[此贴子已经被作者于2007-7-6 21:08:23编辑过]