(2) 编写程序:输入具有重复值的一维数组进行排序,删除重复的数据并顺序输出。
输入格式:在一行中输入一组具有重复数的数据。
输出格式:在一行中输出排序后的无重复值的数组。
样例输入1:
1 3 2 3 5 4
样例输出1:
1 2 3 4 5
样例输入2:
2 8 6 10 78 34 6 8 10
样例输出2:
2 6 8 10 34 78
收获:多拿笔进行经验总结,举例计算
//删除重复数,排序
#include<stdio.h>
int main()
{
// int data[6]={1,2,2,4,5,6};
int k = 0;
int length = 6;
printf("请输入数组长度:\n");
scanf("%d",&length);
int data[length];
printf("请输入数值,中间用空格隔开:\n");
for(int i=0;i<length;i++)
scanf("%d",&data[i]);
/*
当i=4时,k处的循环并不会执行
外层循环i,从第一个元素开始
内层循环j,从第i+1个元素逐一与第i个元素比较
自己拿笔随便举个例子试下,为什么会是这样
*/
for(int i=0;i<length-1;i++)
for(int j=i+1;j<length;j++)
if(data[i]==data[j])
for(k=j;k<length-1;k++)
data[k] = data[k+1];
//将最后一个值赋值为0
data[k] = 0;
for(int i=0;i<length;i++)
printf("%3d",data[i]);
//默认右对齐
return 0;
}