数组必须要有序,所以我们先用选择排序再操作数组
方法一:需要重新创建一个数组
#include <stdio.h>
#define N 8
int main()
{
int data[N];
int b[N];
int i,j,k,n = 0,temp;
for(i = 0;i < N;i ++)
{
scanf("%d",&data[i]);
}
for(i = 0;i < N - 1;i ++)
{
k = i;
for(j = i + 1;j < N;j ++)
{
if(data[k] > data[j])
{
k = j;
}
}
if(i != k)
{
temp = data[i];
data[i] = data[k];
data[k] = temp;
}
}
for(i = 0;i < N;)
{
for(j = i + 1;j < N;j ++)
{
if(data[i] != data[j])
{
b[n] = data[i];
i = j;
//printf("%d\t",b[n]);
n ++;
// printf("%d\n",i);
// printf("j = %d\n",j);
break;
}
if(j + 1 == N)//如果结尾有超过1个相同的数时
{
//printf("&&&&&&&&&&&&&\n");
b[n ++] = data[j];
i = N;
}
}
if(j + 1 == N)//如果结尾就一个数且和前面的数都不同时
{
//printf("&&&&&&&&&&&&&\n");
b[n ++] = data[j];
i = N;
}
}
for(i = 0;i < n;i ++)
{
printf("%d\t",b[i]);
}
}
方法二
#include <stdio.h>
#define N 5
int main()
{
int data[N];
int i,j,k,temp;
printf("请输入5个整数:");
for(i = 0;i < N;i ++)
{
scanf("%d",&data[i]);
}
//选择排序
for(i = 0;i < N - 1;i ++)
{
k = i;
for(j = i + 1;j < N;j ++)
{
if(data[k] > data[j])
{
k = j;
}
}
if(i != k)
{
temp = data[i];
data[i] = data[k];
data[k] = temp;
}
}
// for(i = 0;i < N;i ++)
// {
// printf("%d\t",data[i]);
// }
for(i = 1,j = 1;i < N;i ++)
{
if(data[j - 1] != data[i])//首先这是有序得用第一个值和后面的进行比较找到不同的放到第二个位置,再用第二个值和后面进行比较
{
data[j++] = data[i];
}
}
for(i = 0;i < j;i ++)
{
printf("%d\t",data[i]);
}
}