指针实现从键盘输入3个整数,按从小到大的顺序输出

本关任务: 从键盘输入任意3个整数给a,b,c变量,用算法实现按从小到大的顺序存在变量a,b,c中,然后输出(指针实现)。

相关知识

为了完成本关任务,你需要掌握: 1.指针变量的定义、初始化和引用; 2.指针变量做函数参数; 3.交换的算法; 4.实参和形参之间的参数传递方式。

指针变量的定义和初始化

指针变量的一般定义形式如下: 类型说明符 *指针变量名; 其中,“类型说明符”表示本指针变量所指向的变量的数据类型,“指针变量名”即为定义的指针变量名标识符。 例如有定义“int *p1;”,表示p1是一个指针变量,它的值是某个整型变量的地址。 又如: short *k, *w; // 定义指针变量k,w k = &a; w = &b; // 取变量a,b地址分别赋给k,w

指针变量的引用

引用指针变量的一般形式为: *指针变量名 如果有:p1=&a; p2=&b;以下两种方式输出结果一样: printf("%d, %d\n",a,b); printf("%d, %d\n",*p1,*p2);

指针变量做函数参数

见教材

实参和形参之间的参数传递方式

见教材

编程要求

1.编写函数swap(int *p1,int *p2),实现两个变量值的交换; 2.编写主函数,根据已有的代码提示,在编辑器补充代码,实现本关的功能。

测试说明

输入: 15,14,13 输出: 13,14,15

#include <stdio.h>
swap(int *p1,int *p2)
{
	int p;
	p=*p1;
	*p1=*p2;
	*p2=p;
}
main( )
{
	int n1,n2,n3;
	int *p1=&n1,*p2=&n2,*p3=&n3;
	scanf("%d%d%d",&n1,&n2,&n3);
	if(n1>n2) swap(p1,p2);
	if(n1>n3) swap(p1,p3);
	if(n2>n3) swap(p2,p3);
	printf("%d,%d,%d\n",n1,n2,n3);
}

Guess you like

Origin blog.csdn.net/qq_46069852/article/details/121277828