第二次作业


 

 1.

1,2
2,1

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

 

#include<stdio.h>
 main()
{void swap(int*p1,int*p2);//声明函数
int a,b;//定义整型变量a,b
int*c,*d;//定义整型指针变量c,d
scanf("%d,%d",&a,&b);//输入两个数
c=&a;//将指针指向变量a
d=&b;//将指针指向变量b
swap(c,d);//调用函数
printf("%d,%d\n",a,b);}//打印
void swap(int*p1,int*p2)//定义函数
{int temp;//定义整型变量temp
temp=*p1;//将指针指向的变量传给p1
*p1=*p2;//将指针p1指向的变量传给指针p2所指向的变量 
*p2=temp;//将temp传给指针p2所指的变量 
}

 

 

总结:这个函数用的是整型指针变量定义形参,从而实行调用函数,与用整型变量相比较为简便,在输入时的声明函数有逗号,定义函数没有逗号。输入scanf时注意&。

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

 

#include<stdio.h>

void swap(int *p1,int *p2)
{
    int *temp;
 *temp=*p1;
    *p1=*p2;
    *p2=*temp; 
 } 

*p1就是a,是整形变量。而*temp是指针变量temp所指向的变量。但temp未进行初始化。对*temp赋值就给了一个其他数据的数,不能工作了。

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

#include<stdio.h>

void swap(int p1,int p2)
{
    int temp;
    temp=p1;
    p1=p2;
    p2=temp; 
 } 

在调用函数时,a值传给p1,b值给p2,执行完后p1与p2互换,未影响a与b的值。由于单向传递的值传递方式,不能实现。

4.

#include<stdio.h>
int *comp(int *p,int *q)//定义函数
{
    if(*p>*q)//运用条件判断
    {
        return p;//返回p值
    }
    else 
    {
        return q;//否则,返回q值
    }
}
int main()
{   int *c,*p,*q,a,b;//定义指针c,p,q,定义整形a,b
   scanf("%d,%d",&a,&b);//输入两数
    p=&a;//将指针指向a
    q=&b;//将指针指向b
    c=comp(p,q);//调用函数赋给c
    printf("%d\n",*c);//打印
    return 0;
 }
2,3
3

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

 

 总结:运用指针很方便,广泛,在使用这一程序时,较以前学过的更加清晰,在写时注意&。

posted on 2017-03-22 13:21  秋夜里的萤火虫  阅读(228)  评论(1编辑  收藏  举报

导航