1,三个整数排列,从小到大排序后输出。
样例输入:20,7,33
样例输出:7,20,33
1.第一次输出
#include<stdio.h>
#include<stdlib.h>
int main(){
int a,b,c;
int s;
scanf("%d%d%d",&a,&b,&c);
if(a>b){
s=a;
a=b;
b=s;
}
if(c<a){
printf("%d %d %d\n",c,a,b);
}
if(c>b){
printf("%d %d %d\n",a,b,c);
}
else{
printf("%d %d %d\n",a,c,b);
}
system("pause");
return 0;
不足是:完全没有考虑到输入的三个数一样大小时候的情况。
2.参照书中的例子
#include<stdio.h>
#include<stdlib.h>
int main(){
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
if(c<=b&&b<=a)printf("%d %d %d\n",c,b,a);
else if(a<=b&&b<=c)printf("%d %d %d\n",a,b,c);
else if(a<=c&&c<=b)printf("%d %d %d\n",a,c,b);
else if(b<=c&&c<=a)printf("%d %d %d\n",b,c,a);
else if(b<=a&&a<=c)printf("%d %d %d\n",b,a,c);
else if(c<=a&&a<=b)printf("%d %d %d\n",c,a,b);
system("pause");
return 0;
}
一开始程序的方向逻辑没有清楚,实际,应该将a,b,c三个数的集中排列情况列出,而后依次排出。中间有出过错,原因是因为if(b<c&&a<c)printf("%d %d %d\n",b,c,a);程序运行到这里好像就停止了,于是没有输出。
第一次改进:就是上面那个错误的纠正;
第二次改进:因为单纯的大于小于无法判定输入为“1 1 1”时候的情况,于是在判定条件处加了“=”等于号。---------仍然不能正确输出1 1 1 ,结果是输出了6个111
第三次改进:在if的前面加入了else,输出结果正确。
结论:要全面考虑
3.比较简单的程序
#include<stdio.h>
#include<stdlib.h>
int main(){
int a,b,c,t;
scanf("%d%d%d",&a,&b,&c);
if(a>c){
t=a;
a=c;
c=a;
}
if(b<a){
t=a;
a=b;
b=t;
}
if(c<b){
t=b;
b=c;
c=t;
}
printf("%d %d %d\n",a,b,c);
system("pause");
return 0;
}