问答题
使用VC6打开考生文件夹下的工程proj3,其中包含主程序文件main.epp和用户定义的头文件Array.h,整个程序包含有XArray类的定义和main主函数的定义。请把主程序文件中的XArray类的成员函数sum()的定义补充完整,补充的内容填写在"//**********333**********"与"//**********666**********"两行之间。经修改后运行程序,得到的输出为: 10 d=43 注意:只允许在"//**********333**********"和//**********666**********"两行之间填写内容,不允许修改其他任何地方的内容。//Array.h#include<iostream>#inelude<estdlib>using namespaee std;class XArray{//数组类 int*a: int size;public: XArray(int b[],int len):size(1en)//构造函数 { if(size<2){cout<<"参数不合适"<<endl;exit(1);} a=new int[size]; for(int i=0;i<size;i++)a[i]=b[i]; } int sam();//返回数组a[size]中的最大值与最小值之和 int length()const{return size;}//返回数组长度 ~XArray(){delete[]a;}void writeToFile(const char*);//不用考虑此语句的作用//main.cpp#include"Array.h"//返回数组a[size]中的最大值与最小值之和int XArray::sum(){//补充函数体 //**********333********** //**********666**********} void main(){ int s1[10]={23,15,19,13,26,33,18,30,20,10}; XArray x(s1,10); int d=x.sum(); cout<<x.1ength()<<endl; cout<<"d="<<d<<endl: writeToFile("c:\\test\\");//不用考虑此语句的作用 }
【正确答案】正确答案:int xArray::sum(){//补充函数体 int i,max=a[0],min=a[0]; for(i=1;i<size;i++) { if(max<a[i]) { max=a[i]; } if(min>a[i]) { min=a[i]; } } return max+min; }
【答案解析】解析:Xarray类中包含两个数据成员:a是数组的指针,size是数组的长度。main()函数中使用数组s1构造Xarray对象x,此时对象x中,a是包含10个整型元素的数组指针,size是10。成员函数sum()的作用是求得数组a[size]中最大值和最小值之和,所以函数体中需要遍历a的10个元素,找出最大值max和最小值min,再将两者之和返回,程序首先将数组a的第一个元素赋给。max和min,然后从下标为1的元素开始向后遍历,遍历过程中,将当前遍历到的元素与max和min比较,存在比max大的元素时,更新max值;存在比min小的元素时,更新min值,最后将两者之和作为函数值返回。