非电类上机考试试卷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盘自己的目录中。