题目:

  1. 输入3个整数,要求按由小到大的顺序输出。
  2. 使用指针方法处理。

分析:

使用数组接受数据,然后利用解引用指针来比较大小即可

代码实现:

#define _CRT_SECURE_NO_WARNINGS 1
#define SIZE 3

#include <stdio.h>
#include <assert.h>

void Swap(int* p, int sz)
{
	int tem = 0;

	//对比第1个和第2个数,完成后小的排最前
	if (*(p + 1) < *p)
	{
		tem = *p;
		*p = *(p + 1);
		*(p + 1) = tem;
	}
	//对比第2和第3个数,完成后大的排最后
	if (*(p + 2) < *(p + 1))
	{
		tem = *(p + 1);
		*(p + 1) = *(p + 2);
		*(p + 2) = tem;
	}

	//结果上面2轮排序,现在最大的数已经在尾部
	// 只需要再比较1、2位置的数即可完成排序
	if (*(p + 1) < *p)
	{
		tem = *p;
		*p = *(p + 1);
		*(p + 1) = tem;
	}
}

int main()
{
	int input[SIZE] = { 0 };
	int* p = input;
	int i = 0;

	//输入
	for(i = 0; i < SIZE; i++)
	{
		scanf("%d", &input[i]);

	}

	//排序
	Swap(input, SIZE);

	//输出
	for (i = 0; i < SIZE; i++)
	{
		printf("%d ", input[i]);
	}

	return 0;
}