主观

●试题五

阅读下列程序说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

【程序5说明】

设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值部分(设为一个字符)和用"()"括起来的各子树的列表(如有子树的话),各子列表间用","分隔。例如下面的三叉树可用列表a(b(c,d),e,f(g,h,i))表示。

本程序输入列表,生成一棵M叉树,并由M叉树输出列表。假定输入无错误。

【程序5】

#include

#include

   B.h>

#define M 3

typedef struct node{char val;

struct node*subTree[M];

}NODE;

char buf[255],*str=buf;

NODE*d=NULL

NODE*makeTree()/*由列表生成M叉树*/

{int k;NODE*s;

s= (1) ;

s->val=*str++;

for(k=0;ksubTree[k]=NULL;

if(*str=′(′){

k=0;

do{str++;

s->subTree[k]= (2) ;

if(*str==′)′){str++;break;}

k=k+1;

}while( (3) );

}

return s;

}

void walkTree(NODE*t)/*由M叉树输出列表*/

{int i;

if(t!=NULL){

 (4) 

if(t->subTree[0]==NULL)return;

putchar(′(′);

for(i=0;i

 (5) ;

if(i!=M-1&&t->subTree[i+1]!=      NULL)

putchar(′,′);

}

putchar(′)′);

}

}

void main()

{printf("Enter exp:");

scanf("%s",str);

d=makeTree();

walkTree(d);putchar(′\n′);

}

参考答案
您可能感兴趣的试题

●试题六

阅读下列程序说明和C++代码,将应填入(n)处的字句写在答卷的对应栏内。

【说明】

源程序中定义了Circle类与Money类,Circle类可对半径为r的圆进行周长与面积的计算,而Money类用于计算一圆形游泳池的造价。游泳池四周有原形过道,过道外围上栅栏,过道宽度为3米,根据键入的游泳池半径,每米栅栏价格及每平方米过道价格,即可计算出游泳池的造价。请按要求完成下列操作,将程序补充完整。

①定义符号常量PI(值为3.14159f)与WIDTH(值为3.00f),分别用于表示圆周率与过道的固定宽度。

②定义Circle类默认构造函数,把私有成员radius初始化为参数r的值。

③完成Money类默认构造函数的定义,把私有成员FencePrice(每米栅栏的价格)、ConcretePrice(每平方米过道的价格)初始化为参数f,c的值。

④完成Money类成员函数float Money::TotalMoney(float fencelen, float conarea)的定义,根据参数fencelen(栅栏的长度)和conarea(过道的面积),返回栅栏与过道的总造价。

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件test4.cpp清单如下:

#include

 (1) 

class Circle

{

private:

float radius;

public:

 (2) 

float Circumference(){return 2 * PI * radius;}

float Area(){return PI * radius * radius;}

};

class Money

{

private:

float FencePrice;

float ConcretePrice;

public:

Money(float f,float c);

float TotalMoney(float fencelen, float conarea);

};

Money::Money(float f,float c)

{

 (3) 

}

float Money::TotalMoney(float fencelen, float conarea)

{

 (4) 

}

void main()

{

float radius,fence,concrete;

cout.setf(ios::fixed);

cout.setf(ios::showpoint);

cout.precision (2) ;

cout<< "Enter the radius of the pool: ";

cin >>radius;

cout<< "Enter the FencePrice: ";

cin >>fence; 

cout<< "Enter the ConcretePrice: ";

cin >>concrete;    

Circle Pool(radius);

Circle PoolRim(radius + WIDTH);

Money mon(fence,concrete);

float totalmoney=mon.TotalMoney(PoolRim.Circumference(),(PoolRim.Area() - Pool.Area()));

cout<< "The total money is RMB "<< totalmoney<< endl;

}

¥

订单号:

遇到问题请联系在线客服

订单号:

遇到问题请联系在线客服