ENS0531 – 华 中 科 技 大 学 Solved

$ 29.99
Category:

Description

《计算机基础与程序设计(C++)》
实 验 报 告
实验名称:第六次上机实验 实验学时:16 班级:信管(医)1601 姓名:陈淏睿 学号:U201612696 实验日期:12.20-1.7
一、实验目的
⚫ 掌握类的创建方法 学会设计构造函数 掌握复制构造函数的定义 了解组合类的定义
二、实验内容
1.用面向对象的程序设计编程:根据三角形的三边求三角形的面积和周长。(要求 在主函数中能按需求分别显示输出三角形各边长的值。)
1)代码
# include < iostream > # include < math.h > using namespace std ; class tri { double a , b , c , p , l , s ; int judge ; public :
void setlength ( double sa , double sb , double sc ) ;
double length () ; double area () ; double output ( int j );
} ;
void tri :: setlength ( double sa , double sb , double sc )
{ a = sa ; b = sb ; c = sc ; } double tri :: length ()
{ l = a + b + c ; return l ; } double tri :: area ()
{ p = ( a + b + c ) / 2 ; s = sqrt ( p * ( p – a ) * ( p – b ) * ( p – c ) ) ; return s ; } double tri :: output ( int j )
{
judge = j ; switch ( judge )
{ case 1 : return a ;
case 2 : return b ;
case 3 : return c ; }
} int main ()
{
tri shape ;
int j ; double sa , sb , sc , len , area ;
do
{ cout << “输入三角形三边长: ” ; cin >> sa >> sb >> sc ; }
while ( sa + sb <= sc || sb + sc <= sa || sc + sa <= sb ) ; shape.setlength ( sa , sb , sc ) ; len = shape.length () ; area = shape.area () ; cout << “三角形周长:” << len << ” 面积:” << area << endl ;
cout << “请输入你要查询哪条边:” ;
cin >> j ;
cout << “其边长为:” << shape.output ( j ) << endl ; return 0 ;
}
2) 算法说明
1.用专门的函数为数据成员赋值; 2.函数成员在类外定义; 3.计算周长与面积时无需进行值传递,因此括号为空
3) 错误及解决方案
1.对数据成员赋值不熟悉;2.对函数成员的声明与定义不熟悉

2.商品管理系统中要求建一个商品类,主程序中要能够输入商品的名称,数量,单价,总价值;能显示商品的名称,数量,单价,总价值。请编程完成一个商品的上述功能。(具体数据如下:计算机,3 台,4000 元)
1)代码
# include < iostream >
# include < iomanip >
# include < math.h > # include < cstring > using namespace std ; class goods
{
char name[9] ; double price , gross ; int amount ; public :
void input ( char n[9] , double p , int a , double g ) ;
void output () ;
} ;
void goods :: input ( char n[9] , double p , int a , double g ) { strcpy( name , n ) ; price = p ; amount = a ; gross = g ; } void goods :: output ()
{ cout << name << ‘ ‘ << price << ‘ ‘ << amount << ‘ ‘ << gross << endl ; }
int main ()
{
goods screen ; char n[9] ; double p , g ; int a ;
cout << “输入三角形三边长: ” ;
cin >> n >> p >> a >> g ; screen.input ( n , p , a , g ) ; screen.output () ; return 0 ;
}
2) 算法说明 1.用主函数中的变量给类中变量赋值;
3) 错误及解决方案 1.把头文件 cstring 写成 ctirng;2.将字符的 cin 写成 cin.getline 导致输出问题

3.设计一个线段类 line,线段对象的两个顶点的坐标为(x1,y1)和(x2,y2)。函数成员 getlength 用于求线的长度,函数成员 setSp、setDp 修改线段的顶点坐标。请完成该类的定义,并在主函数中完成顶点坐标为(2,5)(10,20)线段的生成,求出其长度,修改其终点坐标为(10,30)后再计算其长度并判断其长度的变化。
1)代码
# include < iostream > # include < math.h > using namespace std ; class line
{
double x1 , y1 , x2 , y2 , len ; public :
void getpos ( double h1 , double z1 , double h2 , double z2 ) ;
double getlength () ;
void setSp ( double h1 , double z1 ) ; void setDp ( double h2 , double z2 ) ;
} ;
void line :: getpos ( double h1 , double z1 , double h2 , double z2 )
{ x1 = h1 ; x2 = h2 ; y1 = z1 ; y2 = z2 ; } double line :: getlength ()
{ len = sqrt ( ( x1 – x2 ) * ( x1 – x2 ) + ( y1 – y2 ) * ( y1 – y2 ) ) ; return len ; }
void line :: setSp ( double h1 , double z1 ) { x1 = h1 ; y1 = z1 ; }
void line :: setDp ( double h2 , double z2 ) { int main ()
{
line length ; x2 = h2 ; y2 = z2 ; }
int j ; double h1 , z1 , h2 , z2 , save ; char judge ;
cout << “输入第一个点的坐标: ” ; cin >> h1 >> z1 ;
cout << “输入第二个点的坐标: ” ; cin >> h2 >> z2 ;
length.getpos ( h1 , z1 , h2 , z2 ) ;
cout << “线段长度:” << length.getlength () << endl ;

do
{
cout << “请输入你要修改的坐标:” ; cin >> j ;
save = length.getlength () ; switch ( j )
{ case 1 :
cout << “输入第一个点的坐标: ” ; cin >> h1 >> z1 ; length.setSp ( h1 , z1 ) ;
break ; case 2 :
cout << “输入第二个点的坐标: ” ; cin >> h2 >> z2 ; length.setDp ( h2 , z2 ) ;
break ;
}
length.getpos ( h1 , z1 , h2 , z2 ) ; cout << “新线段长度:” << length.getlength () << endl ; cout << “长度变化为:” << fabs ( length.getlength () – save ) << endl ;
cout << “是否继续? 是-N/n ;否-其它任意键 ” ; cin >> judge ;
}
while ( judge == ‘N’ || judge == ‘n’ ) ;
return 0 ;
}
2) 算法说明 同前
3) 错误及解决方案 语句末遗漏分号

4.请设一个描述学生基本情况的类 Student,数据成员包括 11 位学号(char 类型数组,默认值为”u0000000000”)、 C++成绩、英语和数学成绩(默认成绩为 0),函数成员包括获取学号、求出总成绩和平均成绩,更改学生学号,各科成绩。
1) 请完成 Student 类的定义
提示:获取学号函数返回学生学号,返回值是学号数组的首地址,所以函数返回值类型应定义为 char * 2) 主函数中测试该类,要求能输出学生的总成绩和平均成绩。若该学生的信息出现错误则可以修改。

# include < iostream >
# include < math.h > # include < cstring > using namespace std ; class Student
{
int C , E , M , S ; char SC[12] ; float A ; public :
Student ( int cpp , int eng , int mat , char SC[] ) ; void changeinf ( int judge ) ; void calculate ( int &sum , float &average ) ; char* getcode ( ) ;
} ;
Student :: Student ( int cpp , int eng , int mat , char SC[] )
{
C = cpp ; E = eng ; M = mat ; SC = SC ;
} void Student :: changeinf ( int judge ) //改信息
{
switch ( judge )
{
case 1 : cin >> C ; break ; case 2 : cin >> E ; break ; case 3 : cin >> M ; break ; case 4 : cin >> SC ; break ;
}
} void Student :: calculate ( int &sum , float &average ) //总成绩+平均成绩
{
S = C + E + M ; A = S / 3 ; sum = S ; average = A ;
}
char* Student :: getcode ( ) //取学号
{
return SC ;
} int main ()
{
Student no1 ( 0 , 0 , 0 , “u0000000000” ) ; int cpp , eng , mat , sum , judge ; float average ; char go ;
do
{

cout << “请选择修改内容 1-C++ 2-英语 3-数学 4-学号 ” ; cin >> judge ;
no1.changeinf ( judge ) ; no1.calculate ( sum , average ) ;
cout << “总成绩:” << sum << ‘ ‘ << “平均成绩:” << average << endl ; cout << no1.getcode ( ) << endl ;
cout << “是否继续?是-y/Y;否-其他任意键 ” ; cin >> go ;
}
while ( go == ‘Y’ || go == ‘y’ ) ;
return 0 ;
}
二、对本次实验内容及方法、手段的改进建议,以及实验心得
实验心得包括:1)哪些知识点已掌握 除了有困难的都掌握了
2) 哪些知识点有困难 数组传递,字符指针
3) 对讲课的建议 无
4) 对没有掌握知识的补救建议 多练

Reviews

There are no reviews yet.

Be the first to review “ENS0531 – 华 中 科 技 大 学 Solved”

Your email address will not be published. Required fields are marked *