题目:
- 输入3个整数,要求按由小到大的顺序输出。
- 使用指针方法处理。
分析:
使用数组接受数据,然后利用解引用指针来比较大小即可
代码实现:
#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;
}