admin 管理员组

文章数量: 1086019


2024年4月22日发(作者:ifround函数的使用方法)

数据结构(大专)第一章习题解答

第一章 绪 论

1.2 设计二次多项式ax

2

+bx+c的一种抽象数据类型,假定起名为QUAdratic,

该类型的数据部分为三个系数项a、b和c,操作部分为:

1. 初始化数据成员a、b和c(假定用记录类型Quadratic定义数据成员),每个

数据成员的默认值为0。

Qiadratic InitQuadratic(float aa=0, float bb=0, float cc=0);

解:

Quadratic InitQuadratic(float aa, float bb, float cc)

Quadratic q;

q·a=aa;

q·b=bb;

q·c=cc;

return q;

2. 做两个多项式加法,即使对应的系数相加,并返回相加结果。

解:Quadratic Add(Quadratic q1,Quadratic q2);

Quadratic q;

q·a=q1·a+q2·a;

q·b=q1·b+q2·b;

q·c=q1·c+q2·c;

retirn q;

3. 据给定x的值计算多项式的值。

float Eval(Quadratic q,float x);

解:

float Eval(Quadratic q, float x)

return(q·a*x*x+q·b*x+q·c);

4. 计算方程ax

2

+bx+c=0的两个实数根,对于有实根、无实根和不是二次方程(即

a= =0)这三种情况都要返回不同的整数值,以便调用函数做不同的处理。

int Root(Quadratic q, float& r1, float& r2);

解:int Root (Quadratic q, float& r1, float& r2)

if(q·a= =0) return –1;

float x =q·b*q·b –4*q·a*q·c;

if(x﹥=0){

r1=(float) (-q·b+sqrt(x))/ (2*q·a);

r2=(float) (-q·b-sqrt(x))/ (2*q·a);

return 1;

else

return 0;

5. 按照ax **2+bx+c的格式(x

2

用x **2表示)输出二次多项式,在输出时在注意

去掉系数为0的项,并且当b和c的值为负时,其前不能出现加号。

void Print(Quadratic q);

解:void print (Quadratic q)

if(q·a) cout ﹤﹤q·a﹤﹤”x**2”;

if(q·b)

if(q·b﹥0)

cout﹤﹤”+” ﹤﹤q·b﹤﹤”x”;

else

cout﹤﹤q·b﹤﹤”x”;

if(q·c)

if(q·c﹥0)

cout﹤﹤”+” ﹤﹤q·c;

else

cout﹤﹤q·c;

cout﹤﹤endl;

1.3 C++函数描述下列每一种算法,并分别求出它们的时间复杂度。

1.比较同一简单类型的两个数据x1和x2的大小,对于x1﹥x2、x1= =x2

这三种不同情况应分别返回’ ﹥’、’=’和’﹤’字符。假定简单类型用

SimpleType表示,它可通过typedef语句定义为任一简单类型。

2.将一个字符串中的所有字符按相反的次序重新放置。

3.求一维double型数组a[n]中的所有元素之乘积。

计算 的值。


本文标签: 类型 返回 函数 相加 系数