C语言利用指针和函数,实现两个功能,输入两个数a,b,按从大到小顺序输出;输入三个数a,b,c,按照从大到小顺序输出;

对于指针类型的,定义函数,先取得指针的地址,然后在对地址里面的值进行交换,不能直接对地址交换,这是错误的,这样得不到地址里面的值。

#include <stdio.h>
#include <stdlib.h>




void swap_max( int *p1, int *p2);
void main()
{

    int *p1,*p2;
    int a,b;
    printf("please input two number:\n");
    scanf("%d %d",&a,&b);
    p1 = &a;
    p2 = &b;

    if(a<b)
    {
      swap_max(p1,p2);
    }

    printf("max = %d,min = %d \n",a,b);
}

void swap_max(int *p1,int *p2)

{
          int p;

          p = *p1;
        *p1 = *p2;
        *p2 = p;



}

效果

交换地址

#include <stdio.h>
#include <stdlib.h>




void main()
{

    int *p1,*p2,*p;
    int a,b;
    printf("please input two number:\n");
    scanf("%d %d",&a,&b);
    p1 = &a;
    p2 = &b;

    if(a<b)
    {
      p = p1;
      p1 = p2;
      p2 = p;

    }

    printf("max = %d,min = %d \n",a,b);
}

三个数比较大小

#include <stdio.h>
#include <stdlib.h>



void main()
{
    void swap(int *p1,int *p2);
    void exchange(int *p1,int *p2,int *p3);

    int *p1,*p2,*p3,temp;
    int a,b,c;
    printf("please input three numbers:\n");
    scanf("%d %d %d",&a,&b,&c);
    p1 = &a;
    p2 = &b;
    p3 = &c;

    exchange(p1,p2,p3);

    printf("%d>%d>%d \n",*p1,*p2,*p3);
}

void swap(int *p1,int *p2)

{
        int temp;

        temp = *p1;
        *p1 = *p2;
        *p2 = temp;
}



void exchange(int *p1,int *p2,int *p3)
{

    if(*p1<*p2)
    {
      swap(p1,p2);

    }
    if(*p1<*p3)
    {
      swap(p1,p3);
    }
    if(*p2<*p3)
    {
      swap(p2,p3);
    }

}

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值