题目要求:
输入多组任意三个数进行降序排序。
例如:
输入: 2 3 6
输入: 6 3 2
算法分析:
显然,三个数进行比较大小,两两进行比较,就可以确定顺序。
例如;a b c三个数,
第一次比较:若a<b,则b a c
第二次比较:若b<c,则c a b
第三次比较:若a<b,则c b a
知识点:
1.标准输入函数scanf()和输出函数printf();
2.if(){}控制结构
3.多组输入的处理方法:while(scanf("%d",&n)!=EOF){}或while(~scanf("%d",&n)){}
代码:
#include <stdio.h>
int main(){
int a,b,c;
while(~scanf("%d %d %d",&a,&b,&c)){
int t;
if(a<b){
t=a;
a=b;
b=t;
}
if(a<c){
t=a;
a=c;
c=t;
}
if(b<c){
t=b;
b=c;
c=t;
}
printf("%d %d %d\n",a,b,c);
}
return 0;
}
拓展:如果有多个数需要从大到小输出。如10个整数,应该如何编写程序呢? |
题目要求:
输入多组任意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 <stdio.h>
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_______________________