5、(15) p2->next (16) p2->next (17) p2
算法语言与程序设计Ⅱ期终考试(10-11-3学期)
非电类 上机考试试卷 A (6月16日)
学号 姓名 机位号 成绩
(考试时间70分钟,每题50分,共100分)
说明:首先在Z盘建立一个以自己的学号命名的文件夹,用于保存上交的考试文件。先在D或E盘对以下问题按要求编缉程序,调试运行,输出结果。然后将源文件和自己的头文件(若存在)复制到Z盘自己的文件夹中。 一、输入并调试下面程序 (50分)
【程序功能】下列程序是一个选择排序(升序)程序,通过随机函数生成0-99之间随机整数放入数组,要求排序后输出到屏幕和数据文件,数据文件的文件名必须是data学号.txt。 【程序调试要求】在给定的程序中,可以修改或适当增加少数几个语句,但不允许删除语句。程序中每正确地修改一处错误得10分。
【注意】 将源程序以“学号_1.cpp”为文件名存入Z盘自己的目录中。
#include
void sort(int *p,int n) { }
int i,j,k;
for(i=0;i for(j=i+1;j if(p[i] k=p[i]; p[i]=p[j]; p[j]=k; void main(void) { int a[10],*p=a; srand(time(NULL)); for(int i=0;i<10;i++) *p++=rand(); //初始化随机发生器 for(i=0;i<10;i++) cout< sort(p,10); ofstream outfile; for(i=0;i<10;i++) { cout< } } cout< 二、面向对象编程 (50分) 【题目】编写一个简单的考生成绩管理系统。 【要求】按以下描述和要求建立类Examinee,完善类中所有成员函数的代码。 注:不允许擅改成员权限及增加、删除函数和改变函数的功能。包括主函数每个函数各为10分。 Examinee 私有int id; // 准考证号 成员 float score; //考试成绩 公有Examinee(int eid=0, float es=0); //带缺省值的构造函数,成员 形参eid用于初始化id, es用于初始化score void input(); // 键盘输入一位考生的准考证号和成绩 int operator >(Examinee & b); // 大于”>”运算符重载: 比较两个考生成绩,若当前考生成绩大于考生b成绩,返回1;否则返回0; 友元friend ostream & operator <<(ostream &os, Examinee & 函数 b); // 通过输出流对考生信息进行输出,准考证号和考试成绩各占8个符号宽度,考生信息独占一行; 2. 建立主函数进行测试: 1) 用缺省值建立N名考生的Examinee类的对象数组(数组名为ks),在循环中调用成员函数从键盘输入每位考生的信息数据; 2)利用“>”运算符重载函数找出考试成绩最高和最低的考生,利用输出流运算符<<重载函数输出他们的信息到屏幕; 3. 测试中,假定N=4,测试用学生信息: 准考证号 考试成绩 10 82 20 86 15 75 30 78 【提示】重载输出流运算符<<的函数中用os代替cout,函数返回os。在主函数中用cout输出每个对象。 【注意】 将源程序以文件名“学号_2.cpp”存入Z盘自己的文件夹中。 算法语言与程序设计Ⅱ期终考试(10-11-3学期) 非电类 上机考试试卷 B (6月16日) 学号 姓名 机位号 成绩 (考试时间70分钟,每题50分,共100分) 说明:首先在Z盘建立一个以自己的学号命名的文件夹,用于保存上交的考试文件。先在D或E盘对以下问题按要求编缉程序,调试运行,输出结果。然后将源文件和自己的头文件(若存在)复制到Z盘自己的文件夹中。 一、输入并调试下面程序 (50分) 【程序功能】下列程序是一个冒泡排序(升序)程序,通过随机函数生成20-49之间随机整数放入数组,要求排序后输出到屏幕和数据文件,数据文件的文件名必须是data学号.txt。 【程序调试要求】在给定的程序中,可以修改或适当增加少数几个语句,但不允许删除语句。程序中每正确地修改一处错误得10分。 【注意】 将源程序以“学号_1.cpp”为文件名存入Z盘自己的目录中。 #include void sort(int *p,int n) { } void main(void) int i,j,k; for(i=0;i for(j=n-1;j>i;j--) if(p[j]>p[j-1]) { } k=p[j]; p[j]=p[j-1]; p[j-1]=k; { int a[10],*p=a; srand(time(NULL)); for(int i=0;i<10;i++) *p++=rand(); //初始化随机发生器 for(i=0;i<10;i++) cout< sort(p,10); ofstream outfile; for(i=0;i<10;i++) { outfile< cout< } } outfile< 二、面向对象编程 (50分) 【题目】编写一个简单的复数计算程序。 【要求】按以下描述和要求建立类Complex,完善类中所有成员函数的代码。 注:不允许擅改成员权限及增加、删除函数和改变函数的功能。包括主函数每个函数各为10分。 Complex 私有float r; //实部 成员 float i; //虚部 公有Complex(float rr=0, float ii=0); //带缺省值的构造函数,形成员 参rr用于初始化实部r, ii用于初始化虚部i void input(); // 键盘输入一个复数的实部和虚部 int operator < (Complex& b); // 小于”<”运算符重载: 比较两个复数的模,若当前复数模小于复数b的模,返回1;否则返回0;; 友元friend ostream & operator <<(ostream &os, Complex& b); 函数 // 通过输出流对复数信息进行输出,实部和虚部各占8个符号宽度,每个复数独占一行; 2. 建立主函数进行测试: 1) 用缺省值建立N个复数的对象数组(数组名为fs),在循环中调用成员函数从键盘输入每个复数的信息数据; 2)利用“<”运算符重载函数找出模最大和最小的复数,利用输出流运算符重载函数输出他们的信息到屏幕; 3)复数模的计算公式为:r*r?i*i,求平方根的函数为sqrt(double),包含在头文件math.h中; 3. 测试中,假定N=4,测试用复数信息: 实部 虚部 20 6 10 2 30 8 15 5 【提示】重载输出流运算符<<的函数中用os代替cout,函数返回os。在主函数中用cout输出每个对象。 【注意】 将源程序以文件名“学号_2.cpp”存入Z盘自己的文件夹中。