图6.7 例6.2 输入a和b两个整数,按先大后小的顺序输出a和b(用指针变量处理)。 解此题的思路是: 设两个指针变量p1和p2,使它们分别指向a和b。使p1指向a和b中的大者,p2指向小者,顺序输出*p1,*p2就实现了按先大后小的顺序输出a和b。按此思路编写程序如下: #include <iostream> using namespace std; int main( ) { int *p1,*p2,*p,a,b; cin>>a>>b; //输入两个整数 p1=&a; //使p1指向a p2=&b; //使p2指向b if(a<b) //如果a<b就使p1与p2的值交换 {p=p1;p1=p2;p2=p;} //将p1的指向与p2的指向交换 cout<<″a=″<<a<<″ b=″<<b<<endl; cout<<″max=″<<*p1<<″ min=″<<*p2<<endl; return 0; } 运行情况如下: 4578↙ a=45 b=78 max=78 min=45 输入a的值45,b的值78,由于a<b,将p1的值和p2的值交换,即将p1的指向与p2的指向交换。交换前的情况见图6.8(a),交换后的情况见图6.8(b)。 请注意,这个问题的算法是不交换整型变量的值,而是交换两个指针变量的值。

评论