C++程序设计 上机试题
考试时间:180分钟
(注:以下所有题目均要求上机实现)
第一题 ( 20分)
声明数组如下,按要求编写程序, 以f1.cpp作为文件名,存放到D盘:
double a[]={1.1,5.2,7.3,4.4}, b[4];
要求使用泛型算法 完成:
1.将数组a内容反转,并正向 输出数组 a的内容.
2.将数组a的内容拷贝到数组b, 并逆向输出数组b的内容.
3.将数组b按降幂排序,并输出数组b的内容.
4.在数组a中查4.4的位置,并输出.
#include <iostream>
#include <algorithm>
#include<iterator>
#include <functional>
  using namespace std;
void main()
{
double a[]={1.1,5.2,7.3,4.4},b[4];
reverse(a,a+4);
copy(a,a+4,ostream_iterator<double>(cout,"  "));
cout<<endl;
reverse_copy(a,a+4,ostream_iterator<double>(cout,"  ")); 
cout<<endl<<endl;
copy(a,a+4,b); 
copy(b,b+4,ostream_iterator<double>(cout,"  "));
cout<<endl;
reverse_copy(a,a+4,b);
copy(b,b+4,ostream_iterator<double>(cout,"  "));
cout<<endl<<endl;
sort(a,a+4);
copy(a,a+4,ostream_iterator<double>(cout,"  "));
cout<<endl;
sort(a,a+4,greater<double>());
copy(a,a+4,ostream_iterator<double>(cout,"  "));
cout<<endl<<endl;
double *x=find(a,a+4,4.4);
if (x==a+4)
cout<<"no value 4.4";
else
cout<<"have value is  "<<*x; 
cout<<endl;
}
第二题(20分)
定义队列类模板queue(先进先出),队列的大小由使用者确定。要求该类模板对外提供如下二种基本操作:(1)insert(入队列)(2)front(出队列),用数组来实现
    #include < iostream >
    using namespace std;
    template < class T, int size >
printf怎么加endl
    class queue {
              T x [ size ] ;
              int current, front, rear;
          public :
              queue ( ) { current = 0 ; front = 0 ; rear = 0 ;}
              . . . .insert(. . . .);
              . . . .front(. . . .);
      };
template<class T> 
bool Queue::insert ( Queue &Q, T a )    //入队列
  {   
if (front ==0&&rear== current -1)   
 return false; 
 int i; 
i=rear+1; 
Q.x[i] = a;
return true;   
 }   
//--------------出队
 template<class T> 
bool Queue::front( Queue &Q) 
  {   
 if (current==0) // 检测队列是否为空   
 return false; 
int i;   
    for ( i = 0; i < current; i++ ) 
   {   
        Q.x[i]= Q.x[i+1] ;
       } 
    return true; 
   }   
第三题(20分)
设计一个Bank类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等。Bank类包括私有数据成员top(当前账指针),date(日期),money(金额),rest(余额)和sum(累计余额)。有三个成员函数bankin()(处理存入账),bankout()处理取出账)和disp()(输出明细账)请完成函数的实现。
本题部分程序如下:
#include<iostream>
#include<string>
#define Max 100
class Bank
{
int top;
char date[Max][10];//日期
int money[Max];//金额
int rest[Max];//余额
static int sum;//累计余额
public:
Bank(){top=0;}
void bankin(char d[ ],int m){…}
void bankout(char d[ ],int m){…}
void disp(){…};
} ;
#include<iostream>
#include<stdio.h > 
#include<string> 
#define Max 100 
Using namespace std;

class Bank 
{ 
int top; 
char date[Max][10]; // 日期 
int money[Max]; // 金额 
int rest[Max]; // 余额 
static int sum; // 累计余额 
public: 
Bank(){top=0;} 
void bankin(char d[],int m) 
{ 
strcpy(date[top],d); 
money[top]=m; 
sum=sum+m; 
rest[top]=sum; 
top++; 
} 
void bankout(char d[],int m) 
{ 
strcpy(date[top],d); 
money[top]=-m; 
sum=sum-m; 
rest[top]=sum; 
top++; 
} 
void disp(); 
}; 

int Bank::sum=0; 
void Bank::disp() 
{ 
int i; 
printf(" 日期存入 取出余额\n"); 
for(i=0;i<top;i++) 
{ 
printf("%8s",date[i]); 
if(money[i]<0) 
printf(" %6d",-money[i]); 
else 
printf("%6d ",money[i]); 
printf("%6d\n",rest[i]); 
} 
} 


void main() 
{ 
Bank obj; 
obj.bankin("2013.05.14",1000); 
obj.bankin("2013.05.12",2000); 
obj.bankout("2013.03.02",500); 
obj.bankout("2013.04.20",800); 
obj.disp(); 
}