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]中的所有元素之乘积。
计算 的值。
版权声明:本文标题:数据结构(大专)第一章习题解答 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1713794983a651814.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论