您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C++面向对象程序设计实验报告
C++面向对象程序设计实验报告学院:信息科学与技术学院班级:卓越电子1201姓名:刘强学号:120910115实验二C++面向过程程序设计实验目的掌握函数声明、定义和使用的方法掌握函数递归调用的方法实验内容1、编写一个函数,求数列运算中从n个不同的数中取r个数的所有选择的个数,要求如下:主程序中设计一个循环,不断从输入接收n和r的值,计算结果并输出,当用户输入00时,程序结束;能检查输入数据的合法性,要求n=1并且n=r;能得到正确结果。输入:53输出:10输入:1020;输出:InputInvalid!;输入:-14;输出:InputInvalid!;步骤:利用一个函数fn(intn)计算n!,利用另一个函数Cnr(intn,intr)计算Cnr,在该函数中调用fn(),程序代码:#includeiostream.hintfn(intn){ints=1;for(inti=1;i=n;i++){s=s*i;}coutn!=sendl;returns;}intCnr(intn,intr){coutPleaseinputtwonumbers:endl;for(;;){cinnr;if(n==0&&r==0){coutProgrammeshutdown.endl;break;}if(n=1&&n=r){inta;intb;intc;intd;a=fn(n);b=fn(r);c=fn(n-r);d=a/(b*c);coutdendl;}elsecoutInputInvalid!endl;}return0;}intmain(){Cnr(0,0);return0;}程序输出:(1)(2)(3)2、1、add、dec的函数体定义在类的内部3、GetNum的函数体定义在类的外部内联函数的使用:定义一个TestInline类,该类拥有两个私有整型变量i,j,为该类添加3个内联函数intadd()返回两数之和,intdec()返回两数之差,intGetNum()返回私有变量j的值。要求如下:实验要求写出程序,并调试程序,要给出测试数据和实验结果。整理上机步骤,总结经验和体会。完成实验日志和上交程序。程序代码:classTestInline{public:TestInline(inta,intb){i=a;j=b;}intadd(){returni+j;}intdec(){returni-j;}intGetNum();private:inti;intj;};inlineintTestInline::GetNum(){returnj;}#includeiostream.hintmain(){inta,b;coutPleaseinputtwonumbers:endl;cinab;TestInlineT(a,b);coutADD=T.add()endl;coutDEC=T.dec()endl;coutj=T.GetNum()endl;return0;}程序输出:实验三类的定义和使用一、实验目的掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性;掌握类对象的定义;理解类的成员的访问控制的含义,公有、私有和保护成员的区别;掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。能够根据给定的要求定义类并实现类的成员函数;掌握友元函数的含义,友元函数和成员函数的区别。二、实验内容1、定义一个圆类,计算圆的面积和周长。要求:分别用成员函数和友元函数来求圆的面积和周长。2、定义一个学生类,其中有3个数据成员有学号、姓名、年龄,以及若干成员函数。同时编写主函数使用这个类,实现对学生数据的赋值和输出。要求:1、使用成员函数实现对输出的输入、输出;2、使用构造函数和析构函数实现对数据的输入、输出。3、定义日期类型Date。要求有以下面成员:可以设置日期;日期加一天操作;输入函数,输入格式为“XXXX年XX月XX日”。三、实验要求写出程序,并调试程序,要给出测试数据和实验结果。整理上机步骤,总结经验和体会。完成实验日志和上交程序。程序一:定义一个圆类,计算圆的面积和周长。程序代码:#includeiostream.hclasscircle{public:doublearea(doublex){returnX=3.14*x*x;}frienddoublecircumference(doublex);private:doubleX;};doublecircumference(doublex){doubleY;returnY=2*3.14*x;}intmain(){doubler;doublea;doublec;coutPleaseinputr.endl;cinr;circleT;a=T.area(r);coutarea=aendl;c=circumference(r);coutcircumference=cendl;return0;}程序输出:程序二:定义一个学生类,其中有3个数据成员有学号、姓名、年龄,以及若干成员函数。同时编写主函数使用这个类,实现对学生数据的赋值和输出。程序代码:#includeiostream.h#includestring.hclassStudent{public:input1(intxuehao,charxingming[10],intnianling){coutPleaseinputstudent'snumber,nameandage.endl;cinxuehao;cinxingming;cinnianling;number=xuehao;strcpy(name,xingming);age=nianling;}output1(){coutNumber:numberendl;coutName:nameendl;coutAge:ageendl;}Student(){number=0;name[10]='\0';age=0;}Student(intx,char*y,intz);~Student();private:intnumber;charname[10];intage;};Student::Student(intx,char*y,intz){number=x;strcpy(name,y);age=z;}Student::~Student(){coutNumber:numberendl;coutName:nameendl;coutAge:ageendl;}voidmain(){intx;chary[10];intz;StudentT;T.input1(x,y,z);T.output1();coutPleaseinputstudent'snumber,nameandage.endl;cinx;ciny;cinz;Student(x,y,z);}程序输出:实验四复杂数据类型实验目的学习数组的定义、初始化、赋值和使用的方法学习给函数传递数组的方法学习指针和引用的定义和使用方法学习字符串的使用方法学习用指针和引用给函数传递参数实验内容1.数组排序从键盘读入若干整数,将它们按由低到高排序输出。[测试数据]:程序先输出:Pleaseinputarraynumber:用户输入:5程序再输出:Pleaseinputalltheinteger:用户输入:300700600450500程序输出:300450500600700[实现要求]:1.用一个数组存放各个整数;2.在主函数main()中实现数据的输入和输出操作,并用一个函数实现对数组元素的排序操作。3.排序函数调用另一个函数swap()实现两个数组元素的交换。可以使用指针、引用两种方式实现函数参数的传递:swap(int*pa,int*pb);swap(int*a;int&b);[实现提示]:排序可以用最简单的选择排序法:选择排序法:1.从n个数中选择最小的一个,把它和第一个数组元素交换;2.从剩下的n-1个数中选择最小的一个,把它和第二个数组元素交换;3.依此类推,直到从最后两个元素中选出倒数第二小的元素并把它和倒数第二个元素交换为止。如要按选择排序法对数组3050213920排序,则各趟排序后的结果如下所示(带下划线的数表示参加交换的数):开始:3050213920第一趟排序:U20U502139U30U第二趟排序:20U21UU50U3930第三趟排序:2021U30U39U50U第四趟排序:2021303950[实验步骤]1.用数组实现程序要求说明:用一个长度为10的数组存放待排序的数据,数组的定义为intiArray[10];数组排序函数的原型为:voidsort(intnum,intiArray[]);其中num表示数组元素的个数,iArray是数组。2.用动态申请空间的方式实现程序要求。说明:使用指针来实现前面数组的功能int*piArray;piArray=newint(num);其中数组的大小num需要由用户预先输入。[思考问题]1.上面两种实现方式对程序的改动大吗?2.尝试用不同的方式访问数组中的元素iArray[i],*(iArray+i),piArray[i],*(piArray+i),3.iArray和piArray有何共同点?程序代码:#includeiostream.hvoidswap(int*a,int*b){intc;c=*a;*a=*b;*b=c;}voidpaixu(int*a,intn){inti,j;for(j=0;jn-1;j++)for(i=j;in-1;i++){if(*(a+j)*(a+i+1))swap(a+j,a+i+1);}}voidmain(){inti,n;cout请输入需排序的整数个数:;cinn;coutendl;int*a;a=newint(n);cout请依次输入这些数:endl;for(i=0;in;i++){cin*(a+i);}paixu(a,n);cout排序后的顺序为:;for(i=0;in;i++){cout*(a+i);}}程序输出:2.字符排序修改上面的程序,将数组的操作改为对字符串操作,即从键盘输入一串字符,将它们存放在字符数组中(形成一个字符串),然后对字符数组中的各个字符排序。[测试数据]:输入内容:kapdobc输出内容:abcdkop[实现要求]:1.用字符数组代替上一个实验的整数数组;2.不要先输入字符串的长度,在程序中自动计算出字符串的长度。[实现提示]:1.字符串的输入输出操作可以简化,不用一个字符一个字符的输入输出2.字符的长度可以借助于预定义的函数strlen()求出,该函数所在的库函数名为string.h[思考问题]对字符的比较遵循什么样的约定(为什么字符a比字符b小)?程序代码:#includeiostream#includestring.husingnamespacestd;voidsort(char*str){chari,j,len;charmin;len=strlen(str);for(i=0;ilen-1;i++){min=i;for(j=i+1;jlen;j++)if(str[j]str[min])min=j;swap(str[i],str[min]);}}voidswap(char*pa,char*pb){chartemp;temp=*pa;*pa=*pb;*pb=temp;}voidmain(){charstr[100];coutPleaseinputastring:endl;cinstr;sort(str);coutstrendl;system(pause);}程序输
本文标题:C++面向对象程序设计实验报告
链接地址:https://www.777doc.com/doc-6081322 .html