c语言_删除数组中的重复数据

这篇代码将实现数组中相同数据的删除操作

大致思路如下:

1、首先使用malloc动态分配数组的内存,再输入各个数组元素;
2、使用两层for循环嵌套,对数组遍历,判断如果出现相同数据,则将后面的数据往前移一位,记录数组长度的变量相应减1;
3、输出数组;



#include

void main()
{
//第一题:删除数组中相同数据
printf("==========第一题==========\n");
int length = 0;//定义一个变量,记录数组的长度
printf("请输入数组长度:\n");
scanf("%d", &length);
char *a;
a = (char*)malloc(length * sizeof(int));//使用malloc动态分配数组的内存
printf("请输入数组元素:\n");
for (int i = 0; i < length; i++)
{
scanf("%d", &a[i]);
}
printf("数组原来数据为:\n");
for (int i = 0; i < length; i++)
{
printf("%d, ", a[i]);
}
printf("\n删除重复数据后,该数组数据为:\n");
//使用两层for循环嵌套,对数组遍历:
for (int i = 0; i < length - 1; i++)
{
for (int j = i + 1; j < length; )//注意:此时第三个表达式空出,因为当找到重复的数据,后面的数往前覆盖之后,应该再进行一次对比
{
if (a[i] == a[j])//判断如果出现相同数据,则将后面的数据往前移一位
{
for (int k = j; k < length - 1; k++)
{
a[k] = a[k + 1];
}
length--;//记录数组长度的变量相应减1
}
else
{
j++;//当没有重复的时候才++
}
}
}
for (int i = 0; i < length; i++)//打印数组
{
printf("%d, ", a[i]);
}
}

你可能感兴趣的:(c语言)