C语言实验题目及其解答

实验一
1、有以下C语言程序,功能为输入圆的半径,求出圆周长和圆面积。采用类的形式来改写该程序。(要求半径的默认初值为0)

#include <iostream.h>
const float PI=3.14;
float circumference(float r);
float area(float r);

void main()
{
float r;
cout<<“输入圆的半径值:”<<endl;
cin>>r;
float c=circumference®;
float a=area®;
cout<<“圆的周长是:”<<c<<endl;
cout<<“圆的面积是:”<<a<<endl;
}

float circumference(float r)
{
return 2PIr;
}

float area(float r)
{
return PIrr;
}

2、阅读以下程序,把成员函数的实现修改为类外定义并调试输出结果。

#include <iostream.h>
class counter{
int value;
public:
counter(int number) { value= number; }
void increment() { value++; }
void decrement() { value–; }
int getvalue() { return value; }
void print() { cout <<“计数器的值为 “<<value<<endl; }
};
void main( )
{ counter ct(0);
int top,low;
for (int i=1; i<=20; i++ )
{ ct.increment(); ct.print(); top=ct.getvalue(); }
for (i=1; i<=20; i++ )
{ct.decrement(); ct.print(); low=ct.getvalue(); }
cout << “top=”<<top<<”,low=”<<low<<endl;
}

3、 定义一个类score,它含有私有数据成员english_score(英语分数)、公有成员函数setscore( )和printscore( ),其中setscore( )用来设置english_score的值,printscore( )用来输出english_score的值。在主程序中定义类score的两个对象stu1和stu2,其英语成绩分别为85.5和93.5 ,输出这两个分数。

4、描述一个圆柱的类。成员中有私有数据半径及高,要求有析构函数、构造函数、体积函数、表面积函数。定义类的1个对象,编写主函数进行测试。

实验二
1、有某个圆形游泳池,现需要在其周围建一个圆型过道,并沿着过道的外围修上栅栏。栅栏的价格为35元/米,过道的造价为20元/平方米。过道的宽度为3米,游泳池半径由键盘输入。要求编程计算并输出过道和栅栏的造价(需要定义类与对象)。

2、定义一个描述学生通讯录的类AddressBook,数据成员包括:姓名studentName、学校studentSchool、电话号码phoneNum和邮编mailBox;成员函数包括:输出各个数据成员的值print(),分别获取各个数据成员的值GetName(),GetScool(),GetNum(),GetBox(),构造函数和析构函数。
(注意:要灵活应用string处理字符串的便利性)
1)创建一个对象(王五 上海师范大学 021—12312345 0123344),验证各个成员函数的有效性
要求:将程序分为一个头文件和一个CPP文件,并且成员函数在类外定义
2)将成员函数的权限改为私有的,观察现象。说明出现问题原因。
3)增加一个默认构造函数,在函数体内设置一些默认值。然后用两种不同的方式实例化AddressBook对象
4)定义一个对象数组AddressBook stu[4],采用默认构造函数初始化,用cin接受相应的输入,完成数组对象的私有成员的赋值,并用print输出通讯录
5)将默认构造函数删掉,观察创建对象数组stu[4]时出现什么问题?为什么会这样?

实验三
1、创建一个线段Line类,包含有两个点Point类的对象成员p1, p2和线段长度len,需要求线段长度Length()和线段中点middle_Point(),显示线段端点坐标、显示线段长度、中点show()。Point类有两个私有数据成员x, y(分别表示点的横坐标和纵坐标)。创建对象来测试程序。

2、下面是一个含有派生类的程序:
#include <iostream.h>
class A {
protected:
int m,n;
public:
void set(int a, int b) { m=a; n=b; }
void show() { cout << m << " " << n <<endl; }
};
class B : public A {
int s;
public:
void sets() { s=m*n ; }
void shows() { cout << s << endl; }
};
void main()
{
B obj;
obj.set(2,3);
obj.show();
obj.sets();
obj.shows();
}
在这个程序中,B类的函数sets()能否访问类A中的变量m和n?为什么?

3、利用组合实现Point、Circle和Cylinder类
(1)类的描述如下:
a) Point类基本信息:x坐标,y坐标
b) Cirlce类基本信息:圆心坐标、半径;
c) Cylinder类基本信息:底面圆、高;
其中:成员变量为private属性,成员函数为public属性;
成员函数包括:计算图形的面积GetArea(),显示图形的基本信息show(),修改基本信息函数。
(2)类图如下所示:
在这里插入图片描述

(3)写出各个类的代码。注意:在组合类的构造函数中,实现对成员对象数据成员的初始化。注意调用同名函数的对象类型。
(4)编写一个主函数,将以下数据作为程序输入,并输出相应的值:
Point: (1,4)
Circle: 圆心(20,55) 半径:46
Cylinder:圆心(100,9) 半径:32,高78
在这里插入图片描述

实验四
1、建立基类Building, 作为楼房类,这个基类包含楼层数、房间数、楼房总面积。再建立派生类Home_Arch, Office_Building,分别为住宅楼类、办公室楼类。在类Home_Arch中,包含的内容有卧室数、客厅数、卫生间数和厨房数。在类Office_Building中,包含的内容有办公室数和会议室数。创建对象测试程序。

2、利用继承实现Point、Circle和Cylinder类
(1)类的描述如下:
a) Point类基本信息:x坐标,y坐标
b) Cirlce类基本信息:圆心坐标、半径;
c) Cylinder类基本信息:底面圆、高;
其中:成员变量为private属性,成员函数为public属性;
成员函数包括:计算图形的面积GetArea(),显示图形的基本信息show(),修改基本信息函数。
(2)类图如下所示:
在这里插入图片描述
(3)写出各个类的代码。注意:在派生类的构造函数中,实现对基类数据成员的初始化;在派生类中根据同名覆盖原则定义各自的同名函数实现具体功能
(4)编写一个主函数,将以下数据作为程序输入,并输出相应的值:
Point: (1,4)
Circle: 圆心(20,55) 半径:46
Cylinder:圆心(100,9) 半径:32,高78
(5)通过与实验三的第3个实验题比较,给出组合和继承在解决此类问题的优缺点
在这里插入图片描述

以上所以题目均有完整解答,有需要讨论交流可与我联系。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值