本关任务: 从键盘输入任意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);
}