问题描述:
a为一个含有20个元素的数组,编写程序,把20个数据读入该数组,找出其中最大值和最小值,输出两者的值和响应的下标,最后将数组各元素从大到小的顺序重新排列,并将其输出来。
代码展示:
1 #include<stdio.h> 2 void BubbleSort(int a[],int len); 3 int main(){ 4 int i,j; 5 int max=0,min=0; 6 int a[20]; 7 for(i=0; i<20; i++){ //循环读入数字 8 scanf("%d",&a[i]); 9 } 10 for(i=1;i<20;i++){ //找最大最小值 11 if(a[max]>a[i]){ 12 max = i; 13 } 14 if(a[min]<a[i]){ 15 min = i; 16 } 17 } 18 printf("数组中最大值为:%d, 其原始下标为:%d\n",a[max],max); 19 printf("数组中最小值为:%d, 其原始下标为:%d\n",a[min],min); 20 BubbleSort(a,20); 21 printf("排序之后的序列为:"); 22 for(i=0; i<20; i++){ 23 printf("%d ", a[i]); 24 } 25 return 0; 26 } 27 28 void BubbleSort(int a[],int len){ //冒泡排序 29 int i,j; 30 int flag; 31 int temp; 32 for(i=0;i<len;i++){ 33 flag = 1; 34 for(j=1;j<len-i; j++){ 35 if(a[j-1]<a[j]){ 36 temp = a[j-1]; 37 a[j-1] = a[j]; 38 a[j] = temp; 39 flag = 0; 40 } 41 } 42 if(flag == 1){ 43 break; 44 } 45 } 46 }
运行截图: