课程主页在:http://blog.csdn.net/sxhelijian/article/details/11890759,由课程主页,可以看到完整教学方案,所有参考解答
有网友在我的博客中,在2011级的页面上留言问:“老师,为什么有的学生写着写着就不更新了呢?”这是我常想起来的痛。我没有能够让我的弟子们开成习惯,这是要我们大家一起解决的问题。
有些同学近日的低迷,读读《大学、软件外包》可能会有启发。生命的流程走上了这条分支,就在这条分支上前行。
在BB平台恢复正常之前,上机材料全从老师CSDN博客的课程主页下载。指导书中已经提供了源代码的,从博客中直接复制,以节约时间。
【项目0-掌握有对象的程序结构】不要求写报告
按照封装与信息隐藏的原则,除非特别需要,类中的数据成员需要设置为私有。由此带来的问题是,在类外如何访问这些私有成员?下面4段程序概括了常用的方法。请仔细阅读下面的程序,在阅读过程中,画出对象、变量在内存中的表示图,写出这些程序的运行结果(包括变量的变化过程及程序的最终输出),达到彻底理解这些机制的目标。
(1)通过公共函数为私有成员赋值
#include <iostream>
using namespace std;
class Test
{
private:
int x, y;
public:
void setX(int a)
{
x=a;
}
void setY(int b)
{
y=b;
}
void printXY(void)
{
cout<<"x="<<x<<‘\t‘<<"y="<<y<<endl;
}
} ;
int main()
{
Test p1;
p1.setX(3);
p1.setY(5);
p1.printXY( );
return 0;
}#include <iostream>
using namespace std;
class Test
{
private:
int x,y;
public:
void setX(int a)
{
x=a;
}
void setY(int b)
{
y=b;
}
void getXY(int *px, int *py)
{
*px=x; //提取x,y值
*py=y;
}
};
int main()
{
Test p1;
p1.setX(3);
p1.setY(5);
int a,b;
p1.getXY(&a,&b); //将 a=x, b=y
cout<<a<<‘\t‘<<b<<endl;
return 0;
}#include <iostream>
using namespace std;
class Test
{
private:
int x,y;
public:
void setX(int a)
{
x=a;
}
void setY(int b)
{
y=b;
}
int getX(void)
{
return x; //返回x值
}
int getY(void)
{
return y; //返回y值
}
};
int main()
{
Test p1;
p1.setX(3);
p1.setY(5);
int a,b;
a=p1.getX( );
b=p1.getY();
cout<<a<<‘\t‘<<b<<endl;
return 0;
} #include <iostream>
using namespace std;
class Test
{
private:
int x,y;
public:
void setX(int a)
{
x=a;
}
void setY(int b)
{
y=b;
}
void getXY(int &px, int &py) //引用
{
px=x; //提取x,y值
py=y;
}
};
int main()
{
Test p1,p2;
p1.setX(3);
p1.setY(5);
int a,b;
p1.getXY(a, b); //将 a=x, b=y
cout<<a<<‘\t‘<<b<<endl;
return 0;
}#include<iostream>
#include<Cmath>
using namespace std;
class Triangle
{
public:
void setABC(double x, double y, double z);//置三边的值,注意要能成三角形
void getABC(double *x, double *y, double *z);//取三边的值
double perimeter(void);//计算三角形的周长
double area(void);//计算并返回三角形的面积
private:
double a,b,c; //三边为私有成员数据
};
int main()
{
Triangle tri1; //定义三角形类的一个实例(对象)
tri1.setABC(4,5,6); //为三边置初值
double x,y,z;
tri1.getABC (&x,&y,&z); //将三边的值为x,y,z赋值
cout<<"三条边为:"<<x<<‘\t‘<<y<<‘\t‘<<z<<endl;
cout<<"三角形的周长为:"<< tri1.perimeter()<<‘\t‘<<"面积为:"<< tri1.area()<<endl;
return 0;
}
//请在下面定义Triangle类中的各个成员函数
int main()
{
Triangle tri1; //定义三角形类的一个实例(对象)
double x,y,z;
cout<<"请输入三角形的三边:";
cin>>x>>y>>z;
tri1.setA(x);
tri1.setB(y);
tri1.setC(z); //为三边置初值
if(tri1.isTriangle())
{
cout<<"三条边为:"<<tri1.getA()<<‘,‘<<tri1.getB()<<‘,‘<<tri1.getC()<<endl;
cout<<"三角形的周长为:"<< tri1.perimeter()<<‘\t‘<<"面积为:"<< tri1.area()<<endl;
}
else
cout<<"不能构成三角形"<<endl;
return 0;
}
图1 新建文件
按向导的指示建立文件,图2显示的是有两个源文件、一个头文件的项目结构。
图2 多文件的项目结构
头文件中做声明,源文件中做定义。在需要的位置,如:#include "Triangle.h"(图2中)。include后用引号,优先在当前文件夹下找包含的文件,而用 <> 符号,是要到系统包含文件夹中找包含文件。
用鼠标右击项目名,有Add files...和Remove files...等菜单选项,可以完成多文件项目的组织。
三、项目3的实践内容class Salary
{
public:
void set_salarys( ); //(1)
void add_salarys(int x); //(2)
void sort_salarys(); //(3)
void show_salarys( ); //(4)
private:
double salarys[50]; //工资
int number; //实际人数
}; 请设计成员函数实现下面的功能:使用salary[50]有限制,实际人数少时,会浪费空间,人数多了,无法完成任务。在main()中先输入职工人数,作为参数传递给输入职工工资的成员函数,然后利用教材P217所讲的动态分配内存的运算符new,开辟一个大小正好的连续空间,完成上面的工作。
【项目4扩展2(选做)】
手工输入工资?!太让人不能忍受了。现给出包含了不足500个职工工资的文件salary.txt,从文件中读数据,完成上面的工作。
【项目4扩展3(选做)】
增加一个成员函数,将排序后结果保存到一个文件中。
【项目4扩展4(选做)】将项目4用多文件的方式组织起来。
| china-pub(正在发售) 卓越网(接受预订) 图灵社区 官方试读本下载 豆瓣 | ==================== 迂者 贺利坚 CSDN博客专栏================= |== IT学子成长指导专栏 专栏文章分类目录(不定期更新) ==| |== C++ 课堂在线专栏 贺利坚课程教学链接(分课程年级) ==| ======== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 ======= |
2013级C++第4周(春)项目——再和对象找感觉,布布扣,bubuko.com
原文:http://blog.csdn.net/sxhelijian/article/details/21328759