非电类上机考试试卷B
- 格式:doc
- 大小:37.00 KB
- 文档页数:2
非电类上机考试试卷_B(2007年6月)
学号 姓名 成绩
(考试时间80分钟,卷面分数30分)
说明:首先在Z盘建立一个以自己的学号命名的文件夹,用于保存上交的考试文件。对以下问题编制程序,调试运行,输出结果。
一、字符串处理与文件读写程序 (15分)
【要求】
(1)主函数建立2个一维字符型数组stg[50]和math[30]。在数组stg中存入字符串:"That formulation f(x)=2xy+6yz-8xz+5 will put in the screen!",并输出至屏幕。
(2)编写函数void Getstg(char *cs, char *ts),功能是将字符串cs中以“f(x)”开头的函数表达式子串提取出来,复制到串ts中。主函数调用Getstg函数将字符串stg中的数学式" f(x)=2xy+6yz-8xz+5"提取出来存入数组math中。
(3)定义一个文件流对象stgio,以文本方式打开磁盘文件"mfile.txt"。要求将数组stg和math中的字符串依次写入文件。
(4)将文件" mfile.txt"中的内容读出,输出至屏幕。
【提示】头文件包含语句为:
#include
#include
【注意】 将源程序以文件名CF1.cpp存入Z盘自己的文件夹中。文件" mfile.txt"也存入同一个文件夹。
二、面向对象编程:模拟图书管理应用程序 (15分)
【要求】按以下描述和要求建立一个类Book,执行主函数对其测试。
Book
私有成员 int No; //图书序号
int cap; //图书库存数量(库存最多允许10本)
double Price; //图书价格
int lend; //已借出图书数量
公有成员 Book (int a=0, int b=0, double c=0); //构造函数(a,b,c初始化数据成
//员中的序号、数量和价格,lend
//赋值0)
int input(double m); //添加图书数量m本(若cap+m超过10则
//提示“只能添加x本” 返回-x。x表示能
//添加的数量)
void lendout(int n); //借出n本图书(如果库存足够,给出“借书
//成功!”的提示,否则显示数量差额的提示信
//息。),对有关的数据成员cap和lend做相应
//的运算。
void giveback (int n); //归还图书n本(cap和lend相应加减n)
int getcap ( ); //返回图书数量
int getlend ( ); //返回借出图书数量 double getprice ( ); //返回图书价格
void display() ; //输出序号、数量、价格和借出数量
主函数要求:
(1) 定义Book类对象A(101, 2, 35.8)和B(102, 5, 66.2)。
(2) 调用函数input为对象A和B做添加图书操作:A. input(3); B. input(8); 如有添加失败,则重新添加合适的数量。调用函数display输出对象A和B的全部数据,每个对象的信息占一行。
(3) 调用函数lendout做借出操作,先比较对象A和B的价格,借较高价格的图书3本,借较低价格的图书8本。再调用函数display输出对象A和B的全部数据。再调用函数giveback做归还操作,还书数量自定。
(4) 计算并输出所有图书的总数量sum。
要求:写出所有成员函数的完整代码。
主函数代码参考:
void main(){
int t,sum=0;
Book A(101, 2, 35.8)和B(102, 5, 66.2);
t=A.input(3);
if(t<0) A.input(t);
t=B.input(8);
if(t<0) B.input(t);
A.display();
B.display();
if( A.getprice() > B.getprice() ){
A.lendout(3); B.lendout(8);
}
else{
B.lendout(3); A.lendout(8);
}
A.display();
B.display();
A.giveback(2);
B.giveback(5);
A.display();
B.display();
sum=A.getcap()+A.getlend()+B.getcap()+B.getlend();
cout<<"所有图书的总数量="< } 【注意】 将源程序以文件名CF2.cpp存入Z盘自己的目录中。