●試題六
閱讀下列程序說明和C++代碼,將應填入(n)處的字句寫在答卷的對應欄內。
【程序6說明】
本程序實現(xiàn)兩個多項式的乘積運算。多項式的每一項由類Item描述,而多項式由類List描述。類List的成員函數(shù)有:
createList():創(chuàng)建按指數(shù)降序鏈接的多項式鏈表,以表示多項式。
reverseList():將多項式鏈表的表元鏈接順序顛倒。
multiplyList(List L1,List L2):計算多項式L1和多項式L2的乘積多項式。
【程序6】
#include<iostream.h>
class List;
class ltem{
friend class List;
private:
double quot;
int exp;
Item*next;
public:
Item(double_quot,int_exp)
{ (1) ;}
};
class List{
private:
Item*list;
public:
List(){list=NULL;}
void reverseList();
void multiplyList(List L1,List L2);
void createList();
};
void List::createList()
{Item*p,*u,*pre;
int exp;
double quot;
list=NULL;
while (1) {
cout<<"輸入多項式中的一項(系數(shù)、指數(shù)):"<<endl;
cin>>quot>>exp:
if(exp<0)break;//指數(shù)小于零,結束輸入
if(quot==0)continue;
p=list;
while( (2) ){//查找插入點
pre=p;p=p->next;}
if(p!=NULL&&exp==p->exp){ p->quot+=quot;continue;}
u= (3) ;
if(p==list) list=u;
else pre->next=u;
u->next=p;}
}
void List::reverseList()
{Item*p,*u;
if(list==NULL)return;
p=list->next;list->next=NULL;
while(p!=NULL){
u=p->next;p->next=list;
list=p;p=u;}
}
void List::multiplyList(List L1,List L2)
{Item*pLl,*pL2,*u;
int k,maxExp;
double quot;
maxExp= (4) ;
L2.reverseList();list=NULL;
for(k=maxExp;k>=0;k--){
pL1=L1.list;
while(pL1!=NULL&&pL1->exp>k)pL1=pL1->next;
pL2=L2.list;
while(pL2!=NULL&& (5) pL2=pL2->next;
quot=0.0;
while(pL1!=NULL&&pL2!=NULL){
if(pL1->exp+pL2->exp==k){
(6) ;
pL1=pL1->next;pL2=pL2->next;
}else if(pL1->exp+pL2->exp>k)pL1=pL1->next;
else pL2=pL2->next;
}
if(quot!=0.0){
u=new Item(quot,k);
u->next=list;list=u;}
}
reverseList();L2.reverseList():
}
void main()
{ListL1,L2,L;
cout<<"創(chuàng)建第一個多項式鏈表\n";L1.createList();
cout<<"創(chuàng)建第二個多項式鏈表\n";L2.createList();
L.multiplyList(L1,L2);
}
2007下半年計算機軟件水平考試模擬試題匯總
希望與其他軟考考生進行交流?點擊進入軟考論壇>>>
進入考試吧博客記錄下自己的備考歷程吧
更多信息請訪問:考試吧軟件水平考試欄目