【题目描述】
输入4个整数,按从小到大顺序输出。如输入4 3 2 1,输出1 2 3 4.
输入,4个整数,用空格隔开,输出4个有序整数,用一个空格隔开。
注意:不使用数组,不使用库函数排序。
【输入输出样例】
输入:
4 3 2 1
输出:
1 2 3 4
本题思路:先找出最小的,然后将其值设置为最大,再找出最大的,然后再设置为最大......
操作很重复,所以写了一个函数来解决,具体留存见注释,懒得写了
本周其它题目较简单,不再写
#include<stdio.h>
#define MAX 0x7fffffff
int change(int* n1,int* n2,int* n3,int* n4){
int k = -1;
int res;
if((*n1) < (*n2)){
res = (*n1);
k = 1;
}else{
res = (*n2);
k = 2;
}
if(res >= (*n3)){
res = (*n3);
k = 3;
}
if(res >= (*n4)){
res = (*n4);
k = 4;
}
switch(k){
case 1 : (*n1) = MAX; break;
case 2 : (*n2) = MAX; break;
case 3 : (*n3)= MAX; break;
case 4 : (*n4)= MAX; break;
}
return res;
}
int main()
{
int n1, n2, n3, n4;
scanf("%d%d%d%d",&n1,&n2,&n3,&n4);
int r1, r2, r3, r4;
// 先求出最小的一个 ,同时将其置为无穷大
// int k = -1;
// if(n1 <= n2){
// r1 = n1;
// k = 1;
// }else{
// r1 = n2;
// k = 2;
// }
// if(r1 >= n3){
// r1 = n3;
// k = 3;
// }
// if(r1 >= n4){
// r1 = n4;
// k = 4;
// }
// switch(k){
// case 1 : n1 = MAX; break;
// case 2 : n2 = MAX; break;
// case 3 : n3 = MAX; break;
// case 4 : n4 = MAX; break;
// }
// k = -1;
//
// if(n1 <= n2){
// r2 = n1;
// k = 1;
// }else{
// r2 = n2;
// k = 2;
// }
// if(r2 >= n3){
// r2 = n3;
// k = 3;
// }
// if(r2 >= n4){
// r2 = n4;
// k = 4;
// }
//
// switch(k){
// case 1 : n1 = MAX; break;
// case 2 : n2 = MAX; break;
// case 3 : n3 = MAX; break;
// case 4 : n4 = MAX; break;
// }
r1 = change(&n1,&n2,&n3,&n4);
r2 = change(&n1,&n2,&n3,&n4);
r3 = change(&n1,&n2,&n3,&n4);
r4 = change(&n1,&n2,&n3,&n4);
printf("%d %d %d %d",r1,r2,r3,r4);
return 0;
}