输入4个整数,要求按由大到小的顺序输出。
当然是个很简单的题目了,使我想起了大一学Pascal讲到这一问题时,刚开始也是用的交换法做,记得当时还想了个实例,就是交换法时要用到一个临时空间的问题,就像要交换两个杯子中的水一样,需要一个空杯子,临时存放杯子1中的水,将杯子2水倒入杯子1,再将临时杯中的水倒入杯子2完成交换,所以喜欢用cup做这个变量。再回顾回顾……
#include <stdlib.h>
#include <stdio.h>
int main()
{
int a, b, c, d, cup;
printf("Input 4 numbers:\n");
scanf("%d %d %d %d", &a, &b, &c, &d);
if (a<b)
{cup = a; a = b; b = cup;}
if (a<c)
{cup = a; a = c; c = cup;}
if (a<d)
{cup = a; a = d; d = cup;}
if (b<c)
{cup = b; b = c; c = cup;}
if (b<d)
{cup = b; b = d; d = cup;}
if (c<d)
{cup = c; c = d; d = cup;}
printf("%d %d %d %d \n", a, b, c, d);
system("PAUSE"); //DEV-C++里默认添的东西,有待研究
return 0;
}
--------------------------------------
看来还是要多练啊,开始时scanf中的参数竟然没加 &,还有if复合语句竟然写成了
{cup = a, a = b, b = cup};
语句间分号用了逗号,最后一个语句还没有,复合语句外还加了个分号,无语……
记得有挺多排序法来着,都快忘的差不多了,"据说"用循环,数组做会更好,看到那的时候再练,待续……
#################################################################################
if 语句中的三个赋值表达式是可以用逗号分开的,即三条赋值语句相当于if语句下的一条逗号表达式语句
逗号表达式:http://blog.programfan.com/article.asp?id=10142
#include <stdio.h>
int main()
{
int a, b, c, d, cup;
printf("Input 4 numbers:\n");
scanf("%d %d %d %d", &a, &b, &c, &d);
if (a<b) cup = a, a = b, b = cup;
if (a<c) cup = a, a = c, c = cup;
if (a<d) cup = a, a = d, d = cup;
if (b<c) cup = b, b = c, c = cup;
if (b<d) cup = b, b = d, d = cup;
if (c<d) cup = c, c = d, d = cup;
printf("%d %d %d %d \n", a, b, c, d);
return 0;
}
这个Blog的编辑器有点问题,修改时原代码会丢失一些东西,特别是本文,修改时要注意!
评论