下载此文档

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


文档分类:IT计算机 | 页数:约18页 举报非法文档有奖
1/18
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/18 下载此文档
文档列表 文档介绍
--------------------------校验:_____________-----------------------日期:_____________C语言程序设计(第3版)何钦铭-颜-晖-第8章--指针第8章指针【练****8-1】如果有定义”intm,n=5,*p=&m;”与m=n等价的语句是B。m=*p;B.*p=*&n;=&n;=**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(floatop1,floatop2,float*psum,float*pdiff),其中op1和op2是输入的两个数,*psum和*pdiff是计算得出的和与差。解答:voidsum_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】解答:设置一个标志变量flag,进入一轮循环前设置为0,在循环中有发生数据交换就改写flag值为1。当该轮循环结束后检查flag值,如果变为1说明发生了数据交换,还没有排好序,如果为0说明没有发生交换,已经排好序。voidbubble(inta[],intn);intmain(void){intn,i,a[8];printf("Entern(n<=8):");scanf("%d",&n);printf("Entera[%d]:",n);for(i=0;i<n;i++)scanf("%d",&a[i]);bubble(a,n);printf("Aftersorted,a[%d]=",n);for(i=0;i<n;i++)printf("%3d",a[i]);return0;}voidbubble(inta[],intn){inti,j,temp,flag;for(i=1;i<n;i++){flag=0;for(j=0;j<n-i;j++)if(a[j]>a[j+1]){temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; flag=1;}if(flag==0)break;}}【练****8-5】重做例8-9,要求使用选择排序算法。解答:voidbubble(inta[],intn);intmain(void){inti,n,a[8];printf("Entern(n<=8):");scanf("%d",&n);printf("Entera[%d]:",n);for(i=0;i<n;i++)scanf("%d",&a[i]);bubble(a,n);printf("Aftersorted,a[%d]=",n);for(i=0;i<n;i++)printf("%3d",a[i]);return0;}voidbubble(inta[],intn){inti,j,temp,index;for(i=0;i<n-1;i++){index=i;for(j=i+1;j<n;j++)if(a[j]<a[index])index=j;temp=a[i]; a[i]=a[index]; a[index]=temp; }}【练****8-6】在使用scanf()函数时,输入参数列表需要使用取地址操作符&,但当参数为字符数组名时并没有使用,为什么?如果在字符数组名前加上取地址操作符&,会发生什么?解答:因为字符数组名的值是一个特殊的固定地址,可以看作是常量指针,因此不需要再使用取地址符来获取该数组的地址。如果在字符数组名str前加上取地址操作符&,那么对其取地址&str可以看做是这个数组的第一个元素的地址,由于数组地址和数组第一个元素的地址相

C语言程序设计(第3版)何钦铭-颜-晖-第8章--指针 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数18
  • 收藏数0 收藏
  • 顶次数0
  • 上传人漫山花海
  • 文件大小50 KB
  • 时间2019-11-13