第二次作业

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int swap(int *m1,int *m2);
    int a,b;
    int *pointer_1,*pointer_2;
    scanf("%d,%d",&a,&b);
    pointer_1=&a;pointer_2=&b;
    if(a<b) swap(pointer_1,pointer_2);
    printf("\n%d,%d\n",*pointer_1,*pointer_2);
    system("pause");
 }
 int swap(int *m1,int *m2)
 {
     int temp;
     temp=*m1;
     *m1=*m2;
     *m2=temp;
  }

结果如下:

4 36


36,4
请按任意键继续. . .

 

(2)对于    void swap(int *p,int *q) {int *m; *m=*p; *p=*q; *q=*m;};

这个主要是形参和实参没有搞明白,p和q的地址在swap里面代表的是指针的值,仅仅是把指针指向了另外一个地方,并不会修改指针指向的内容, 应改为:

void swap(int *p,int *q)

{

int m;

m=*p;

*p=*q;

*q=m

};

(3)  对于 void swap(int *p,int *q) {int m; m=p; p=q; q=m;};

函数中交换的是指针而不是指针的内容;指针是一时性的,不产生永久效果,只有让指针指向的内容发生交换才可达到目的。改如下:

 void swap(int *p,int *q) 

{

int m;

m=*p;

*p=*q;

*q=m;

};

 

(4)comp 函数求最大值:

 

#include<stdio.h>
int main()
{
    void comp(int *x,int *y)
    int a,b,max,*p,*q;
    scanf("%d,%d",&a,&b);
    p=&a;q=&b;
    max=comp(p,q);
    printf("最大的数=%d\n",max);
}
   void comp(int *x,int *y)
{
   int t;
   if(*x>*y)  t=*x;
   else  t=*y;
}

运行结果如下:

1251
最大的数=51

--------------------------------
Process exited after 5.398 seconds with return value 0
请按任意键继续. . .

 

posted @ 2017-03-22 17:52  闫禹  阅读(144)  评论(0编辑  收藏  举报