int n = sqrt(MAX) +1 ; for( i=2; i< n; i++) { }
for( i = 2 ; i if( isPrime[i]) cout<< i < //素数的整数倍不是素数,从而筛选掉所有不是素数的数 if(isPrime[i]) { } for(int j=2*i; j isPrime[j]=false; return 0; } (2) 课程管理程序 设计程序对学生选修课程情况进行记录和管理。一名学生可选修多门课程,每条课程记录包括课程名,学分,选修学期和成绩等信息。要求进行如下操作: 1) 输入多个学生的选修课程信息,以清晰的格式写到文件中; 2) 修改某个学生的选课记录,增加新选修的课程; 3) 在文件中查找某个学生的信息,输出所有选修的课程; 4) 删除某个学生的所有选课信息 5) 核查所有不满足毕业条件学生名单(如选修学分不足、某学期不及格课程超过3科等)。 (3)图书馆管理系统 开发图书馆管理系统,完成图书的登记,查询和借阅等功能:定义Book, Reader, Manager等类,管理员拥有对图书信息的录入,查询, 修改,增添与删除等权限;读者拥有查询图书和个人借阅信息等权限;要求用文件记录所有图书和用户信息。请 给出规范额完整的UML类图,设计书和实现代码。 3.思考题: 结合上机的体会,回答下列问题. (1)C++引入了I/O流实现输入输出,与 C语言相比,这种输入输出方法有哪些优点? (2)文本文件与随机文件有什么本质区别?分别适用于什么情况? (3)比较随机读写与顺序读写的不同,是否文本文件只能进行顺序读写操作,二进制文件只能进行随机读写操作? (4)请举例说明IO流中的成员函数getline()与get()的使用有何区别。 实验7 运算符重载、模板 1、 实验目的和要求: (1) 掌握运算符重载的语法要点,学会运算符重载的编程方法。 (2) 理解函数模板、类模板,应用模板函数、模板类。 2、 实验内容 (1) 先读程序,写出程序的输出结果,再运行程序验证程序的输出。用友元重载方式重新编写程序。 #include Vector(int i,int j) {x=i;y=j;} friend Vector operator+=(Vector v1,Vector v2) { v1.x+=v2.x; v1.y+=v2.y; return v1; } Vector operator-=(Vector v) { Vector temp; temp.x=x-v.x; temp.y=y-v.y; return temp; } void display() { cout<<\private: }; int x,y; void main() { Vector v1(1,2),v2(3,4),v3,v4; v3=v1+=v2; v4=v1-=v2; cout<<\ v1.display(); cout<<\ v2.display(); cout<<\ v3.display(); cout<<\ v4.display(); } (2) 定义一个有理数类,重载比较运算符.写一个完整的程序,进行数据成员的设置和输出。 class rational {private: long denom,den; //denom为分子,den为分母 public: rational(int num=0, int denom=1; int operator<(rational r) const; int operator<=(rational r) const; int operator= =(rational r) const; int operator!=(rational r) const; //这里增加赋值和读出函数 } (3) 设计一个复数类,并重载+,-,×,/ 和 <<运算符。写完整程序并调试。 (4)用类模板方式设计一个栈类stack T s[Max]; int top; (5)用函数模板方式设计一个函数模板sort 3、思考题: (1) 什么时候用模板函数,什么时候用函数重载? (2)cout为什么可以直接输出 int类型,double类型等数据类型数据? (3)为什么引入运算符重载? (4)函数模板与同名函数重载的调用规则是什么? 实验8 windows程序设计 1. 实验目的: 键盘消息和鼠标消息综合运用;熟悉文档/视图结构;掌握文档读写的基本方法;掌握MFC消息映射和命令传递内部机制和学会使用消息映射处理方法的使用;掌握MFC应用程序框架中各种文件的组成和功能用法;对话框和控件的综合应用。 2. 实验内容: (1)编写一个简单绘图程序MyDraw,要求实现下列功能: (a)当用户在客户区按下鼠标左键并移动时,根据鼠标移动的轨迹绘制出指定的线段; (b)重绘窗口时能够显示已绘制的线段,并且能够保存绘制好的图形在磁盘文件中; (c)添加键盘消息处理程序,判断当前按下的键是否是Y或y键,并给出相应提示 (2)编写一个windows应用程序,要求在窗口的用户区中绘制一个圆,当单击鼠标左键时,该圆放大,单击右键时,该圆缩小,按下Ctrl键的同时移动鼠标,则该圆会随鼠标的移动而移动。 (3)编写一个Windows应用程序,在窗口用户区中绘制一个矩形,用键盘上的上下左右光标键可以使该矩形分别向4个方向移动,当按下键盘上的Home键时该矩形会从左上角方向增大,当按下键盘上的End键时该矩形会从右下角放下光缩小,当单击鼠标左键时该矩形会恢复到原始尺寸。 (4)编写一个对话框应用程序,实现具有+、-、*、/功能的简单计算器。 (5)定义一个对话框应用程序,具有注册功能和登陆功能。用户有帐户信息和密码;注册时要求帐户不能重复;注册、登陆成功或失败用AfxMessageBox提示。 3. 思考题 结合编程实践思考下列问题: (1)简述构成文档/视图结构应用程序框架的4个MFC派生类,并说出它们的功能。 (2)在文档/视图结构的应用程序中,视图类的对象是如何来获取文档类对象中的数据的? (3)简述在应用程序的窗口中使用一个控件的步骤。