填空题 阅读以下说明和Java程序,将应填入{{U}} (n) {{/U}}处的字句写在对应栏内。 [说明] 下面程序实现十进制向其它进制的转换。 [Java程序] ClasS Node{ int data; Node next; } class Transform{ private Node top; public void print(){ Node p; while(top!=null){ P=top; if(P.data>9) System.out.print((char)(P.data+55)); else System.out.print(p.data); top=p.next; } } public void Trans(int d,int i){//d为数字;i为进制 int m; {{U}} (1) {{/U}}n=false; Node p; while(d>0){ {{U}} (2) {{/U}}; d=d/i; p=new Node(); if({{U}} (3) {{/U}}){ p.data=m; {{U}} (4) {{/U}}; top=P; n=true; } else{ p.data=m; {{U}} (5) {{/U}}; top=P; } } } }
  • 1、
【正确答案】 1、boolean (2) m=d%i (3) !n (4) top->next=null (5) p->next=top    
【答案解析】[解析] 本题考查Java编程,主要考查了链表的使用。 所有的问题只出在函数Trans中,它的功能是完成将十进制数d转换为任意进制i的数,并存在数组中。变量n被赋值为false,说明n是布尔型变量,Java中布尔型变量关键字为boolean。故(1)应填“boolean”。函数中首先定义了一个指向链表结点的指针(实为链栈),然后开始进行转换,进制转换应该是一个很常见的问题,就是不断地求模运算,所以(2)处应填入“m=d%i”。然后,我们要把求模的结果保存到链栈中。对于链栈,第一个结点比较特殊,需要特殊处理,从if块中的语句“n=true”可知,此处正是处理第一个结点的特殊情况,故(3)应填“!n”,(4)处应填入“top->next=null”。这里采用的链栈,所以(5)处应填入“p->next=top”。