正文

[021] 四个数排序2006-02-18 15:18:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/wentao/10226.html

分享到:

输入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的编辑器有点问题,修改时原代码会丢失一些东西,特别是本文,修改时要注意!

阅读(4450) | 评论(2)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册