第二次作业——交换两个整形变量的数值

Posted 张文静

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二次作业——交换两个整形变量的数值相关的知识,希望对你有一定的参考价值。

#include<stdio.h>

void swap(int *p,int *q)

{ int i;

i=*p;*p=*q;*q=i;

}

main()

{ int a=2,b=9,*p,*q;

P=&a;q=&b;

swap(p,q);

printf("a=%d b=%d",a,b);

return 0;

}

 

a=9 b=2
--------------------------------
Process exited after 0.0164 seconds with return value 0
请按任意键继续. . .

 

总结:1:此题只输出 a和b,不输出*p,*q。

        2:感觉自己指针还是不会运用,好多知识点还不会,需要查书才能编辑出来。

        3:自己打代码的时候太少,不实践,导致打的速度慢,还总是出现小毛病,比如符号错误。

二:void swap(int *p,int *q){int *m;*m=*p;*p=*q;*q=*m;}为何无法实现交换?

    1:swap函数中指针变量m并未赋值,即m指向的是内存中的一个未知区域,可能破坏系统的正常工作状况。所以不正确。

   2:指针编译时实行值传递,但此次传递的是地址。

三、void swap(int *p,int *q){int *m;m=p;p=q;q=m;}为何无法实现交换?

其采用了把改变值的变量作为参数,是错误的。应该用指针变量作为参数的办法,这样能够实现通过调用函数使变量的值发生变化。

  四、构建comp函数,实现两个整数比较,比较大的值通过返回值返回给main。要求comp的参数和返回值都是指针类型数据。

 

#include<stdio.h>
  int *comp(int *p,int *q)
  {
      return *p>*q? p:q;
 } 
  int main()
{
    int a,b,*m;
     scanf("%d%d",&a,&b);
     m=comp(&a,&b);
     printf("max=%d\\n",*m);
 }

5,1
max=5

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

1:comp函数较max函数比较简洁迅速

总结:

1,编程时不注意细节,有时忘一些标点等

2,指针有些知识还不理解,通过这次作业查漏补缺了,完善了知识枢纽

3,希望接下来复习以前的例题来更好的进步。

      

以上是关于第二次作业——交换两个整形变量的数值的主要内容,如果未能解决你的问题,请参考以下文章

第二次作业

交换两个整形变量的数值

交换两个整形变量的数值

交换两个整形变量的数值

交换两个整形变量的数值

第二次作业