问题描述:
从键盘输入10个整形数,去掉重复的,将其剩余的从大到小排序输出。
代码展示:
1 #include<stdio.h>
2 void sort();
3 void BubbleSort(int a[], int len);
4 void print(int a[],int len);
5 void main(){
6 sort();
7 }
8 void sort(){
9 int a[10]; //用于输入变量
10 int i,j;
11 int len = 10;
12 printf("请依次输入10个整数:\n");
13 for(i=0; i<10; i++){
14 scanf("%d",&a[i]);
15 }
16 printf("输入的原始10个整数为:\n");
17 print(a,len);
18 BubbleSort(a,len); //冒泡排序
19 for(i=0; i<len; i++){ //删除重复元素
20 if(a[i] == a[i+1]){
21 for(j=i+1;j<len;j++){
22 a[j] = a[j+1];
23 }
24 len--;
25 i = i-1;
26 }
27 }
28 printf("\n删除并排序后的整数为:\n");
29 print(a,len);
30
31 }
32 void BubbleSort(int a[], int len){ //冒泡排序算法
33 int i,j;
34 int flag = 0;
35 int temp;
36 for(i=0;i<len;i++){
37 for(j=0;j<len-i;j++){
38 if(a[j]<a[j+1]){
39 temp = a[j];
40 a[j] = a[j+1];
41 a[j+1] = temp;
42 flag = 1;
43 }
44 }
45 if(flag == 0){
46 break;
47 }
48 flag = 0;
49 }
50 }
51
52 void print(int a[],int len){ //打印数组输出
53 int i;
54 for(i=0; i<len; i++){
55 printf("%d ",a[i]);
56 }
57 }
运行截图: