降序排序(3)
题目要求:
输入多组任意三个数进行降序排序。
例如:
输入: 2 3 6
输入: 6 3 2
算法分析:
显然,三个数进行比较大小,两两进行比较,就可以确定顺序。
例如;a b c三个数,
第一次比较:若a
第二次比较:若b 第三次比较:若a 知识点: 1.标准输入函数scanf()和输出函数printf(); 2.if(){}控制结构 3.多组输入的处理方法:while(scanf("%d",&n)!=EOF){}或while(~scanf("%d",&n)){} 代码: #include int main(){ int a,b,c; while(~scanf("%d %d %d",&a,&b,&c)){ int t; if(a t=a; a=b; b=t; } if(a t=a; a=c; c=t; } if(b t=b; b=c; c=t; } printf("%d %d %d\n",a,b,c); } return 0; } 题目要求: 输入多组任意5个数进行降序排序。 例如: 输入: 1 3 5 7 9 输入: 9 7 5 3 1 算法分析:(注:这里应用选择排序法进行排序处理) 选择排序法原理:每轮循环选出最大值,放入当前循环的最前面的位置。 例如:1 3 5 7 9 第1次循环:从上述五个数中找出最大数9,存入数组a[0]; 第2次循环:从剩余的4个数中找出最大数7,存入数组a[1]; 第3次循环:从剩余的3个数中找出最大数5,存入数组a[2]; 以此往复。 知识点: 1.标准输入函数scanf()和输出函数printf(); 2.if()控制结构 3.for()循环语句 4.多组输入的处理方法:while(1){} 代码: #include int main(){ while(1){ int a[5]={0}; int i,j; //输入需要比较数据 for(i=0;i<5;i++){ scanf("%d",&a[i]); } //选择排序法 for(i=0;i<5;i++){ //用于取单个数与后边的数据进行比较 for(j=i+1;j<5;j++){ if(a[j]>a[i]){ int t; t=a[i]; a[i]=a[j]; a[j]=t; } } } //输出 for(i=0;i<5;i++){ printf("%d ",a[i]); } printf("\n"); } return 0; } _______________________END_______________________拓展:如果有多个数需要从大到小输出。如10个整数,应该如何编写程序呢?