全部版块 我的主页
论坛 数据科学与人工智能 IT基础 C与C++编程
674 0
2025-11-28

输入三个整数,使用指针与函数实现从小到大排序输出

本题要求输入三个整数,通过运用指针和函数的相关知识,将这三个数字按升序排列并输出。以下是一种不借助中间变量、结合指针操作的实现思路。

核心思想是直接通过指针访问和比较变量的地址值,并在必要时交换指针所指向的内容,从而完成排序。该方法避免了传统方式中使用临时变量进行数值交换的过程,更加体现指针对内存操作的灵活性。

void Sort(int a[])
{
	int* p1 = a;

	int i = 0;
	int j = 0;
	for (i = 0; i <= 1; i++)
	{
		for (j = 1; j <= 2 - i; j++)
		{
			if (*(p1 + i) > *(p1 + i + j))
			{
				*(p1 + i) = *(p1 + i) ^ *(p1 + i + j);
				*(p1 + i + j) = *(p1 + i) ^ *(p1 + i + j);
				*(p1 + i) = *(p1 + i) ^ *(p1 + i + j);
			}
		}
	}

	for (i = 0; i < 3; i++)
	{
		printf("%d ", *(p1 + i));
	}
}

int main()
{
	int a[3] = { 0 };
	int* p = a;
	scanf("%d %d %d", p, p+1, p+2);

	Sort(a);

	return 0;
}

具体实现中,可以定义一个排序函数,传入三个整型变量的指针,在函数内部通过多重条件判断,利用指针解引用的方式直接修改原始变量的值,最终实现由小到大的输出顺序。

虽然此方法在逻辑上稍显复杂,但有助于深入理解指针与函数参数传递机制。若读者有更简洁高效的方案,也欢迎交流探讨。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群