电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

C语言程序设计(第3版)何钦铭 颜 晖 第8章 指针

C语言程序设计(第3版)何钦铭 颜 晖 第8章  指针_第1页
1/15
C语言程序设计(第3版)何钦铭 颜 晖 第8章  指针_第2页
2/15
C语言程序设计(第3版)何钦铭 颜 晖 第8章  指针_第3页
3/15
第 8 章指针【练习 8-1】如果有定义"intm,n=5,*p=&m;"与 m=n 等价的语句是 B。A.m=*p;B.*p=*&n;C.m=&n;D.m=**p;解答:A:p 是指向 m 的指针变量,所以*p 等价于 m。即 m 二 m。B:&n 是 n 的地址,*&n 是 n 的值,即把 n 的值赋给 p 指向的值 m。即 m 二 n。C:&n 是 n 的地址。即把 n 的地址赋给 m。D:**p 是指 p 指向的指针所指向的值,在此无意义。故选 B。【练习 8-2】调用函数求两个数的和与差:计算输入的两个数的和与差,要求自定义一个函数 sum_diff(floatopl,floatop2,float*psum,float*pdiff),其中opl 和 op2 是输入的两个数,*psum 和*pdiff 是计算得出的和与差。解答:#includevoidsum_diff(floatop1,floatop2,float*psum,float*pdiff);intmain(void){floatop1,op2,sum,diff;printf("Inputop1andop2:");scanf("%f%f",&op1,&op2);sum_diff(op1,op2,&sum,&diff);printf("%f+%f=%f;%f-%f=%f\n",op1,op2,sum,op1,op2,diff);return0;}voidsum_diff(floatop1,floatop2,float*psum,float*pdiff){*psum=op1+op2;*pdiff=op1-op2;}【练习 8-3】两个相同类型的指针变量能不能相加?为什么?解答:不能。因为指针变量是一种特殊的变量,指针变量的值存放的是所指向变量的地址,两个地址相加并不能保证结果为一个有效的地址值,因而在 C 语言中指针变量相加是非法的。【练习 8-4】根据表 8.2 所示,这组数据的冒泡排序其实循环到第 6 遍(即 n-2)时就已经排好序了,说明有时候并不一定需要 n-1 次循环。请思考如何改进冒泡排序算法并编程实现(提示:当发现一遍循环后没有数据发生交换,说明已经排好序了)。解答:设置一个标志变量 flag,进入一轮循环前设置为 0,在循环中有发生数据交换就改写 flag 值为 1。当该轮循环结束后检查 flag 值,如果变为 1 说明发生了数据交换,还没有排好序,如果为 0 说明没有发生交换,已经排好序。#includevoidbubble(inta[],intn);intmain(void){intn,i,a[8];printf("Entern(n<=8):");scanf("%d",&n);printf("Entera[%d]:",n);for(i=0;ia[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;flag=1;}if(flag==0)break;}}...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

C语言程序设计(第3版)何钦铭 颜 晖 第8章 指针

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部