阅读以下说明和C++程序,将应填入 (n) 处的字句写在对应栏内。
[说明]
下面程序实现十进制向其它进制的转换。
[C++程序]
#include"ioStream.h"
#include"math.h"
#include
typedef struct node {
int data;
node*next;
}Node;
Class Transform
{
DUDlic:
void Trans(int d,int i); //d为数字;i为进制
void print();
private:
Node*top;
};
void Transform::Trans(int d,int i)
{
int m,n=0;
Node*P;
while(d>0)
{
(1) ;
d=d/i;
p=new Node;
if(!n){
p->data=m;
(2) ;
(3) ;
n++;
}
else{
p->data=m;
(4) ;
(5) ;
}
}
}
void Transform::print()
{
Node*P;
while(top!=NULL)
{
p=top;
if(p->data>9)
cout<<data+55;
else
cout<<data;
top=p->next;
delete p;
}
}
参考答案:m=d%i (2) top=p (3) top->next=NULL (4) p->next=top (5) top=p
解析: 本题考查C++编程,主要考查了链表的使用。 所有的问题只出在函数Trans中,它的功能是完成将十进制数d转换为任意进制i的数,并存在数组中。函数中首先定义了一个指向链表结点的指针,然后开始进行转换,进制转换应该是一个很常见的问题,就是不断的求模运算,所以(1)处应填入“m=d%i”。然后,我们要把求模的结果保存到链表结点中,并使链表首指针指向该结点,结点中指向下一个结点”的指针设为空,所以(2)处应填入“top=p”,(3)处应填入“top->next=NULL”。由于求模运算是从低位到高位逐位求出的,所以在我们在进行完第二次求模运算后,应该将第二次运算的结果放到链表首位,所以(4)处应填入“P->next=top”,(5)处应填入“top=p”。