第二次作业

一:构建swap函数,实现两个整型变量数值的交换,且使用指针类型的数据作为swap函数的参数。

#include<stdio.h>
void swap(int *p,int *q)
{ int m;
m=*p; *p=*q; *q=m;
}
main()
{ int a=6,b=7,*p,*q;
   p=&a; q=&b;
   swap(p,q);
 printf("a=%d b=%d",a,b);
 return 0;
}

 

总结:

1:因为上课已经编过类似的作业,所以现在理解的比以前好的多,更加熟练

2:swap函数可以起到交换两个变量的值的作用,*p*q作为形参在函数调用时,将实参传递给形参,实现数的交换

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

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

 总结: 蹦出程序错误,无法运行

   *m是指针变量m所指向的变量,m没有确定的值,m的地址是随机的,进行的传递应该是值传递,不是指针的传递

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

#include<stdio.h> 
void swap(int *p,int *q)
{int *m;
   m=p;
   p=q;
   q=m;}
int main()
 {
     int a,b;
     scanf("%d,%d",&a,&b);
     swap(&a,&b);
     printf("a=%d b=%d\n",a,b);
     return 0;
 }
7,8
a=7 b=8

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

  

 总结: 没有运行错误,但熟知并没有发生变化
在swap函数中交换了指针的地址,没有将所储存的值进行交换,所以参数的地址和值不发生变化,从而没有影响到主函数中a,b的值。
感受:开始在理解的时候,感觉挺困难的,把自己绕进去好几次,做完第二题第三题就好多了。


四:构建comp函数,实现两个整数比较,比较大的值通过返回值返回给main。要求comp的参数和返回值都是指针类型数据
不知道comp函数是什么,经过查找
comp函数从小到大该如何排序呢?
从大到小排序的comp函数可以这样写:intcomp(inta,intb){returna b;//在两元素相同时一定要返回0或者false}
下面是10个数从大到小排序的代码:
#includealgorithm
#includeiostreamusingnamespacestd;
intcomp(inta,intb)
{return a b;//如果ab则返回1,否则返回0}
main()
{inta,i;
for(i0;i10;i++)cina;
sort(a,a+10,comp);
for(i0;i10;i++)couta;}
在更多情况下,我们不仅对一个特征进行排序,而是多个特征
#include<stdio.h>
int comp(int *p,int *q)
{
    if(*p>*q) //运用if语句,比较两数大小 
        return *p;
    else
        return *q; 
}
int main(void)
{
    int p,q,*a,*b;
    scanf("%d %d",&p,&q);
    a = &p; //将p的地址赋值给a 
    b = &q;//将q的地址赋值给b 
    printf("MAX=%d\n",comp(a,b));
}

 

7 8
MAX=8

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

  总结:相对于上学期所学的比较大小的方法,comp函数的使用使程序变得简洁

     在不了解这个函数的情况下,自己来弄这个东西,理解起来不容易

     最后花了一个小时弄懂了觉得还是很满意的。

posted @ 2017-03-22 17:50  白璐璐  阅读(239)  评论(0编辑  收藏  举报