《C++程序设计1》实验6参考程序与答案6.1、填空题1.一个指针类型的对象占用内存的__4__个字节的存储空间。#includeiostream.hvoidmain(){inta,*p=&a;coutsizeof(p)endl;}2.一个指针指向一个数据对象,它保存着该数据对象的__地址__,若数据对象为DataType类型,则该指针的类型为_DataType_。3.若要把一个整形指针p转换为字符指针,则采用的强制转换表达式为_(char*)p_。4.假定一个数据对象为int*类型,则指向该对象的指针的类型为_int**_。5.假定p是一个指向整数对象的指针,则用__*p__表示该整数对象,用__&p__表示指针变量p的地址。6.假定p是一个指针,则*p++运算首先访问__p指向的对象__,然后使_p__的值增1。7.假定p是一个指针,则(*p)++运算首先访问__p指向的对象__,然后使__该对象__的值增1。8.假定p所指对象的值为25,p+1所指对象的值为42,则*p++的值为_25_。9.假定p所指对象的值为25,p+1所指对象的值为42,则*++p的值为_42_。10.假定p所指对象的值为25,p+1所指对象的值为42,则(*p)++运算后,p所指对象的值为__26__。11.假定p所指对象的值为25,p+1所指对象的值为42,则*(p++)或*p++运算后,p所指对象的值为__42__。12.假定a是一个一维数组,则a[i]的指针访问方式为__a+i__。13.假定a是一个一维数组,则a[i]对应的存储地址(以字节为单位)为_a+sizeof(a[0])*i___。14.一个数组的数组名实际上是指向该数组__第一个__元素的指针,并且在任何时候都不允许__改变__它。15.假定指向一维数组b[10]中元素b[4]的指针为p,则p+3所指向的元素为__b[7]__,p-2所指向的元素为__b[5]__。16.若要定义整形指针p并初始指向x,则所使用的定义语句为__intx,*p=&x;______。17.若p指向x,则_*p___与x的表示是等价的。18.若要把整型变量y定义为x的引用,则所使用的定义语句为__int&y=x;______。19.若y是x的引用,则对y的操作就是对__x__的操作。20.若y是x的引用,则&y和&x的值__相等__,即为变量__x__的地址。6.2、编程题定义一个函数invert()将数组A中的n个整数按相反顺序存放。程序实现要求如下:(1)用数组作为函数形参实现数组元素反序存放的函数invert(intA[],intn),函数调用时实参为数组。#includeiostreamusingnamespacestd;voidinvert(intA[],intn){inti,j,temp;intm=(n-1)/2;for(i=0;i=m;i++){j=n-1-i;temp=A[i];A[i]=A[j];A[j]=temp;}}voidmain(){inti;inta[10]={0,1,2,3,4,5,6,7,8,9};for(i=0;i10;i++)couta[i]\t;invert(a,10);coutAfterinvert:endl;for(i=0;i10;i++)couta[i]\t;coutendl;}(2)用数组作为函数形参实现数组元素反序存放的函数invert(intA[],intn),函数调用时实参为指针。#includeiostreamusingnamespacestd;voidinvert(intA[],intn){inti,j,temp;intm=(n-1)/2;for(i=0;i=m;i++){j=n-1-i;temp=A[i];A[i]=A[j];A[j]=temp;}}voidmain(){inti;inta[10]={0,1,2,3,4,5,6,7,8,9};int*p;for(i=0;i10;i++)couta[i]\t;p=a;invert(p,10);coutAfterinvert:endl;for(p=a;pa+10;p++)cout*p\t;coutendl;}(3)用指针作为函数形参实现数组元素反序存放的函数invert(int*A,intn),函数调用时实参为数组。#includeiostreamusingnamespacestd;voidinvert(int*A,intn){int*i,*j,temp,*p;intm=(n-1)/2;i=A;j=A+n-1;p=A+m;for(;ip;i++,j--){temp=*i;*i=*j;*j=temp;}}voidmain(){inti;inta[10]={0,1,2,3,4,5,6,7,8,9};for(i=0;i10;i++)couta[i]\t;invert(a,10);coutAfterinvert:endl;for(i=0;i10;i++)couta[i]\t;coutendl;}(4)用指针作为函数形参实现数组元素反序存放的函数invert(int*A,intn),函数调用时实参为指针。#includeiostreamusingnamespacestd;voidinvert(int*A,intn){int*i,*j,temp,*p;intm=(n-1)/2;i=A;j=A+n-1;p=A+m;for(;ip;i++,j--){temp=*i;*i=*j;*j=temp;}}voidmain(){inti,*p;inta[10]={0,1,2,3,4,5,6,7,8,9};for(i=0;i10;i++)couta[i]\t;p=a;invert(p,10);coutAfterinvert:endl;for(p=a;pa+10;p++)cout*p\t;coutendl;}