《程序設(shè)計(jì)及算法語(yǔ)言A卷》由會(huì)員分享,可在線閱讀,更多相關(guān)《程序設(shè)計(jì)及算法語(yǔ)言A卷(8頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、東 南 大 學(xué) 考 試 卷(A卷)
學(xué)號(hào) 姓名
密
封
線
課程名稱
程序設(shè)計(jì)及算法語(yǔ)言1
考試學(xué)期
07-08-2
得分
適用專業(yè)
吳健雄學(xué)院
考試形式
閉卷
考試時(shí)間長(zhǎng)度
120分鐘
卷面總分67,另有上機(jī)編程33分,總成績(jī)100分
一、簡(jiǎn)答題(每問(wèn)2分,共6分)
自 覺(jué) 遵 守 考 場(chǎng) 紀(jì) 律 如 考 試 作 弊 此 答 卷 無(wú) 效
下列各段程序都存在錯(cuò)誤,請(qǐng)說(shuō)明錯(cuò)誤所在及理由
(1)類說(shuō)明(2分)
class Square
2、{
private:
int upper_left_x=0, upper_left_y=0;
int side_length=2;
public:
Square();
~Square();
int draw();
};
答:
(2)類說(shuō)明(2分)
class Complex{
double Real,Image ;
public :
Complex(double r=0.0, double i=0
3、.0) {Real=r;Image=i;}
friend Complex operator+(const Complex &,const Complex &);
};
Complex Complex::operator+(const Complex & c1,const Complex & c2){
return Complex(c1.Real+c2.Real,c1.Image+c2.Image);
}
答:
(3)求1到
4、100倒數(shù)和的程序段(1分)
double sum=0;
int i;
for(i=1;i<=100;i++) sum+=1/i;
cout<>in;
if((in>=65)
5、&&(in<=90)) in+=32;
}while((in<97)||(in>122)); (5分)
int line=in-'a';
for (i=0;i<=line;i++){
for(j=line-i;j>0;j--) cout<<" ";
for(j=1;j<=2*i+1;j++) cout<<' '<0;i--){
for(j=0;j<=line-i;j++) cout<<" ";
for(j=1;j<=2*i-1;j++) cout<<'
6、 '<=’A’){
for(i=’A’;i<=w;i++) cout<<’\t’<
7、)
class base{
3.運(yùn)行結(jié)果:
指出錯(cuò)誤并更正:
更正后的運(yùn)行結(jié)果:
public:
virtual void fn(int x){
cout<<"In base class, x="<
11、最后一個(gè)元素從數(shù)組中刪除,值返回
if((3) ) (4) ;
else cout<<"array is empty,can not delete!"< class st
12、ack:private array{
//私有派生屏蔽原有的接口函數(shù)
public:
void push(T data){
(6) ;//調(diào)用基類合適的公有函數(shù)
}
T pop(){
(7) ; //調(diào)用基類合適的公有函數(shù),并返回
}
void stackprint(){print();}
};
2.下面采用冒泡排序的成員函數(shù)模板實(shí)現(xiàn)線性表降序排序。冒泡排序采用從線性表尾部往頭部進(jìn)行,比較運(yùn)算符采用小于運(yùn)算符。(其中8~10三空各2分,
13、共9分)
template class Orderedlist{
int maxsize;
int last;
T slist[size];
public:
Orderedlist(){last=-1;maxsize=size;}
void BubbleSort();
bool Insert(T & elem,int i);
void print();
// 無(wú)關(guān)成員函數(shù)省略,缺省的=等不必定義
};//Insert(T & elem ,int i)和print()不再重復(fù)定義
template
14、e T,int size> void Orderedlist::BubbleSort(){//降序
bool noswap; //交換標(biāo)志
int i,j;
T temp;
for ((8) ){//從線性表尾部往頭部逐個(gè)元素完成排序
noswap=true;
for((9) ){//注意一趟排序的方向
if((10) ){//關(guān)鍵字比較采用小于號(hào),實(shí)現(xiàn)降序排序
tem
15、p=slist[j];
slist[j]=slist[j+1];
slist[j+1]=temp;
(11) ;//標(biāo)識(shí)本趟有交換
}
}
(12) ; //本趟無(wú)交換,則終止算法。
}
}
3.下例線性表的析構(gòu)函數(shù)將線性表存入文本文件,而構(gòu)造函數(shù)由該文件恢復(fù)線性表。(共13.5分)
template class Orderedlist{
int maxsize;
int last
16、;
T slist[size];
public:
Orderedlist();
~Orderedlist();
int getlast(){return last;}
void putlast(int n){last=n;}
T getslist(int k){return slist[k];}
void putslist(T t,int k){slist[k]=t;}
void print(){for(int i=0;i<=last;i++) cout<
17、nt size> Orderedlist::Orderedlist(){
last=-1;
maxsize=size;
T t;
(13) ;//定義流文件
infile.open((14) ); //進(jìn)入時(shí)由文件mylist.txt建立對(duì)象
if(!infile){
cout<<"沒(méi)有數(shù)據(jù)文件"<>t;
18、
(15) ;
(16) ;
}
last--;//對(duì)應(yīng)文本文件結(jié)束處是回車換行后加文件結(jié)束符
infile.close();
print();
cout< Orderedlist::~Orderedlist(){
int i;
(17) ;
outfile.open((18)
19、 ); //退出時(shí)由文本文件保存對(duì)象
if(!outfile){
cout<<"不能打開(kāi)文件"<
20、
4.完善鏈表類模板的復(fù)制構(gòu)造函數(shù)。(共6分)
templateclass List;
templateclass Node{
T info; //數(shù)據(jù)域
Node *link; //指針域
public:
Node(); //生成頭結(jié)點(diǎn)的構(gòu)造函數(shù)
Node(const T & data);
21、 //生成一般結(jié)點(diǎn)的構(gòu)造函數(shù)
friend class List;
//省略其他成員函數(shù)定義
};
templateclass List{
Node *head,*tail; //鏈表頭指針和尾指針
public:
List(); //構(gòu)造函數(shù),生成頭結(jié)點(diǎn)(空鏈表)
List(List &); //拷貝構(gòu)造函數(shù)
~List(); //析構(gòu)函數(shù)
//其它成員函數(shù)略
};
template<
22、typename T>List::List(List & ls){ //拷貝構(gòu)造函數(shù)
Node* TempP=ls.head->link,*P1;
head=tail=(22) ;//動(dòng)態(tài)建立鏈表的頭結(jié)點(diǎn)
while(TempP!=NULL){
P1=new Node((23) );//復(fù)制一個(gè)鏈表結(jié)點(diǎn)
P1->link=tail->link;//向后生成鏈表
(24) ;
tail=P1;
(25) ;//準(zhǔn)備復(fù)制ls的下一個(gè)結(jié)點(diǎn)
}
}
共 8 頁(yè) 第 8 頁(yè)