c++ 定义一个学生类
面向对象第18章练习题

面向对象第18章练习题一、选择题1. 在面向对象编程中,下列哪个概念描述了对象的属性和行为?A. 类B. 状态C. 方法D. 继承A. classB. defC. objectD. static3. 在Java中,下列哪个方法用于创建对象?A. new()B. create()C. init()D. malloc()A. 子类可以继承父类的私有属性B. 子类可以继承多个父类C. 父类可以继承子类D. 子类可以重写父类的方法5. 在Python中,下列哪个关键字用于定义类的方法?A. functionB. methodC. defD. class二、填空题1. 在面向对象编程中,__①__是具有相同属性和方法的对象的集合。
2. __①__关键字用于定义一个类,而__②__关键字用于创建对象。
3. 在Java中,所有类都是__①__类的子类。
4. __①__是一种将一个类的属性和方法传递给另一个类的方式。
5. 在Python中,使用__①__关键字来定义类的属性。
三、判断题1. 一个类可以同时继承多个类。
()2. 构造方法用于初始化对象的属性。
()3. 在Java中,静态方法不能访问非静态成员。
()4. 子类可以调用父类的构造方法。
()5. 在Python中,类方法可以通过类名直接调用。
()四、简答题1. 请简要说明面向对象编程的三大特性。
2. 请解释什么是构造方法,并说明其在类中的作用。
3. 请举例说明如何在Java中实现方法的重写。
4. 请简要介绍Python中的类属性和实例属性。
5. 请说明如何使用继承来实现代码的复用。
五、编程题1. 定义一个矩形类(Rectangle),包含长(length)和宽(width)两个属性,以及计算面积(getArea)和周长(getPerimeter)的方法。
2. 定义一个学生类(Student),包含姓名(name)、年龄(age)和成绩(score)三个属性,以及一个显示学生信息(showInfo)的方法。
C++(2)

C++面向对象程序设计习题要求从下面题目中至少选1题,并且独立作业。
设计可以按照题目的要求进行设计,可以自己进行扩展类的定义和设计,但必须完成规定的基本内容。
不要抄袭,独立思考!祝大家学有所获。
注意:以下程序需要有输入输出,其中输入输出都需要有从标准设备(键盘显示器)和文件中输入输出。
并且所有的程序有界面操作,为用户提供相应的操作选项,1.定义一个分数类Rational。
该类存放分数形式的有理数。
要求如下所述。
1)定义带默认参数值的构造函数,默认分数为1。
2)定义私有变量X和Y分别存放分子和分母。
同时分子分母要以最简形式存放。
例如:分数3/9应该以1/3形式存放。
3)定义成员函数Add、sub、Mul和Div。
计算结果仍然以最简形式存放。
4)以X/Y的形式打印分数。
5)以浮点数形式打印分数。
6)再由分数类组合成一个实数类. 在实数类中实现比较两个实数的大小。
7)再由实数派生出一个复数类,定义一个复数类Complex,要求实现复数的加、减、乘、除、共轭,、求模运算,并且能实现分别读取以及设置复数的实部,虚部的操作,能按复数的形式进行输入输出。
在main函数中能输入不同的数,并由用户完成指定操作(加、减等)。
2定义一个点类Point,1)要求实现求两点间的距离,点到原点的距离,点的X坐标的变化,Y坐标的变化,点沿X轴对称后的坐标,沿Y轴对称后的坐标,并且能实现分别读取X坐标Y坐标的操作,能按点的坐标形式进行输入输出。
2)并由点类组合出一个线类Line,在线类中实现求通过两点直线的方程,并把该方程输出。
在main函数中能由用户输入不同的点,并由用户指定完成相应的操作(如求点的距离,等)3定义一个矩形类Rectangle,该类中的私有成员变量存放Rectangle的长和宽,并且设置它们的默认值是1.1)要求实现Move():从一个位置移动到另一个位置。
Size():改变矩形的大小。
Where():返回矩形左上角的坐标值。
c语言结构的实验报告

c语言结构的实验报告C语言结构的实验报告引言:C语言是一种广泛应用于软件开发和嵌入式系统的高级编程语言。
其简洁、高效和灵活的特性使其成为许多程序员的首选。
本实验报告将介绍C语言结构的相关概念和实验结果,旨在帮助读者更好地理解和运用C语言。
一、基本概念1.1 结构的定义在C语言中,结构是一种自定义的数据类型,可以将不同类型的数据组合在一起,形成一个新的数据类型。
结构由多个成员组成,每个成员可以是不同的数据类型,如整型、字符型、浮点型等。
1.2 结构的声明在使用结构之前,需要先声明结构的类型。
声明结构的语法格式为:struct 结构名 {成员1; 成员2; ...};通过这种方式,我们可以定义一个结构类型,以便在程序中使用。
1.3 结构的访问通过结构名和成员运算符(.)可以访问结构的各个成员。
例如,如果有一个名为student的结构,其中包含学生的姓名和年龄两个成员,可以使用和student.age来访问这两个成员。
二、实验过程2.1 定义结构类型在本次实验中,我们以学生信息为例,定义了一个名为Student的结构类型,其中包含姓名(name)、年龄(age)和成绩(score)三个成员。
2.2 输入学生信息通过使用scanf函数,我们可以在程序中输入学生的姓名、年龄和成绩,并将其保存在定义的结构类型变量中。
2.3 输出学生信息使用printf函数,我们可以将学生的姓名、年龄和成绩从结构类型变量中提取出来,并在屏幕上显示出来。
2.4 结构的嵌套C语言中的结构还支持嵌套,即在一个结构中定义另一个结构。
例如,我们可以在Student结构中定义一个名为Address的结构,用于存储学生的地址信息。
三、实验结果与分析通过实验,我们可以发现结构在C语言中的重要性和灵活性。
通过定义结构类型,我们可以将不同类型的数据组合在一起,形成一个新的数据类型,更好地组织和管理数据。
结构的嵌套使得数据的层次结构更加清晰,提高了程序的可读性和可维护性。
C sharp 基础 习题

变量练习
• 3.定义四个变量,分别存储一个人的姓
名、性别、年龄、电话。然后打印在屏 幕上 (我叫X,我今年 X岁了,我是X生,我 的电话是XX) • 4.在屏幕上输出:我的手机是philips 型号:998 价格:1500元 重量:0.3kg
• 5.定义两个变量如:a b分别赋值为10和5,
写程序交换两个变量的值
• •
并显示出来? Convert不再仅是内存级别的转换,而是考虑数据意义 的转换。Convert是一个加工、改造的过程 通过 Convert.ToInt32(能转换成int类型的数据)来把其 他类型数据转换成int类型 练习: 让用户输入姓名 语文 数学 英语 三门课的成绩,然后给 用户显示:XX,你的总成绩为XX分,平均成绩为XX分。
– 直到学生会为止,才可以放学. – 直到学生会或老师给他讲了10遍还不会,都要放学
• 2006年培养学员80000人,每年增长25%,请问
按此增长速度,到哪一年培训学员人数将达到20 万人?
练习:
练习1:计算1到100之间整数的和; 练习2:要求用户输入用户名和密码,只要不是admin、888888 就一直提示用户名或密码错误,请重新输入。 练习3:不断要求用户输入学生姓名,输入q结束. 练习4:不断要求用户输入一个数字,然后打印这个数字的二倍, 当用户输入q的时候程序退出。 练习5:不断要求用户输入一个数字(假定用户输入的都是正整 数),当用户输入end的时候显示刚才输入的数字中的最大 值 练习6:张三先唱一遍要表演的歌曲,老师觉得张三唱歌不过关,就 让张三再唱一遍,老师满意则张三可以下课,不然则需要再唱 一遍,再问老师是否满意...
练习,自己写一个方法
1 读取输入的整数,定义成方法,多次调 用(如果用户输入的是数字,则返回,否则 提示用户重新输入) 2 还记得学循环时做的那道题吗?只允许 用户输入y或n,请改成方法 3查找两个整数中的最大值:int Max(int i1,int i2) 4计算输入数组的和:int Sum(int[] values)
结构体定义变量的三种方法

结构体定义变量的三种⽅法1.先定义结构体,然后在定义结构体变量struct stu{ /*定义学⽣结构体类型*/char name[20]; //学⽣姓名char sex; //性别long num; //学号float score[3]; //三科考试成绩}struct stu student1,student2; //定义结构体类型变量struct stu student3,student4;//⽤此结构体类型,可以定义更多的该结构体类型变量。
2.定义结构体类型同时定义结构体类型变量struct data{int day;int month;int year;} time1,time2;//也可以在定义如下变量:struct data time3,time4;//⽤此结构体类型,同样可以定义更多的该结构体类型变量。
3.直接定义结构体类型变量struct{char name[20]; //学⽣姓名char sex; //性别long num; //学号float score[3]; //三科考试成绩} person1,person2; //定义该结构体类型变量//该定义⽅法由于⽆法记录该结构体类型,所以除直接定义外,不能再定义该结构体类型变量。
4.在C中定义⼀个结构体类型要⽤typedeftypedef struct Student{int a;}Stu;//于是在声明变量的时候就可: Stu stu1;/*如果没有typedef就必须⽤struct Student stu1;来声明这⾥的Stu, 实际上就是 struct Student的别名另外这⾥也可以不写Student(于是也不能struct Student stu1;了)typedef struct{int a;}Stu;*/。
VC++实验指导书

Visual C++程序设计实验指导书实验1 认识Visual C++6.05中文版开发环境实验内容(1)熟悉VisualC++6。
05的开发环境。
(2)操作工具栏和项目工作区窗口。
(3)用应用程序向导创建一个控制台应用项目Ex_Hello。
(4)输入并执行一个新的C++程序Ex_Simple.实验准备和说明(1)建议在本教材第一次上课时进行本次实验。
(2)熟悉Windows 2000或XP操作系统的环境和基本操作。
(3)熟悉实验报告的书写格式,这里给出一下建议:实验报告采用A4纸,封面一般包括实验目次.实验题目,班级,姓名,日前和机构名称.报告内容一般包括实验目的和要求。
实验步骤,实验思考和总结。
需要指出的是,实验步骤不是书本内容的重复,而是自己结合实验内容进行探索的过程,教师也可根据具体情况提出新的实验报告格式和新的要求.(4)阅读以下关于VisualC++的说明:Visual C++是Microsoft公司推出的目前使用极为广泛的基于WINDOUWS平台的可视化编程环境。
是在以往的版本不断更新的基础上形成的,其功能强大,灵活性好,完全可以扩展以及具有强有力的Internet支持,在各种c++语言开发工具中脱颖而出,成为目前最为流行的C++语言集成开发环境。
Visual C++6。
0分为标准版,企业版和专业版3种,但其基本功能是相同。
Visual C++6。
5中文版是在Visual C++6。
0基础上进行汉化的以一个版本,本书以此版本作为编程环境。
为统一起见,我们仍称之为Visual C++6.0。
实验步骤1。
打开计算机,启动windouws2000操作系统2。
建工作文件夹3。
启动Visual C++6.04。
创建一个控制台应用项目5。
认识开发环境界面6。
认识工具栏7。
工具栏的显示和隐藏8.工具栏的浮动与停泊9。
项目工作区窗口10。
修改代码,编译运行11。
输入一个新的C++程序12。
修正语法错误13.退出Visual C++6。
实验二---类与对象的定义与使用

}
void paixuYuwen() //按语文成绩排序;
{
Student str[50],*p,q;
int i,j;
p=stu;
for(p=stu,i=0;i<n;i++)
{ str[i]=*p;
*p++;
}
for(i=0;i<n-1;i++,p++)
{
for(j=0;j<n-1-igt;str[j+1].yuwen)
{
q=str[j];
str[j]=str[j+1];
str[j+1]=q;
}
}
}
for(i=0;i<n;i++)
{
printf("学号:%d姓名:%s数学:%.2f语文:%.2f英语:%.2f总成绩:%.2f平均成绩:%.2f\n",str[i].num,str[i].name,str[i].shuxue,str[i].yuwen,str[i].yingyu,str[i].zongcj,str[i].avg);
}
}
void paixuCJ()
{
int flag;
printf("1->按数学成绩排序\n2->按语文成绩排序\n3->按英语成绩排序\n4->按总成绩排序\n5->按总分\n");
printf("请选择成绩由低到高的排序方式:");
scanf("%d",&flag);
switch(flag){
case 0:paixuShuxue();break;
C 作业及参考答案08级1 7章部分答案

1. 请编写程序输入三角形的三条边,判别它们能否形成三角形,若能,则判断是等边、 等腰、还是一般三角形。程序可多次判别,程序结束的条件自行定义。
【解答】未加入循环
#include <iostream.h> void main() { float a, b, c ;
cout << "a, b, c = " ; cin >> a >> b >> c ; if ( a+b > c && b+c > a && c+a > b ) { if ( a == b && b == c )
2. 编一程序显示如下图案,注意行数可由用户确定:
* *** ***** ******* *********
【解答】
#include <iostream.h> void main() { int i,j,k;
for( i=1; i<=5; i++ ) { for( k=1; k<=5-i; k++ ) cout << " ";
【解答】
#include <iostream.h> #include <string.h> #include <stdlib.h> class Book { public:
void setBook(char*,float,int); void borrow(); void restore(); void display();
//输入一行字符 //建立新结点 //插入表头
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
class student
{
public:
student(char *sno1="000",char * sname1="NoName",int sage1=0)
{
sno = new char[8];
sname = new char[8];
strcpy(sno,sno1);
{ return sno; }
char *GetSname() //函数不正确扣一分
{ return sname; }
int GetSage() //函数不正确扣一分
{
return sage;
}
void Set(char *sno1,char * sname1,int sage1) //函数不正确扣一分
strcpy(sname,sname1);
sno = sno1;
sname = sname1;
sage = sage1;
SNum ++;}
student(student & s)
扣一分
{
sno = new char[]; //没有实现深拷贝扣两分
sname = new char[];
strcpy(sno,s.sno);
能够通过构造函数和拷贝构造函数对学生初始化和学生个数累加能够通过析构函数实现学生个数递减构造函数要求带默认形参默认形参值学号为000姓名为noname年龄为0
1.定义一个学生类(student),属性包括学号(sno),姓名(sname)和年龄(sage),以及一个静态成员学生数(snum),
要求:
数:"<<SNum<<endl;
}
private:
char * sno,* sname;
int sage;
static int SNum; //静态成员不正确扣一分
};
int student::SNum = 0; //初始化不正确扣一分
void main()
{
student s1("001","tom",25); //主函数不正确扣两分
a)能够通过构造函数和拷贝构造函数对学生初始化和学生个数累加,
b)能够通过析构函数实现学生个数递减,
c)构造函数要求带默认形参,默认形参值,学号为“000”,姓名为“NoName”,年龄为0。
d)拷贝构造函数要求实现深拷贝,
e)能够用一个函数输出学生的所有属性,
f)能够分别得到学生的各个属性,
g)能够用一个函数设置学生的各个属性,
{
sno = new char[8];
sname = new char[8];
strcpy(sno,sno1);
strcpy(sname,sname1);
sno = sno1;
sname = sname1;
sage = sage1;
}
void show() //函数不正确扣一分
{
cout<<"学号:"<<sno<<"姓名:"<<sname<<"年龄:"<<sage<<"学生
student s2(s1);
s2.Set("002","Jack",ow();
}
strcpy(sname,s.sname);
sage = s.sage;
SNum ++; //没有SNum ++;扣一分
}
~student() //析构函数不正确扣一分
{
SNum--; //没有SNum --;扣一分
delete sno;
delete sname;
}
char *GetSno() //函数不正确扣一分