输入三个整数,要求从大到小的顺序向他们输出,用函数实现。
本代码使用到了指针和函数嵌套。
调用指针做函数ex,并嵌套调用指针函数exx在函数ex中。(代码在下面哦!)
一、关于函数 ex
-
这个函数接受三个指针参数 int *p1 、 int *p2 和 int *p3 ,分别指向三个整数。
-
函数内部首先声明了另一个函数 exx ,这个函数接受两个指针参数,用于交换两个整数的值。
-
接着通过三个条件判断来确定三个整数的大小关系并进行调整:
如果 *p1 所指向的整数小于 *p2 所指向的整数,就调用 exx(p1, p2) ,将这两个整数的值进行交换。如果 *p1 所指向的整数小于 *p3 所指向的整数,就调用 exx(p1, p3) ,将第一个整数和第三个整数的值进行交换。如果 *p2 所指向的整数小于 *p3 所指向的整数,就调用 exx(p2, p3) ,将第二个整数和第三个整数的值进行交换。
二、关于函数 exx
-
这个函数接受两个指针参数 int *p111 和 int *p222 。
-
函数内部定义了一个整数变量 temp ,用于临时存储一个整数的值。
-
首先将 *p111 的值(即第一个指针所指向的整数)赋给 temp 。
-
然后将 *p222 的值赋给 *p111 ,实现第一个指针所指向的整数变为第二个指针所指向的整数的值。
-
最后将 temp 的值赋给 *p222 ,实现第二个指针所指向的整数变为原来第一个指针所指向的整数的值,从而完成两个整数的交换。
代码如下:
#include <stdio.h>
int main()
{
void ex(int *p1,int *p2,int *p3);
int a,b,c;
int *p11,*p22,*p33;
printf("please enter three interger number:");
scanf("%d,%d,%d",&a,&b,&c);
p11=&a;
p22=&b;
p33=&c;
ex(p11,p22,p33);
printf("max to min three to :%d,%d,%d\n",*p11,*p22,*p33);
}
void ex(int *p1,int *p2,int *p3)
{
void exx(int *p111,int *p222);
if(*p1<*p2) exx(p1,p2);
if(*p1<*p3) exx(p1,p3);
if(*p2<*p3) exx(p2,p3);
}
void exx(int *p111,int *p222)
{
int temp;
temp=*p111;
*p111=*p222;
*p222=temp;
}