#include<stdio.h>main(){ int a[6],i,j,t; printf("\\nPlease input 5 numbers.\\n"); for(i=0;i<=4;i++) scanf("%d",&a); for(i=0;i<=4;i++) for(j=4;j!=i;j--) { if(a<a[j]) { t=a; a=a[j]; a[j]=t; } } printf("\\nPlease input another number\\n\\n"); scanf("%d",&a[5]); for(i=0;i<=5;i++) { if(a<a[5]) { t=a[5]; for(j=5;j>i;j--) { a[j]=a[j-1]; } a=t; i=6; } } for(i=0;i<6;i++) printf("%d ",a);}这个程序中if(a<a[5]) { t=a[5]; for(j=5;j>i;j--) { a[j]=a[j-1]; } a=t; i=6;这些代码如何理解?
首先通过for(i=0;i<=4;i++) scanf("%d",&a); for(i=0;i<=4;i++) for(j=4;j!=i;j--) { if(a<a[j]) { t=a; a=a[j]; a[j]=t; } } 得到数组a,它右5个(下标分别为0~4)从大到小顺序排列的整数组成。然后输入第6个数也就是a[5]输入以后进行遍例,通过代码for(i=0;i<=5;i++) { if(a<a[5]) { t=a[5]; for(j=5;j>i;j--) { a[j]=a[j-1]; } a=t; i=6; } } 将a[5]插入到原来的数组a中,并且使得数组a依然保持从大到小的顺序。所以代码if(a<a[5]) { t=a[5]; for(j=5;j>i;j--) { a[j]=a[j-1]; } a=t; i=6; } 的作用就是帮助a[5]插入数组a正确位置,使得数组a从大到小排列。
提问者对答案的评价: |