问题描述:
从键盘输入10个整形数,去掉重复的,将其余剩余的数由大到小排序输出。
代码展示:
1 #include<stdio.h>
2 void BubbleSort(int a[], int len);
3 int main(){
4 int a[10];
5 int i,j;
6 int len = 10;
7 for(i=0; i<10; i++){
8 scanf("%d",&a[i]);
9 }
10 BubbleSort(a,10); //先排序,后标记
11 for(i=0,j=1;j<10;){ //标记重复的元素为0
12 if(a[j] == a[i]){
13 a[j] = 0;
14 j++;
15 }else{
16 j++;
17 i = j-1;
18 }
19 }
20 printf("删除重复元素后的有序序列为:");
21 for(i=0;i<10;i++){
22 if(a[i] != 0){
23 printf("%d ",a[i]);
24 }
25 }
26 return 0;
27 }
28
29 void BubbleSort(int a[], int len){ //冒泡排序
30 int i,j;
31 int flag;
32 int temp;
33 for(i=0; i<len; i++){
34 flag = 0;
35 for(j=1; j<len-i; j++){
36 if(a[j-1]<a[j]){
37 temp = a[j-1];
38 a[j-1] = a[j];
39 a[j] = temp;
40 flag = 1;
41 }
42 }
43 if(flag == 0){
44 return;
45 }
46 }
47 }
运行截图: