第二次作业

#include<stdio.h>
int main()
{
    void swap(int *p1,int *p2);
    int a,b;
    int *p1,*p2;
    scanf("%d ,%d",&a,&b);
    p1=&a;
    p2=&b;
    swap(p1,p2);
    printf("%d,%d",a,b);
 }
 void swap(int *p1,int *p2)
 {int t; 
  t=*p1;
 *p1=*p2; 
 *p2=t; 
 }

 

 

总结:

swap函数需要调用,

a,b需要定义为整形变量,

符号需要使用半角符号。

截图中的注释在插入代码后显示成了乱码,所以我把插入代码时把注释删除了

 

#include<stdio.h>
int main()
{
    int comp(int *p1,int *p2);
    int a;int b;
    int *p1;int *p2;
    scanf("%d,%d",&a,&b);
    printf("%d\n",comp(&a,&b));
}
int comp(int *p1,int *p2)
{
    if(*p1>*p2)
    return *p1;else return *p2;
}

 

 

总结;

定义两个整形变量a,b,定义两个指针p1,p2,定义一个comp函数,如果指针p1指向的值大于指针p2指向的值,返回p1,反之返回p2,最后输出调用函数后得到的值

 

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

答:*m是指针变量们所指向的变量,但m中并无确定的值,它的值是不可预见的,因此m所指向的单元也是不可预见的,所以对*m的赋值有可能给一个存储着重要数据的存储单元赋值,这样就会破坏系统的正常工作状况,应将*p的值赋给一个整形变量,用整形变量作为临时辅助变量实现*p与*q的交换。

 

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

答:此程序只将变量的地址进行了交换,没将变量的值进行交换,所以输出的值与原来相同。

posted @ 2017-03-22 14:36  三途河岸  阅读(145)  评论(0编辑  收藏  举报