C++语言程序设计实验答案_类与对象

合集下载

C++语言程序设计实验4(类和对象)

C++语言程序设计实验4(类和对象)

是:用初始对象的每个数据成员的值,初始化将要建立的对象的对应数据成员。
构造函数和拷贝构造函数的声明格式如下:
class 类名
{
public: 类名(形参); 类名(类名 &对象名);
//构造函数 //拷贝构造函数
... ...
}; 类名::类名()
//构造函数的实现
{ 函数体;
} 类名::类名(类名 &对象名)
6. 本章小结
本章主要介绍了面向对象的基本概念、类和对象的声明、构造函数、析构函数、内联成 员函数、拷贝构造函数、类的组合。
类是面向对象程序设计中最重要、最基本的概念,也是学习面向对象方法时遇到的第 1 个难点。类是对逻辑上相关的函数和数据的封装,是对问题的抽象描述。
要理解类与对象,必须要结合实例来学习,读者可以思考:除了书中列出的例子,现实 世 界 中 还 有 哪 些 有 形 或 无 形 的 事 务 可 以 被 抽 象 为 程 序 中 的 类 ,每 个 类 又 存 在 哪 些 对 象( 实 体 )。 这样可以对类的概念了解的快一些。
本章开始的每章的最后有一个实例——人员信息管理程序,这个例子贯穿后续各章,利 用每章介绍的只是不断丰富程序的功能,建议课后仔细阅读、体会,并尝试修改、补充程序 的功能。
另外,本章中还介绍了利用 UML 语言表示类与对象的方法,以后各章还将进一步介绍 用 UML 语言表示类之间的关系,但这远不是 UML 语言的全部,这方面的内容也不是初学者 学习的重点,读者可以不必深究,了解一下就可以了。如果有需要,可以另外学习软件工程 的课程。
面向对象的程序设计目的是:实现软件设计的产业化。主要观点是认为自然界是由实体 (对象)所组成。程序设计的出发点是:使用面向对象的观点来描述模仿并处理现实问题。 他要求:高度概括、分类、抽象。

C++实验关于类与对象的答案

C++实验关于类与对象的答案

第七次实验1、写出下列程序的运行结果1)#include <iostream>using namespace std;int f(int a){return ++a;}int g(int& a){return ++a;}void main(){int m=0,n=0;m+=f(g(m));n+=f(f(n));cout<<"m="<<m<<endl;cout<<"n="<<n<<endl;}2)#include <iostream>using namespace std;class Demo{public:Demo(){cout<<"default constructor\n";}Demo( Demo &x){cout<<"copy constructor\n";}};Demo userCode(Demo b){ Demo c(b);return c;}void main(){ Demo a,d;cout<<"calling userCode()\n";d = userCode(a);}执行上面的程序的过程中,构造函数Demo()和Demo(Demo &x)被调用的次数分别是多少次?2、声明一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。

观察构造函数及析构函数、复制构造函数的的执行过程。

3、设计一个日期类DA TE,包括年、月、日三个数据成员和如下成员函数:构造函数、设置日期函数、显示日期函数、判断该年是否闰年函数、获得该天是当年的第几天函数。

#include"iostream"using namespace std;class DA TE{int year,month,day;public:DA TE(){};void settime();void showtime();void countday();void decideyear();};void DA TE ::settime(){int a,b,c;cout<<"input year, month, day"<<endl;cin>>a>>b>>c;year=a;month=b;day=c;}void DA TE ::showtime(){cout<<"输入的日期是"<<year<<"年"<<month<<"月"<<day<<"日"<<endl;}void DA TE::decideyear(){if(year%400==0 || year%4==0 && year%100!=0)cout<<year<<"年是闰年"<<endl;else cout<<year<<"年不是闰年"<<endl;}void DA TE::countday(){int count=0,i;if(month==1) count=day;if(month==2) count=31+day;if(month>=3){for(i=3;i<month;i++){if(i==3||i==5||i==7||i==8||i==10||i==12) count+=31;else if(i==4||i==6||i==9||i==11) count+=30;}if(year%400==0||year%4==0&&year%100!=0) count=count+31+29+day;else count=count+31+28+day;}cout<<"该天是该年的第"<<count<<"天"<<endl;}void main(){DA TE date;date.settime();date.showtime();date.decideyear();date.countday();}4、定义人民币类,数据成员包括:圆、角、分,均为整型。

C#实验报告类与对象

C#实验报告类与对象

实验项目名称:类与对象一、实验目的和要求1.C#程序编写的过程和基本要求;2.面向对象的程序设计思维(基本思想);3.类的组成、声明和定义;4.对象的定义(类的实例化);5.理解字段和属性,属性的定义以及相对应的访问修饰符;6.方法以及方法的重载;7.构造函数的使用;8.类的继承(重点);9.类的多态性(难点)二、实验内容和过程1.上机实验1:问题描述:编写一个学生类,其中包括3个数据成员:学号、姓名、年龄,以及若干成员函数。

同时编写主函数使用这个类,实现对学生数据的赋值和输出。

要求:使用成员函数实现对数据的输出(显示学生的相关信息);使用构造函数实现对数据的输入(可以重载多个构造函数并使用)。

提示:三个成员变量使用什么访问控制符?提高要求:将三个成员变量定义为属性,并且学号和姓名只能读不能写,年龄可写,但是要符合18—26 之间。

解决方法说明:①在学生类中,定义学号、姓名、年龄相关的字段以及属性;②编写带三个参数的构造函数,实现对学生学号、姓名、年龄数据的输入;③重载构造函数,带两个参数,实现对学生学号、姓名的输入;④编写成员函数print(),实现对数据的输出;⑤编写主函数,使用这个类,实现对学生数据的赋值和输出;●实例化学生类;●使用对象.print()方法。

关键代码及注释:class student{protected string stuNum;protected string stuName;protectedintstuAge;public string StuNum//定义属性:学号{get{returnstuNum;}}public string StuName //定义属性:姓名{get{returnstuName;}}public intStuAge//定义属性:年龄{get{returnstuAge;}set{if (value >= 18 || value <= 26) //限制年龄{stuAge = value;}}}public student(string number, string name, int age) //构造函数1,实现对数据的输入{stuNum = number;stuName = name;stuAge = age;Console.W riteLine("请输入学号");stuNum = Console.ReadLine();Console.W riteLine("请输入姓名");stuName = Console.ReadLine();Console.W riteLine("请输入年龄");stuAge = Convert.T oInt32(Console.ReadLine());}public student(string number, string name) //构造函数2,实现对数据的输入{stuNum = number;stuName = name;Console.W riteLine("请输入学号");stuNum = Console.ReadLine();Console.W riteLine("请输入姓名");stuName = Console.ReadLine();}public void print() //print方法,输出学生信息{if (stuAge != 0){Console.W riteLine(stuName + "的学号是:" + stuNum + ",年龄是:" + stuAge); Console.ReadLine();}else{Console.W riteLine(stuName + "的学号是:" + stuNum);Console.ReadLine();}}public static void Main() //主函数,使用学生类{student A = new student("209", "A", 18);A.print();student B = new student("11", "B");B.print();}}出错调试说明:排除错误的数据类型数据的输入,没有出错。

C 实验二类和对象

C  实验二类和对象

实验二类和对象1.实验目的:(1) 掌握Visual C++6.0基本操作(2) 了解C++程序运行环境;(3) 掌握简单的C++程序的开发过程(编辑、编译、连接和运行)。

(4) 掌握类及其成员的定义方法;(5) 掌握对象的创建方法;2.实验内容:2.1按要求分析程序指出程序运行的结果:1)分析下面的程序,并给出程序运行的结果:#include<iostream.h>class change{char c1,c2;public:void set(char a){c2=((c1=a)-32);}void print(){cout<<c1<<" can be upwritten as "<<c2<<endl;}};void main(){change a,b;a.set('a');b.set('b');a.print();b.print();}运行结果:程序分析:2)分析下面的程序,并给出输出结果:#include<iostream.h>class pair{char c1,c2;public:void set(char b){c1=1+(c2=b);}unsigned where_am_I(){return((unsigned)this);}void print(){cout<<c1<<"+"<<c2<<"\t";}};void main(){pair a,b,c;a.set('A');b.set('B');c.set('C');a.print();cout<<"is at "<<a.where_am_I()<<'\n';b.print();cout<<"is at "<<b.where_am_I()<<'\n';c.print();cout<<"is at "<<c.where_am_I()<<'\n';}运行结果:程序分析:2.2编写并调试程序:1)下面是一个类的测试程序,给定主函数,请写出类的定义,构成一个完整的程序,使执行程序后输出结果为:88-32=56给定的主函数为:void main(){Tst t;t.init(88,32);t.print();}2)编程分析由主函数可知,要创建的类名为Tst,一个类对象为t,类中含有两个公有成员函数init()和print(),利用函数init()对两个私有成员数据赋值,即为减数与被减数的数值,为了程序的实现需要定义第三个成员数据作为减法之差。

C++语言程序设计实验答案-类与对象

C++语言程序设计实验答案-类与对象

C++语言程序设计实验答案-类与对象实验04 类与对象(6学时)(第4章类与对象)一、实验目的(1) 掌握类的声明和使用。

(2) 掌握类的声明和对象的声明。

(3) 复习具有不同访问属性的成员的访问方式。

(4) 观察构造函数和析构函数的执行过程。

(5) 学习类的组合使用方法。

(6) 使用Visual Studio 2010的调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。

二、实验任务4_1 声明一个CPU类。

包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。

其中,rank为枚举类型CPU_Rank,声明为enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 }; frequency为单位是MHz的整型数,voltage为浮点型的电压值。

观察构造函数和析构函数的调用顺序。

4_2 声明一个简单的Computer类。

有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run和stop。

cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。

4_3 声明一个表示时间的结构体。

可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。

4_4(习题4-10)设计一个用于人事管理的People(人员)类。

考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号),sex(性别)、birthday(出生日期)、id(身份证号)等。

其中“出生日期”声明为一个“日期”类内嵌子对象。

用成员函数实现人员信息的录入和显示。

要求包括:构造函数和析构函数、内联成员函数、组合。

三、实验步骤1.(验证)声明一个CPU类,观察构造函数和析构函数的调用顺序。

首先声明枚举类型CPU_Rank,例如enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 },再声明CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,声明成员函数run和stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示顺序。

C++实验1-类和对象

C++实验1-类和对象

实验一类和对象实验课程名:面向对象程序设计(C++)专业班级:学号:姓名:实验时间:实验地点:指导教师:一、实验目的和要求(1) 理解类和对象的概念,掌握声明类和定义对象的方法。

(2) 掌握构造函数和析构函数的实现方法。

(3) 初步掌握使用类和对象编制C++程序。

(4) 掌握对象数组、对象指针和string类的使用方法。

(5) 掌握使用对象、对象指针和对象引用作为函数参数的方法。

(6) 掌握类对象作为成员的使用方法。

(7) 掌握静态数据成员和静态成员函数的使用方法。

(8) 理解友元的概念和掌握友元的使用方法。

二、实验内容1.输入下列程序//test4-1.cpp#include<iostream>using namespace std;class Coordinate{ public:Coordinate(int x1,int y1){ x=x1;y=y1;}Coordinate(Coordinate &p);~Coordinate(){ cout<<”Destructor is calleded\n”;}int getx(){return x;}int gety(){return y;}private:int x,y;};Coordinate::Coordinate(Coordinate &p){ x=p.x;y=p.y;cout<<”copy-initialization Constructou is called\n”;}int main(){ Coordinate p1(3,4);Coordinate p2(p1);Coordinate p3=p2;cout<<”p3=(“<<p3.getx()<<”,”<<p3.gety()<<”)\n”;}(1) 写出程序的运行结果。

(2) 将Coordinate类中带有两个参数的构造函数进行修改,在函数体内增添下述语句:cout<<”Constructor is called.\n”;写出程序的运行结果,并解释输出结果。

C实验五类与对象.doc

C实验五类与对象.doc

实验六类与对象类是面向对彖程序设计中最棊木并H最重要的概念,也是面向对彖方法的第一个难点。

类是对逻辑上相关的函数与数据的封装,是对问题的抽象描述。

对象是类的实例化,是抽象的具体实现,类和对象的关系,是抽象与具体的关系,类概括出事物的木质特点,对象是对这些特点的具体体现。

实验目的和要求:1.掌握类和对象的使用。

2.掌握类的构造函数少析构函数。

3.掌握构造函数的重载。

4.了解拷贝构造两数的方法。

5.熟悉静态成员的使用和意义。

6.掌握友元的含义(友元函数、友元成员、友元类)。

7.掌握new和delete的使用。

实验内容:一、程序分析题1、写出以下程序的执行结果。

#include <iostream>using namespace std;class Tdcite{public:Tdate(){ Init(4,15,1995); }Tdate(int d){ lnit(4,d,1996); }Tdate(int m,int d){ Init(m,d,1997); }Tdate(int m,int d,int y){ Init(m,d,y); }protected:int month;int day;int year;void Init(int m,int djnt y){month=m; day=d; year=y;cout «month «H/M «day «,7M «year «endl;}};int main(){Tdate aday;Tdate bday(10);Tdate cday(2,12);Tdate dday( 1,2,1998);return 0;2、写出以下程序的执行结果。

#include <iostrcam> using namespace std;class MyClassf public:MyClass();MyClass(int);〜MyClass();void DisplayO;protected:int number;};MyClass::MyClass(){number =0;cout «n Constructing normallyAn*'; } MyClass::MyClass(int m):number(m){cout «n Constructing with a number: 4 5 6 7 8 9 10 11 «number «endl;}void MyClass::Display(){ cout «H Display a number: M «number «endl; } MyClass::〜MyClass(){ cout «H Destructing.\n n; }int main(){MyClass obj 1;MyClass obj2(20);objl.Display();obj2.Display();return 0;}3、写出以下程序的执行结果。

c 面向对象程序设计教程习题答案

c 面向对象程序设计教程习题答案

c 面向对象程序设计教程习题答案C面向对象程序设计教程习题答案在学习C面向对象程序设计的过程中,习题答案是非常重要的一部分。

通过练习习题,可以加深对知识点的理解,提高编程能力。

下面我们就来看一些常见的C面向对象程序设计习题及其答案。

1. 什么是面向对象程序设计?面向对象程序设计是一种程序设计范式,它以对象为中心,通过封装、继承和多态等特性来组织和管理代码。

面向对象程序设计可以提高代码的可维护性和可重用性,是现代软件开发中非常重要的一部分。

2. 什么是类和对象?类是一种抽象的数据类型,它描述了一类对象的共同特征和行为。

对象是类的实例,它具体描述了一个具体的实体。

在C面向对象程序设计中,类和对象是非常重要的概念。

3. 请编写一个简单的类和对象的例子。

```c#include <stdio.h>// 定义一个简单的类class Person {public:int age;char name[20];void display() {printf("Name: %s, Age: %d\n", name, age);}};int main() {// 创建一个对象Person p;p.age = 25;strcpy(, "Alice");p.display();return 0;}```4. 什么是封装?封装是面向对象程序设计中的一种重要特性,它将数据和行为封装在一个类中,对外部隐藏了内部的实现细节。

封装可以保护数据的安全性,同时提供了简单的接口供外部访问。

5. 请编写一个简单的封装例子。

```c#include <stdio.h>// 定义一个简单的类class Circle {private:double radius;public:void setRadius(double r) {radius = r;}double getArea() {return 3.14 * radius * radius;}};int main() {// 创建一个对象Circle c;c.setRadius(5.0);printf("Area: %f\n", c.getArea());return 0;}```以上就是一些常见的C面向对象程序设计习题及其答案。

C语言程序设计 上机实验指导与习题 参考答案

C语言程序设计 上机实验指导与习题 参考答案

C 语言程序设计上机实验指导与习题参考答案仅供教师内部参考华南农业大学目录上机实验1实验1 C 语言程序初步1一实验目的1二实验内容1实验2 基本数据类型运算和表达式3一实验目的3二实验内容3实验3 基本输入与输出5一实验目的5二实验内容5实验4 选择结构程序设计4一实验目的4二实验内容4实验5 循环结构程序设计一9一实验目的9二实验内容9实验6 循环结构程序设计二15一实验目的15二实验内容15实验7 数组17一实验目的17二实验内容17实验8 字符数组的应用22一实验目的22二实验内容22实验9 函数的基本应用24 一实验目的24二实验内容24实验10 指针与结构体26一实验目的26二实验内容26*实验11 链表29一实验目的29二实验内容29*实验12 文件32一实验目的32二实验内容32上机实验实验1 C 语言程序初步一实验目的1了解所用的计算机系统的基本操作方法学会独立使用该系统2 了解在该系统上如何编辑编译连接和运行一个C 程序3 通过运行简单的C 程序初步了解C 程序的特点4 在教师的指导下学会使用JudgeOnline 实验系统二实验内容1 运行第一个C 程序[题目The first C Program]将下列程序输入TC 或VC编译连接和运行该程序void mainprintf "The first C Program\n"[具体操作步骤]以Turbo C 上的操作为例1Windows 进入后按照第一章中介绍的方法进入Turbo C2在编辑窗口中输入程序3保存程序取名为a1c4按照第一章中介绍的方法编译连接和运行程序2 在JudgeOnline 系统中提交实现了计算ab 功能的程序[题目1001计算ab]由键盘输入两个整数计算并输出两个整数的和实现该功能的程序如下void mainint a bscanf "dd" a b1 printf "d" a b1在程序编辑窗口中输入程序2保存程序取名为a2c3按照前二章中介绍的方法编译连接和运行程序4在程序运行过程中输入15 30↙↙表示输入回车符5 如果看到如下输出结果则表明1530 的结果正确如果得不到如下结果则需检查并更正程序456 按照第三章中介绍的方法进入JudgeOnline 实验系统7 显示题目列表点击题号为1001题名为计算ab的题目8 查看完题目要求后点击页面下端的sumbit 参照第二章提交程序的方法提交程序a2c9 查看评判结果如果得到accepted则该题通过否则返回第一步检查程序是否正确2实验2 基本数据类型运算和表达式一实验目的1掌握C 语言数据类型熟悉如何定义一个整型和实型的变量以及对它们赋值的方法2 掌握不同的类型数据之间赋值的规3 学会使用C 的有关算术运算符以及包含这些运算符的表达式特别是自加和自减-- 运算符的使用4 进一步熟悉C 程序的编辑编译连接和运行的过程二实验内容1 变量的定义[题目1117变量定义按要求完成程序]下面给出一个可以运行的程序但是缺少部分语句请按右边的提示补充完整缺少的语句void mainint a b 定义整型变量a 和bint i j 定义实型变量i 和ja 5b 6i 314 j iabprintf "a db di fj f\n" a b i j[具体操作步骤]1将代码补充完整2在TC 或VC上运行通过3在JudgeOnline 实验系统上提交2 赋值表达式与赋值语句[题目1118赋值表达式与赋值语句写出程序运行结果] 阅读下面程序写出运行结果void mainfloat aint b cchar d ea 35b ac 330d c3e \\printf "fddcc" abcde运行结果为35000003330J\[提示]赋值语句具有类型转换的功能但可能会改变数据3 基本运算[题目1119基本运算写出程序运行结果]阅读下面程序写出运行结果void mainint a b cfloat d 15 e fa 357b 1510c be 1510f d10printf "dddfff" abcdef运行结果为0211500000010000001500000[提示]除法分整除与普通除法之分4实验3 基本输入与输出一实验目的1熟练掌握putchargetcharprintf scanf 函数的使用方法2 掌握各种类型数据的输入输出的方法能正确使用各种格式转换符二实验内容[题目1126字符的输入与输出]编程实现由键盘输入一个字符后在屏幕上输出该字符[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]a↙↙[正确输出] [正确输出]a参考程序include "stdioh"mainchar chch getcharputchar ch[题目1127计算加法]编程实现由键盘输入一个加法式输出正确的结果两个加数均为整数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]1020 ↙- 1560↙[正确输出] [正确输出]30 45参考程序include "stdioh"mainint a bscanf "dcd" abprintf "d" ab[题目1014求圆面积]由键盘输入圆半径r 请计算该圆的面积注取314159结果保留两位小数位另外程序只要能对r 在0 到10000 范围的情况输出正确答案即可[第一组自测数据] [键盘输入]5652 ↙[键盘输入][正确输出] 112↙1335502 [正确输出][第二组自测数据] 39408[提示]结果保留两位小数可采用printf 函数的格式控制字符来实现参考程序include "stdioh"mainfloat arearscanf "f"rarea 314159rrprintf "02f"area2[题目1015计算摄氏温度值]从键盘输入一个华氏温度值要求按格式输出其对应的摄氏温度值精确到小数点后两位数学公式描述为5C F 329[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]100↙100↙[正确输出] [正确输出]3778 3778[提示]注意公式中的除为普通除法参考程序includevoid mainfloat fcscanf "f"fc 509 f-32printf "2f"c3实验4 选择结构程序设计一实验目的1了解C 语言表示逻辑的方法以0 代表假以非0 代表真2 学会正确使用逻辑运算符和逻辑表达式3 熟练掌握if 语句和switch 语句4 结合程序掌握一些简单的算法二实验内容[题目1120判断点是否在圆]由键盘输入一个点的坐标要求编程判断这个点是否在单位圆上点在圆上输出Y 不在圆上输出N 使用小数点后3 位精度进行判断[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]07070707 ↙8>0505↙[正确输出] [正确输出]Y N[提示] 1平面上的点与圆的关系分为在圆内在圆上在圆外三种本题要求判断是否在圆上2判断两实数相等采用判断这两实数的差的绝对值小于规定误差精度本题为0001 的方法实现参考程序include "stdioh"include "mathh"void mainfloat abscanf "ff"abif fabs aabb-1 1e-3printf "Y\n"else printf "N\n"[题目1017求数的位数]由键盘输入一个不多于9 位的正整数要求输出它是几位数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]349213 ↙10000↙[正确输出] [正确输出]6 5[提示]划定一位数二位数九位数的范围后用if else if else 语句实现判断4参考程序mainint nplacescanf "ld"nif n 99999999 place 9else if n 9999999 place 8else if n 999999 place 7else if n 99999 place 6else if n 9999 place 5else if n 999 place 4else if n 99 place 3else if n 9 place 2else place 1printf "ld\n"place[题目1018数的排序]由键盘输入三个整数a b c按从小到大的顺序输出这三个数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]654590 ↙963 ↙[正确输出] [正确输出]456590 369参考程序includemainint abctscanf "ddd"abcif a b t aa bb tif a c t aa cc tif b c t bb cc tprintf "ddd"abc[题目1016字符变换]由键盘输入5 个字符将其中的大写字母变成小写其它类型的字符不变并按输入顺序逐个输出[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]ApPLe ↙aB 5 ↙[正确输出] [正确输出]apple ab 5[提示]下面代码实现由键盘读入一个字符并按题意处理后输出char aa getcharif a A a Z a a32putchar a5现在题目要求处理5 个字符怎么做呢请自己思考参考程序includemainchar abcdescanf "ccccc"abcdeif a Za A a a32if b Zb A b b32if c Zc A c c32if d Zd A d d32if e Ze A e e32printf "ccccc"abcde[题目1019数的整除]由键盘输入5 个整数逐个判断它们能否被27 整除能的输出YES不能的输出NO 注意输出时一个判断结果占一行5 个数的判断共占5 行[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]8 27 17577 325 54 ↙8 27 17577 325 54 ↙[正确输出] [正确输出]NO NOYES YESYES YESNO NOYES YES[提示]整除即除得余数为0参考程序include "stdioh"mainint abcdescanf "d d d d d"abcdeif a27 0 printf "YES\n" else printf "NO\n"if b27 0 printf "YES\n" else printf "NO\n"if c27 0 printf "YES\n" else printf "NO\n"if d27 0 printf "YES\n" else printf "NO\n"if e27 0 printf "YES\n" else printf "NO\n"[题目1020正负奇偶判断]由键盘输入非零整数x 判断该数正负正数输出positive 负数输出negative 接着判断该数的奇偶性奇数输出odd偶数输出even[第一组自测数据] negative[键盘输入] odd-43 ↙[第二组自测数据][正确输出] [键盘输入]698 ↙positive[正确输出] even参考程序include "stdioh"mainint nscanf "d"nif n 0 printf "negative\n"else printf "positive\n"if n2 0 printf "even\n"else printf "odd\n"[题目1023简单计算器]下面程序是实现一个简单的运算器保留两位小数点如果由键盘输入1050计算机可以输出结果6000如果输入8 *6计算机输出4800如果输入204 计算机输出500 如果输入8-6计算机输出200 请在空处填上适当的代码运行通过后并提交include "stdioh"void mainfloat abcscanf "fcf"switch opcasecase - _case _case __default printf "error"returnprintf "result " c[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]452↙501-23 ↙[正确输出] [正确输出]90 27107参考程序includeint mainchar opscanf "fcf"aopbswitch opcase c abbreakcase -c a-bbreakcase c abbreakcase c abbreakdefaultprintf "error"breakprintf "result 2f"c8实验5 循环结构程序设计一一实验目的1熟悉掌握用while 语句do-while 语句和for 语句实现循环的方法2 掌握在程序设计中用循环实现一些常用算法如穷举迭代递推等二实验内容[题目1024计算阶乘]输入正整数n计算n 结果用长整型数表示注n 123n[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]5 ↙8 ↙[正确输出] [正确输出]120 40320参考程序includemainlong in 1ascanf "ld"afor i 1i ai n niprintf "ld\n"n[题目1025计算数列和]有数列1357911现要求由键盘输入n计算输出该数列的前n 项和[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]2 ↙ 5 ↙[正确输出] [正确输出]4 259参考程序includemainlong nsum 0it 1scanf "ld"nfor i 1i nisum sumtt t2printf "ld\n"sum或includemainlong nsumscanf "ld"nsum nnprintf "ld"sum注评判系统不对程序实现细节进行分析只对运行结果进行评测[题目1026 加一行字符中的数字]由键盘输入一行字符总字符个数从1 个至80 个均有可能以回车符表示结束将其中每个数字字符所代表的数值累加起来输出结果[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]abc123↙A6H7T65↙[正确输出] [正确输出]6 24[提示] 1可以使用下面程序段逐个读入键盘输入的一行字符char chwhile ch getchar \n2 数字字符转为对应的数值可用a ch-0参考程序includemainchar cint s 0awhile c getchar \nif c 0c 9a c-48s saprintf "d"s10[题目1029求最大公约数]由键盘输入两个正整数mn mn 用长整数表示计算它们的最大公约数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]1624↙1725↙[正确输出] [正确输出]8 1[提示]公约数是既能整除m 又能整除n 的数题目要求满足这一条件的最大的一个参考程序includemainlong rmntempscanf "ldld"mnwhile m 0r nmn mm rprintf "ld\n"n或includemainlong mntisscanf "ldld"mnt m nnmfor i t-1i 1i--if mi 0ni 0s i breakprintf "d"s[题目1030字符变换]由键盘输入一个句子总字符个数从1 个至80 个均有可能以回车符表示结束将其中的大写字符变成小写其它类型的字符不变最后输出变换后的句子[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]How Are You ↙ThiS IS My fIrSt C ProgrAm ↙[正确输出] [正确输出]how are you this is my first c program11参考程序includemainchar cwhile c getchar \nif c Ac Zc c32putchar c[题目1037计算数列和]有数列编程实现由键盘输入n计算输出数列前n 项和结果保留四位小数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]20 ↙30 ↙[正确输出] [正确输出]326603 880403参考程序includemainint itnfloat a 2b 1s 0scanf "d"nfor i 1i nis sabt aa abb tprintf "4f\n"s[题目1044输出最小值]从键盘输入十个整数输出最小值[ 自测数据][键盘输入]12 45 76 87 5 87 43 55 99 21 ↙[正确输出]512参考程序include "stdioh"mainint itminscanf "d" minfor i 1i 10iscanf "d" tif t min min tprintf "d\n"min*[题目1031统计单词个数]由键盘输入一个句子总字符个数从1 个至80 个均有可能以回车符表示结束以空格分割单词要求输出单词的个数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]How Are You ↙There are many students and many[正确输出] trees↙3 [正确输出]7参考程序includemainint inum 0word 0char cfor i 0 c getchar \niif c word 0else if word 0word 1numprintf "d"num*[题目1042百万富翁]一个百万富翁遇到一个陌生人陌生人找他谈了一个换钱的计划该计划如下我每天给你m 元而你第一天只需给我一分钱第二天我仍给你m 元你给我2 分钱第三天我仍给你m 元你给我4分钱依次类推你每天给我的钱是前一天的两倍直到一个月38 天百万富翁很高兴欣接受这个契约现要求编写一个程序由键盘输入m计算多少天后百万富翁开始亏钱[第一组自测数据] 18[键盘输入] [第二组自测数据]100↙[键盘输入][正确输出] 10000↙13[正确输出] 25参考程序includeincludemainint nmiscanf "d"mfor i 1i 38iif 001 pow 2i-1 -1 -im 0 breakprintf "d"i-114实验6 循环结构程序设计二一实验目的1进一步熟悉掌握用while 语句do-while 语句和for 语句实现循环的方法2 掌握在程序设计中使用多重循环二实验内容[题目1028求素数]输出2 到200 之间包括2 200 的所有素数注要求1 行1 个素数按由小到大的顺序输出[提示]采用双重循环外层循环产生2 到200 之间的数内层循环对数进行判断是否为素数参考程序includeincludemainint mkifor m 2m 200mk sqrt mfor i 2i kiif mi 0 breakif i k printf "d\n"m[题目1035打印菱形]由键盘输入正数n要求输出2n1 行的菱形图案要求菱形左边紧靠屏幕左边[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]3 ↙ 2 ↙[正确输出] [正确输出]15参考程序include "stdioh"include "mathh"mainint nijkscanf "d"nfor i 1i 2n1ik abs n1-ifor j 1j kj printf " "for j 1j 2n1-2kj printf ""printf "\n"[题目1038打印图案]由键盘输入正数n要求输出中间数字为n 的菱形图案要求菱形左边紧靠屏幕左边[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]4 ↙ 3[正确输出] [正确输出]1 1121 121 12321 12321 1234321 121 12321 1 1211参考程序includeincludemainint nijkhscanf "d"nfor i -n1i n-1ifor j 0j abs i jprintf " "for k 1k n-abs i k printf "d"kfor h n-abs i -1h 1h-- printf "d"hprintf "\n"16实验7 数组一实验目的1掌握一维数组和二维数组的定义赋值和输入输出方法2 掌握与数组有关的算法二实验内容[题目1039倒序]由键盘输入10 个整数倒序输出数字间由一个空格分隔[ 自测数据][键盘输入]70 5 14 20 19 2 99 67 13 66 ↙[正确输出]66 13 67 99 2 19 20 14 5 70参考程序includemainint a [10]int ifor i 0i 10i scanf "d"a[i]for i 9i 0i-- printf "d\n"a[i][题目1040统计不同数字个数]由键盘输入20 个整数统计不同数字的个数[ 自测数据][键盘输入]70 5 14 22 19 2 99 67 13 66 5 93 44 38 22 11 39 22 33 11↙[正确输出]16[提示]上述答案中因为5 有1 个重复数字11 有1 个重复数字22 有2 个重复数字故不同数字有16个分别是70 5 14 22 19 2 99 67 13 66 93 44 38 11 39 3317参考程序include"stdioh"mainint a [20]int itp 0for i 0i 20iscanf "d"a[i]for t 0t itif a[t] a [i] breakif t ipprintf "d"p[题目1062打印矩阵]由键盘输入一个3×4 的矩阵要求输出它的转置矩阵[ 自测数据][键盘输入] [正确输出] 1 6 9 3 1 1 11 1 02 6 1 91 9 8 9 9 0 83 2 9参考程序includemainint a [3][4]b[4][3]ijfor i 0i 3ifor j 0j 4jscanf "d"a[i][j]b[j][i] a [i][j]for i 0i 4ifor j 0j 3jprintf "d "b[i][j]printf "\n"*[题目1047冒泡排序]由键盘输入10 个数用冒泡法对10 个数从小到大排序并按格式要求输出代码如下请填充完整数字间由一个空格分隔incude "stdioh"mainint a[10] i j t18for i 0i 10iscanf "d"___________for ___________for j 0j ____jif ______________________for i 0i 10iprintf "d "a[i][ 自测数据][键盘输入]70 5 14 20 19 2 99 67 13 66 ↙[正确输出]2 5 13 14 19 20 66 67 70 99参考程序includemainint a [10]int ijtfor i 0i 10iscanf "d"a[i]for i 0i 9ifor j 0j 9-ijif a[j] a [j1]t a [j] a [j] a[j1] a[j1] tfor i 0i 10iprintf "d "a[i]*[题目1046计算高精度加法]由键盘输入两个位数很长的整数一行一个数每个数最长不超过80 位试计算并输出这两个数的和[ 自测数据][键盘输入]1XXXXXXXXXX23456789 ↙987654321098765 ↙[正确输出]1XXXXXXXXXX4455555419参考程序include "stdioh"include "stringh"mainint a [100] 0 b[100] 0 c[100] 0char s[101]int i 0n1 0n2 0 0e 0gets sn1 strlen sfor i n1-1i 0i-- a[n1-1-i] s[i]-0gets sn2 strlen sfor i n2-1i 0i-- b[n2-1-i] s[i]-0if n1 n2 n1else n2for i 0i ic[i] a[i]b[i]e 10e a[i]b[i]e 10if c[] 0 printf "d"c[]for i -1i 0i--printf "d"c[i]*[题目找矩阵中的鞍点]由键盘输入一个3 ×4 3 行4 列的矩阵输出矩阵中的鞍点即在矩阵行中最大列中最小的数若没有鞍点输出NO 字样[ 自测数据][键盘输入]87 90 110 98 ↙70 97 210 65 ↙98 45 120 30 ↙[正确输出]11020参考程序includemainint ijka[3][4]jflagfor i 0i 3ifor j 0j 4jscanf "d"a[i][j] for i 0i 3ia [i][0]j 0for j 0j 4jif a[i][j]a [i][j] j jflag 1for k 0k 3kif a [k][j]flag 0 breakif flagprintf "d" breakif flagprintf "NO"21实验8 字符数组的应用一实验目的1掌握字符数组和字符串函数的使用2 掌握与字符串处理有关的算法二实验内容[题目1121定义存贮字符串的字符数组]在下面程序中填充定义字符数组的语句使程序完整include "stringh"void mainchar s[80] 定义字符数组sstrcpy s "abcdefghij klmn"printf "s" s参考程序[题目1123字符串的输入与输出]下面程序实现从键盘读入字符串后输出到屏幕请填充必要的语句include "stdioh"void mainchar s[50]printf "Whats your name"gets s 由键盘读入字符串printf "Your name is "printf "s" s 打印字符串参考程序[题目1122字符串的合并]从键盘输入3 个字符串每个字符串以回车符做为结束标志将3 个字符串以输入先后顺序合并到字符串s 中请填空使用程序完整include "stdioh"include "stringh"mainchar s[100] ""char a [30]gets a strcat s a22gets a strcat s agets a strcat s a可以写多行代码printf "s" s[ 自测数据][键盘输入] [正确输出]123 123abc456abc456参考程序[题目1050寻找字符串]由键盘输入两个字符串假设第一个字符串必包含第二个字符串如第一个字符串为ABCDEF第二个为CDE则CDE 包含在ABCDEF 中现要求编程输出第二字符串在第一行字符串中出现的位置如果第二个字符串在第一个字符串中出现多次则以最前出现的为准[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]ABCDEFG ↙hellhello ↙DE ↙hello ↙[正确输出] [正确输出]4 5[提示]方法1建立双重循环外层循环变量指示第一个串的查找起始位置内层循环从起始位置开始判断第二个字符中是否出现在此处方法2 使用字符串函数strstr参考程序include "stdioh"mainint ijchar a [80] b[80]gets a gets bfor i 0a[i] \0ifor j 0b[j] \0jif a[ij] b[j] breakif b[j] \0 breakif a[i] \0 printf "d"i1else printf "Not Found"23实验9 函数的基本应用一实验目的1掌握定义函数的方法2 掌握函数实参与参的对应关系以及值传递的方式3 掌握函数的嵌套调用和递归调用的方法4 掌握全局变量和局部变量动态变量静态变量的概念和使用方法二实验内容[题目1059函数定义]下面是使用辗转相除法求最大公约数的程序请补充完整程序中函数的定义与调用include "stdioh"int f int m int nint rwhile r mn 0m nn rreturn nmainint a b nscanf "dd" a bprintf "d\n" f a b[题目1083编写函数计算阶乘]下面程序实现由键盘读入整数n计算并输出n 请补充完整计算阶乘的函数long fanc int along in 1for i 1i ai n nireturn nvoid mainint nscanf "d" n24printf "ld" fanc n[题目1124函数中的变量]写出下面程序的运行结果int f1 int xstatic int z 3y 0yzreturn xyzmainint a 1kfor k 0k 3k printf "4d"f1 a 程序运行结果为6 8 10*[题目1084编写递归调用函数实现十进制数转二进制数]下面程序实现由键盘输入一个正整数不大于100000000 输出其对应的二进制数原码表示请填空include "stdioh"void fun int iif i 1fun i2printf "d" i2mainint nscanf "d" nfun n25实验10 指针与结构体一实验目的1通过实验进一步掌握指针的概念会定义和使用指针变量2 能正确使用数组的指针和指向数组的指针变量3 能正确使用字符串的指针和指向字符中的指针变量4 掌握结构体类型变量的定义和使用二实验内容[题目1091交换两数由大到小输出]下面程序交换两数使两数由大到小输出请填空include "stdioh"void swap int p1 int p2int temptemp p1p1 p2p2 tempint mainint ab int papbscanf "dd" a bpa a pb bif a b swap pa pbprintf "d d\n"ab[题目1065数组中的指针]设有如下数组定义int a[3][4] 1357 9111315 17192123计算下面各项的值设数组a 的首地址为2000一个int 类型数占四个字节注意地址则输出地址变量则输出变量值要求一行一个答案不允许多余空行及空格1a[2][1] 2 a[1] 3 a 4 a 15 a 16 a 17 a[2] 18 a 1 19 a2 226参考程序include "stdioh"mainprintf "19\n"printf "2016\n"printf "2000\n"printf "2016\n"printf "2004\n"printf "2016\n"printf "2036\n"printf "2020\n"printf "21"[题目1092函数实现求字符串长度]下面程序以指针方式传递参数由函数实现求字符串长度请填空完成include "stdioh"include "stringh"int f char preturn strlen pint mainchar s[80]int iscanf "s" si f sprintf "d" i[题目1125定义结构体类型]要求定义一个名为student 的结构体类型其包含如下成员1字符数组name 最多可存放10 个字符2 字符变量sex用于记录性别3 整数类型变量num用于记录学号4 float 类型变量score 用于记录成绩并使下列代码完整定义结构体类型struct studentchar name[20]char sex。

c 实验报告 类和对象

c 实验报告 类和对象

c 实验报告类和对象C 实验报告类和对象引言:在计算机科学领域中,面向对象编程(Object-Oriented Programming,简称OOP)是一种常用的编程范式。

它将现实世界中的事物抽象成对象,并通过类来定义对象的属性和行为。

本实验报告将介绍C语言中的类和对象的概念,以及如何在C语言中实现面向对象编程。

一、类和对象的概念1.1 类的定义在面向对象编程中,类是一种用户自定义的数据类型,它由属性和方法组成。

属性是类的成员变量,用于描述对象的状态;方法是类的成员函数,用于描述对象的行为。

类是对象的模板,通过实例化类可以创建多个具有相同属性和方法的对象。

1.2 对象的定义对象是类的实例,它是类中属性和方法的具体表现。

每个对象都有自己的属性值,可以调用类中定义的方法来执行特定的操作。

通过对象,我们可以访问和修改类中的属性,以及调用类中的方法。

二、类和对象的实现2.1 结构体的应用在C语言中,我们可以使用结构体来实现类的属性。

结构体是一种自定义的数据类型,可以包含多个不同类型的成员变量。

通过定义结构体,我们可以将多个属性组合在一起,形成一个完整的数据结构。

2.2 函数的应用在C语言中,我们可以使用函数来实现类的方法。

函数是一段可重复使用的代码,可以完成特定的任务。

通过定义函数,我们可以将一系列操作封装起来,供对象调用。

三、面向对象编程的优势3.1 封装性面向对象编程中的封装性使得对象的内部细节对外部是隐藏的,只有通过对象提供的接口才能访问和修改对象的属性。

这样可以保护对象的数据不被非法访问和修改,提高了程序的安全性。

3.2 继承性通过继承,一个类可以从另一个类中继承属性和方法。

这样可以减少代码的重复性,提高代码的复用性。

同时,继承也使得类与类之间的关系更加清晰,便于代码的维护和扩展。

3.3 多态性多态性是面向对象编程的一个重要特性,它使得一个对象可以以多种形态存在。

通过多态性,我们可以通过基类的指针或引用来操作派生类的对象,实现代码的灵活性和扩展性。

c++实验二 类和对象(附答案)

c++实验二 类和对象(附答案)

实验二类和对象一、实验目的1、理解类和对象的概念。

2、掌握类的定义和使用方法。

二、实验内容以下是一个采用类结构的方式求n! 的程序,请填空完成程序。

# include <iostream.h>class factorial{int n;int fact;public:factorial(int); //带参的构造函数void calculate();void display();};factorial:: factorial(int val){n=val;(1)}void factorial::calculate(){int i=n;while(i>1)(2)or (3)}void factorial::display(){cout<<n<<"!="<< (4) <<endl;}void main(){int n;cout<<"请输入n的值: ";cin>>n;factorial A(n);A.calculate();(5)}要求:编译调试运行程序,得到正确结果。

在填空处加上注释。

设计题给出类的定义,构造一个完整的程序。

程序输出如下结果:a-b=c的值程序的主函数为:Int main(){ int a,b;cin>>a>>b;Ctest c;c.init(a,b);c.print();return 0;}//以下内容作为作业,做到作业本上。

3. 程序填空。

(测试静态成员的使用方法)(本科班必做!)#include<iostream>using namespace std;class Test{private;Static int count;public;Test() {count++;}static void Show() {cout<<”共有”<<count<<”个对象!”<<endl;}}(1) ;int main(void){Test obj1,obj2,obj3;(2);system(“PAUSE”);restuen 0;}4. 改正下面程序中的错误,使其正常运行。

C.语言程序设计实验答案_类及对象

C.语言程序设计实验答案_类及对象

实验04 类与对象(6学时)(第4章类与对象)一、实验目的二、实验任务4_1 声明一个CPU类。

包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。

其中,rank为枚举类型CPU_Rank,声明为enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 }; frequency为单位是MHz的整型数,voltage为浮点型的电压值。

观察构造函数和析构函数的调用顺序。

4_2 声明一个简单的puter类。

有数据成员芯片(cpu)、存(ram)、光驱(cdrom)等,有两个公有成员函数run和stop。

cpu 为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。

4_3 声明一个表示时间的结构体。

可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。

4_4(习题4-10)设计一个用于人事管理的People(人员)类。

考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号),sex(性别)、birthday(出生日期)、id(号)等。

其中“出生日期”声明为一个“日期”类嵌子对象。

用成员函数实现人员信息的录入和显示。

要求包括:构造函数和析构函数、联成员函数、组合。

三、实验步骤1.(验证)声明一个CPU类,观察构造函数和析构函数的调用顺序。

首先声明枚举类型CPU_Rank,例如enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 },再声明CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,声明成员函数run和stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示顺序。

在主程序中声明一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。

C++ 实验二 类与对象(附答案)

C++ 实验二 类与对象(附答案)

象(附答案)象(附答案)实验二类与对象实验目的和要求1.掌握类、类的数据成员、类的成员函数的定义方式。

2.理解类成员的访问控制方式。

3.掌握对象的定义和操作对象的方法。

4.理解构造函数和析构函数的定义与执行过程。

5.掌握重载构造函数的方法。

6.了解拷贝构造函数的定义方法。

实验内容1.下面程序中有错,在不删除和增加代码行的情况下,改正错误语句,使其正确运行。

#include<iostream.h>class Aa{public:Aa(int i=0){a=i;cout<<"Constructor "<<a<<endl;}~Aa(){cout<<"Destructor "<<a<<endl;}void print(){cout<<a<<endl;}private:int a;};int main(){Aa al(1),a2(2);al.print();cout<<a2.a<<endl;return 0;}2.检查下面的程序,找出其中的错误,并改正。

然后上机调试,使程序能正常运行。

(1)#include<iostream.h>class Date{void set_date();void show_date();int year;int month;int day;};Date d;int main(){set_date();show_date();}void set_date(){cin>>d.year;cin>>d.month;cin>>d.day;}void show_date(){cout<<d.year<<'/'<<d.month<<'/'<<d.day<<endl; }(2)#include<iostream.h>class A{public:void A(int i=0){m=i;}void show(){cout<<m<<endl;}void ~A(){}private:int m;};int main(){A a(5);a.m+=10;a.show();return 0;}(3)#include<iostream.h>class X{private:int a=0;int &b;void setA(int i){a=i;}X(int i){a=i;}public:int X(){a=b=0;}X(int i,int j){a=i;b=j;}void setC(int k){c=c+k;}};void main(){X x1;X x2(2);X x3(1,2);x1.setA(3);}3.调试下列程序。

C#实验一(类与对象)

C#实验一(类与对象)

实验报告学院:计算机与信息学院专业:计算机科学与技术年级:12级姓名:学号:实验室号:__ _ 计算机号:实验日期:2014 年11 月25 日指导教师签字:成绩:报告退发(订正、重做)实验一类与对象一、实验目的:1、掌握类的成员设计。

2、掌握属性的定义及使用。

3、掌握索引器的定义及使用。

二、实验内容:1、编写一个简单的英汉电子词典程序。

能够将用户输入的英文单词翻译成相应的中文。

假设一个英文单词的中文释义有多个。

要求如下:(1)定义单词类Word,相关成员如下图所示。

(2)定义词典类Dictionary,相关成员如下图所示。

在Dictionary类中定义一个索引器。

该索引器能根据英文单词,返回中文释义。

如果词典中无该单词,则提示“该单词无对应的中文释义!”。

(3)定义Test类,在其Main方法中,接收用户输入的英文单词,完成相应中文释义的查找及输出。

下图为某次查询的输出结果。

2、整数集合是由多个不同的整数构成。

请定义Set类,求两个整数集合的并集和交集。

编程时,集合的元素保存在一个一维数组中。

要求如下:(1)在Set类中,定义私有的int型数组变量setA和setB,用于保存两个待求并集和交集的整数集合。

(2)在Set类中定义构造方法。

(3)在Set类中定义属性SetA和SetB。

在set访问器中,提供参数合法性检查的代码,以保证成员变量setA和setB中的元素不重复。

(4)在Set类中定义私有方法private bool IsRepeated(int[] array),判断参数array 中是否存在重复元素。

(5)在Set类中定义私有方法private bool IsInSetA(int element),判断集合SetA 中是否存在元素element。

(6)在Set类中定义GetUnion方法,返回两个集合的并集。

(7)在Set类中定义GetIntersection方法,返回两个集合的交集。

《c语言程序设计》实验指导书答案

《c语言程序设计》实验指导书答案

《c语言程序设计》实验指导书答案《C语言程序设计》实验指导书答案实验一:C语言环境搭建与基本语法1. 问题:如何在计算机上搭建C语言开发环境?答案:搭建C语言开发环境通常需要安装编译器和集成开发环境(IDE)。

常见的编译器有GCC,而IDE如Visual Studio Code、Code::Blocks等。

安装完成后,配置好编译器路径,即可开始编写和编译C语言程序。

2. 问题:C语言的基本数据类型有哪些?答案:C语言的基本数据类型包括整型(int)、字符型(char)、浮点型(float和double)以及更复杂的结构体(struct)和联合体(union)等。

3. 问题:如何定义一个变量?答案:定义变量的基本语法是:`类型名变量名;`。

例如,定义一个整型变量a:`int a;`。

4. 问题:如何实现变量的输入和输出?答案:使用`scanf`函数进行输入,使用`printf`函数进行输出。

例如,输入一个整数并输出:`scanf("%d", &a); printf("%d", a);`。

实验二:控制结构1. 问题:C语言中的条件语句有哪些?答案:C语言中的条件语句主要有`if`语句和`switch`语句。

2. 问题:如何使用`if`语句?答案:`if`语句的基本语法是:`if (条件) { 语句 }`。

例如,判断一个数是否为正数:`if (a > 0) { printf("正数"); }`。

3. 问题:如何使用`switch`语句?答案:`switch`语句用于多条件分支选择。

基本语法是:`switch (表达式) { case 常量1: 语句1; break; case 常量2: 语句2; break; ... default: 默认语句; }`。

4. 问题:C语言中的循环语句有哪些?答案:C语言中的循环语句主要有`for`循环、`while`循环和`do-while`循环。

C++程序设计与应用基础第二章 类和对象习题答案

C++程序设计与应用基础第二章 类和对象习题答案

C++程序设计与应用基础第二章类和对象习题答案1、请完成下列填空题1)在C语言中,编程的单位是___函数__:在C++语言中,编程的单位是____类__。

2)在下面程序的横线处填上适当的语句,使类型该程序执行结果为10。

#include <iostream.h>class MyClass{pub1ic:——MyClass(int a){x=a;}//为x置值——int GetNum(){return x;} //取x值private:int x;};void main(){Myclass my(10);Cout<<my.GetNum()<<end;}3)在类中定义和实现的函数称为__内联函数_______。

4)对类中的成员函数和属性的访问是通过___public___、___protected___和___private___这3个关键字来控制的。

5) ___new___运算符对指定类型对象动态分配内存并返回该类型的__指针___。

6)假定用户没有给一个名为MyClass的类定义构造函数,则系统对其定义的默认构造函数形式为___MyClass()_____。

2、编程题1)定义一个复数类imaginary。

用友元函数实现该类的加、减、乘和除运算。

答案:class Imaginary{public:Imaginary(float a,float b);friend Imaginary Add(Imaginary& img1,Imaginary& img2);friend Imaginary Sub(Imaginary& img1,Imaginary& img2);friend Imaginary Mul(Imaginary& img1,Imaginary& img2);friend Imaginary Div(Imaginary& img1,Imaginary& img2);private:float x,y;};Imaginary::Imaginary(float a,float b){x=a;y=b;}Imaginary Add(Imaginary& img1,Imaginary& img2) {float a,b;a=img1.x+img2.x;b=img1.y+img2.y;return Imaginary(a,b);}Imaginary Sub(Imaginary& img1,Imaginary& img2) {float a,b;a=img1.x-img2.x;b=img1.y-img2.y;return Imaginary(a,b);}Imaginary Mul(Imaginary& img1,Imaginary& img2) {float a,b;a=img1.x*img2.x-img1.y*img2.y;b=img1.x*img2.y+img1.y*img2.x;return Imaginary(a,b);}Imaginary Div(Imaginary& img1,Imaginary& img2) {float a,b;if((img2.x*img2.x+img2.y*img2.y)!=0){a=(img1.x*img2.x+img1.y*img2.y)/(img2.x*img2.x+img2.y*img2.y); b=(img1.y*img2.x-img1.x*img2.y)/(img2.x*img2.x+img2.y*img2.y); return Imaginary(a,b);}elsereturn Imaginary(0.0,0.0);}2)定义类Rational。

C++面向对象程序设计实验三 类和对象

C++面向对象程序设计实验三 类和对象

学长只能帮你到这了
要想学习好,努力少不了
int y; }; void main() { CPoint p; p.print(); CPoint p1(1,2); //构造函数不能显示调用 p1.print(); //即 CPoint p1;p1.CPoint(1,2); CPoint p2=p1; //运行时会出错。 p2.print(); }
学长只能帮你到这了
要想学习好,努力少不了
{ CPoint pt; pt.Set(10,20); pt.Print(); }
问题一:以上程序编译能通过吗,试解释该程序? 答:可以通过, 问题二:以上程序的运行结构是否正确,如果不正确,试分析为什么,应该如何改正? 共有变量与私有变量名一样,调用的时候调用了私有变量,而私有变量没有值所以是
学长只能帮你到这了
要想学习好,努力少不了
ps.Print(); }
问题一:以上程序存在三处大错误,在不改变主函数内容的前提下,试改正该程序。 答:把成员函数都改成公有;函数的参数应该有数组或字符串的定义才可以传递“张三” 。 主函数中对构造函数的引用也有错。 class CPerson{ public: void Print(); CPerson(int ,char s[10]); private: int age; char *name; }; CPerson::CPerson(int a,char s[10]) { age=a; name=s; } void CPerson::Print() { cout<<"name="<<name<<",age="<<age<<endl; } void main() { CPerson ps(23,"张三"); ps.Print();

C实验2类和对象(1)

C实验2类和对象(1)

实验2 类和对象(1)班级学号姓名成绩一、实验目的1.掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性;2.掌握类对象的定义,对象的初始化;3.理解类的成员的访问控制的含义,公有、私有和保护成员的区别;4.掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。

能够根据给定的要求定义类并实现类的成员函数;二、实验内容1.分析找出以下程序中的错误,说明错误原因,给出修改方案使之能正确运行。

#include<iostream.h>class one{ int a1,a2;public:one(int x1=0, x2=0);};void main(){one data(2,3);cout<<data.a1<<endl;cout<<data.a2<<endl;}2.分析以下程序的错误原因,给出修改方案使之能正确运行。

#include <iostream.h>class Amplifier{float invol,outvol;public:Amplifier(float vin,float vout){invol=vin;outvol=vout;}float gain();};Amplifier::float gain() { return outvol/invol; }void main(){ Amplifier amp(5.0,10.0);cout<<"\n\nThe gain is =>"<<gain()<<endl;}3.定义盒子Box类,要求具有以下成员:可设置盒子形状;可计算盒子体积;可计算盒子的表面积。

4.定义计数器类Counter。

要求具有以下成员:计数器值;可进行增值和减值记数;可提供记数值。

5.编写一个程序计算两个给定的长方形的周长和面积。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验04 类与对象(6学时)(第4章类与对象)一、实验目的二、实验任务4_1 声明一个CPU类。

包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。

其中,rank为枚举类型CPU_Rank,声明为enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 }; frequency为单位就是MHz的整型数,voltage为浮点型的电压值。

观察构造函数与析构函数的调用顺序。

4_2 声明一个简单的Computer类。

有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run与stop。

cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。

4_3 声明一个表示时间的结构体。

可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。

4_4(习题4-10)设计一个用于人事管理的People(人员)类。

考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号),sex(性别)、birthday(出生日期)、id(身份证号)等。

其中“出生日期”声明为一个“日期”类内嵌子对象。

用成员函数实现人员信息的录入与显示。

要求包括:构造函数与析构函数、内联成员函数、组合。

三、实验步骤1、(验证)声明一个CPU类,观察构造函数与析构函数的调用顺序。

首先声明枚举类型CPU_Rank,例如enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 },再声明CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,声明成员函数run与stop,用来输出提示信息,在构造函数与析构函数中也可以输出提示顺序。

在主程序中声明一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。

程序名:lab4_1、cpp。

(程序见步骤2)★程序的运行结果:2、(示例)调试程序文件lab4_1、cpp。

使用调试功能观察程序lab4_1、cpp的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。

参考程序如下:};//const声明为常成员函数,禁止改变对象的数据成员的值void main(){CPU a(P6,300,2、8);a、run();a、stop();}3、(操作)调试操作步骤如下:(1)单击“调试| 逐语句”命令,系统进行单步执行状态,程序开始运行,一个DOS窗口出现,此时Visual Studio中光标停在main()函数的入口处。

(2)单击“调试| 逐过程”,此时,光标下移,程序准备执行CPU对象的初始化。

(3)单击“调试| 逐语句”,程序准备执行CPU类的构造函数。

(4)连续单击“调试| 逐过程”,观察构造函数的执行情况,直到执行完构造函数,程序回到主函数,光标停在“a、run();”行前。

(5)此时程序准备执行CPU对象的run()方法,单击“调试| 逐语句”,程序进入run()成员函数,连续单击“调试| 逐过程”,直到光标停在“a、stop();”行前。

(6)继续执行程序,参照上述的方法,观察程序的执行顺序,加深对类的构造函数、析构函数、成员函数的执行顺序的认识。

(7)单击Step Into,进入~CPU()析构函数,连续单击“调试| 逐过程”,直到光标又停在main()函数的“}”行前。

(8)将光标移到main()函数的“}”后,右击,再单击“运行到光标处”,运行结束。

(9)再试试“调试”菜单栏中别的菜单项,熟悉调试的各种方法。

4、(编程)声明CPU类、RAM类以及CDROM类。

再声明Computer类,观察类对象及其成员变量的构造与析构顺序,以及成员函数的调用。

首先声明CPU类(可使用lab4_1、cpp中声明的CPU类)、RAM类以及CDROM类。

再声明Computer类:声明私有数据成员cpu、ram、cdrom,声明公有成员函数run、stop,可在其中输出提示信息。

在主程序中声明一个Computer的对象,调用其成员函数,观察类对象及其成员变量的构造与析构顺序,以及成员函数的调用。

程序名:lab4_2、cpp。

提示:RAM类中有一个数据成员(int ramtype;);CDROM类中有一个数据成员(int cdromtype;);为了观察程序执行的顺序,类似程序lab4_1、cpp,在构造函数、析构函数、run与stop函数中应包含一条输出语句,给出相关的信息;每个类中至少包括:数据成员、构造函数、析构函数、取值成员函数、赋值成员函数。

★程序及运行结果:void main(){COMPUTER a(P6,300,2、8,2,500);a、run();a、stop();}5、(操作)调试程序lab4_2、cpp。

使用调试功能观察lab4_2、cpp程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序,特别注意观察成员变量的构造与析构顺序。

6、编程,习题2-31)声明一个表示时间的结构体。

声明一个表示时间的结构体,可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。

建立一个项目lab4_3,包含一个C++源程序lab4_3、cpp。

在主程序中实现输入输出。

参考运行结果:★程序及运行结果://lab4_3、cpp(习题2-31)#include<iostream>using namespace std;struct time{short yy,mm,dd,hh,mi,ss;};void main(){time t1={2012,2,25,10,30,20};//赋初值cout<<t1、yy<<"年"<<t1、mm<<"月"<<t1、dd<<"日"<< t1、hh<<":"<<t1、mi<<":"<<t1、ss<<endl;time t2;cout<<"输入年份:"; cin>>t2、yy;cout<<"输入月份:"; cin>>t2、mm;cout<<"输入日:"; cin>>t2、dd;cout<<"输入小时:"; cin>>t2、hh;cout<<"输入分钟:"; cin>>t2、mi;cout<<"输入秒:"; cin>>t2、ss;cout<<t2、yy<<"年"<<t2、mm<<"月"<<t2、dd<<"日"<< t2、hh<<":"<<t2、mi<<":"<<t2、ss<<endl;}7、(编程,习题4-10)设计一个用于人事管理的People(人员)类。

类People的属性:number(编号),sex(性别)、birthday(出生日期)、id(身份证号)等。

其中“出生日期”声明为一个“日期”类内嵌子对象。

用成员函数实现人员信息的录入与显示。

要求包括:构造函数与析构函数、内联成员函数、组合。

程序名:lab4_4、cpp。

提示:构造函数与析构函数的函数体可以定义为空;两个类中对年、月与日分别定义取值与赋值成员函数;People类中的数据成员为:unsigned number;//编号,4位数字,第一位为1char sex;//性别,m为男,w为女Date birthday;//出生日期unsigned id;//身份证号,8位数字,第一位不为0参考程序运行结果:★程序及运行结果:// lab4_4、cpp#include<iostream>using namespace std;cout<<"输入出生日期:"; cin>>yy>>mm>>dd;p2、Setbirthyy(yy); p2、Setbirthmm(mm); p2、Setbirthdd(dd);cout<<"输入身份证号:"; cin>>d;p2、Setid(d);//输出cout<<"\n输出"<<endl;cout<<p1、Getnumber()<<" "<<p1、Getsex()<<" "<<p1、Getbirthyy()<<"-"<<p1、Getbirthmm()<<"-"<<p1、Getbirthdd()<<" "<<p1、Getid()<<endl;cout<<p2、Getnumber()<<" "<<p2、Getsex()<<" "<<p2、Getbirthyy()<<"-"<<p2、Getbirthmm()<<"-"<<p2、Getbirthdd()<<" "<<p2、Getid()<<endl;}三、实验提示步骤6提示先在主函数外用struct定义一个结构体,名称可为time,包含成员“年、月、日、时、分、秒”;在主函数中,声明一个time的变量t1,并初始化“年、月、日、时、分、秒”为“2012、2、25、10、30、20”;将变量t1的值取出,用cout显示日期,注意组合;再声明一个time的变量t2;依次输入“年、月、日、时、分、秒”,注意在输入前给出提示信息。

相关文档
最新文档