54黑科技 发表于 2019-10-30 09:55:57

程序要求:随机输入三个数后,按从大到小顺序输出。 为什么我这个程序没有报错,却...

#include <stdio.h>

int main()
{
        void exchange(int *p1,int *p2,int *p3);
        int a,b,c,*pointer1,*pointer2,*pointer3;

        pointer1 = &a;
        pointer2 = &b;
        pointer3 = &c;

        printf("Please input three numbers :");
        scanf("%d,%d,%d",&a,&b,&c);

        exchange(pointer1,pointer2,pointer3);
        printf("%d > %d > %d\n",&a,&b,&c);
}

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

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

void swap(int *pp1,int *pp2)
{
        int *temp;
        temp = pp1;
        pp1 = pp2;
        pp2 = pp1;
}

54黑科技 发表于 2019-10-30 09:56:42

请各位大佬指教!谢谢!

bin554385863 发表于 2019-10-30 10:33:04

本帖最后由 bin554385863 于 2019-10-30 10:51 编辑

printf("%d > %d > %d\n",&a,&b,&c);//这里应该是printf("%d > %d > %d\n",a,b,c)或者printf("%d > %d > %d\n",*pointer1,*pointer2,*pointer3);

void swap(int *pp1,int *pp2)
{
      int *temp;
      temp = pp1;
      pp1 = pp2;
      pp2 = pp1;//这里应该是pp2 = temp。
}
void exchange(int *p1,int *p2,int *p3)
这个函数可以直接传入用&取变量地址,不用专门再定义指向变量的指针
如:
void exchange(&a,&b,&c)

jackz007 发表于 2019-10-30 10:51:26

本帖最后由 jackz007 于 2019-10-30 10:55 编辑

#include <stdio.h>

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) ;
}

int main()
{
      int a , b , c                           ;
      printf("Please input three numbers : ") ;
      scanf("%d%d%d" , & a , & b , & c)       ; // 三个数之间用空格隔开就可以了
      exchange(& a , & b , & c)               ;
      printf("%d > %d > %d\n", a , b , c)   ;
}

54黑科技 发表于 2019-10-30 14:22:52

bin554385863 发表于 2019-10-30 10:33
printf("%d > %d > %d\n",&a,&b,&c);//这里应该是printf("%d > %d > %d\n",a,b,c)或者printf("%d > %d > %d ...

好的,谢谢您!

54黑科技 发表于 2019-10-30 14:23:38

jackz007 发表于 2019-10-30 10:51


好的,谢谢您!
页: [1]
查看完整版本: 程序要求:随机输入三个数后,按从大到小顺序输出。 为什么我这个程序没有报错,却...