0013 从键盘输入10个整形数,去掉重复的,将剩下的从大到小输出
问题描述:
从键盘输入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 }
运行截图: