第二次作业
Posted 白璐璐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二次作业相关的知识,希望对你有一定的参考价值。
一:构建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的参数和返回值都是指针类型数据
在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函数的使用使程序变得简洁
在不了解这个函数的情况下,自己来弄这个东西,理解起来不容易
最后花了一个小时弄懂了觉得还是很满意的。
以上是关于第二次作业的主要内容,如果未能解决你的问题,请参考以下文章