解题思路:
根据冒泡排序,四个数排三次;

从第一个数开始,每一个数与它的后一个数比较,大于后一个数则交换;每次交换后最大的数就会在最后一个

比如 :5 4 3 2

第一次:4 3 2 5

第二次:3 2 4

第三次:   2 3
注意事项:
          a = a + b;
        b = a - b;
        a = a - b;

这种交换方式在有些情况下容易产生逻辑错误,请酌情使用,比如在数组中交换时,详情见排序问题<2>

#include <iostream>
using namespace std;

int main()
{
    int a, b, c, d;

    cin >> a
    >> b
    >> c
    >> d;

/*---------------------------------------*/
    if ( a > b )
    {
        a = a + b;
        b = a - b;
        a = a - b;
    }


    if ( b > c )
    {
        b = b + c;
        c = b - c;
        b = b - c;
    }

    if ( c > d )
    {
        c = c + d;
        d = c - d;
        c = c - d;
    }
/*---------------------------------------*/
    if ( a > b )
    {
        a = a + b;
        b = a - b;
        a = a - b;
    }

    if ( b > c )
    {
        b = b + c;
        c = b - c;
        b = b - c;
    }
/*---------------------------------------*/
    if ( a > b )
    {
        a = a + b;
        b = a - b;
        a = a - b;
    }
/*---------------------------------------*/
    cout    << a
        << " "
        << b
        << " "
        << c
        << " "
        << d;
}


综合:

#include <iostream>
using namespace std;

int main()
{
    int a[4];
    for ( int i = 0; i < 4; i++ )
        cin >> a[i];

    for ( int i = 0; i < 4; i++ )
    {
        for ( int j = 0; j < 4 - i - 1; j++ )
        {
            if ( a[j] > a[j + 1] )
            {
                a[j]        = a[j] + a[j + 1];
                a[j + 1]    = a[j] - a[j + 1];
                a[j]        = a[j] - a[j + 1];
            }
        }
    }

    for ( int i = 0; i < 3; i++ )
        cout << a[i] << " ";
    cout << a[3];
}


点赞(15)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 3 条评论

Christ 6年前 回复TA
@Abit 这指针出神入化
Manchester 7年前 回复TA
@Abit 谢谢大佬提醒
Abit 7年前 回复TA
#include <stdio.h>

void jiaohuan(int *a,int *b)
{
	if(*a>*b)    *a=*b+*a-(*b=*a);
}

int main(void)
{
	int a1=5,b1=4;
	jiaohuan(&a1,&b1);
	printf("%d  %d",a1,b1);
	
}