《数据结构》习题集答案C语言版严蔚敏Word格式.docx
- 文档编号:14881715
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:149
- 大小:209.44KB
《数据结构》习题集答案C语言版严蔚敏Word格式.docx
《《数据结构》习题集答案C语言版严蔚敏Word格式.docx》由会员分享,可在线阅读,更多相关《《数据结构》习题集答案C语言版严蔚敏Word格式.docx(149页珍藏版)》请在冰豆网上搜索。
}
基本操作:
InitComplex<
&
C,re,im>
操作结果:
构造一个复数C,其实部和虚部分别为re和im
DestroyCmoplex<
C>
销毁复数C
Get<
C,k,&
e>
用e返回复数C的第k元的值
Put<
C,k,e>
操作结果:
改变复数C的第k元的值为e
IsAscending<
如果复数C的两个元素按升序排列,则返回1,否则返回0
IsDescending<
如果复数C的两个元素按降序排列,则返回1,否则返回0
Max<
C,&
用e返回复数C的两个元素中值较大的一个
Min<
用e返回复数C的两个元素中值较小的一个
}ADTComplex
ADTRationalNumber{
D={s,m|s,m为自然数,且m不为0}
s,m>
InitRationalNumber<
R,s,m>
构造一个有理数R,其分子和分母分别为s和m
DestroyRationalNumber<
R>
销毁有理数R
R,k,&
用e返回有理数R的第k元的值
R,k,e>
改变有理数R的第k元的值为e
若有理数R的两个元素按升序排列,则返回1,否则返回0
若有理数R的两个元素按降序排列,则返回1,否则返回0
R,&
用e返回有理数R的两个元素中值较大的一个
用e返回有理数R的两个元素中值较小的一个
}ADTRationalNumber
1.5试画出与下列程序段等价的框图。
<
1>
product=1;
i=1;
while<
i<
=n>
{
product*=i;
i++;
}
2>
i=0;
do{
}while<
i!
&
<
a[i]!
=x>
>
;
3>
switch{
casex<
y:
z=y-x;
break;
casex=y:
z=abs<
x*y>
default:
z=<
x-y>
/abs<
x>
*abs<
y>
1.6在程序设计中,常用下列三种不同的出错处理方式:
用exit语句终止执行并报告错误;
以函数的返回值区别正确返回或错误返回;
设置一个整型变量的函数参数以区别正确返回或某种错误返回。
试讨论这三种方法各自的优缺点。
exit常用于异常错误处理,它可以强行中断程序的执行,返回操作系统。
以函数的返回值判断正确与否常用于子程序的测试,便于实现程序的局部控制。
用整型函数进行错误处理的优点是可以给出错误类型,便于迅速确定错误。
1.7在程序设计中,可采用下列三种方法实现输出和输入:
通过scanf和printf语句;
通过函数的参数显式传递;
通过全局变量隐式传递。
试讨论这三种方法的优缺点。
用scanf和printf直接进行输入输出的好处是形象、直观,但缺点是需要对其进行格式控制,较为烦琐,如果出现错误,则会引起整个系统的崩溃。
通过函数的参数传递进行输入输出,便于实现信息的隐蔽,减少出错的可能。
通过全局变量的隐式传递进行输入输出最为方便,只需修改变量的值即可,但过多的全局变量使程序的维护较为困难。
1.8设n为正整数。
试确定下列各程序段中前置以记号的语句的频度:
k=0;
=n-1>
k+=10*i;
while<
{
4>
for<
i=1;
i<
=n;
i++>
j=i;
j<
j++>
k++;
5>
j=1;
=i;
k=1;
k<
=j;
k++>
x+=delta;
6>
j=0;
i+j<
if<
i>
j>
j++;
elsei++;
7>
x=n;
y=0;
//n是不小于1的常数
=<
y+1>
*<
y++;
8>
x=91;
y=100;
0>
100>
{x-=10;
y--;
elsex++;
n-1
n+<
n-1>
+<
n-2>
+...+1=
1+<
1+2>
1+2+3>
+...+<
1+2+3+...+n>
=
=
n
向下取整
1100
1.9假设n为2的乘幂,并且n>
2,试求下列算法的时间复杂度及变量count的值〔以n的函数形式表示。
intTime<
intn>
count=0;
x=2;
while<
x<
n/2>
x*=2;
count++;
}
returncount;
count=
1.11已知有实现同一功能的两个算法,其时间复杂度分别为和,假设现实计算机可连续运算的时间为秒〔100多天,又每秒可执行基本操作〔根据这些操作来估算算法时间复杂度次。
试问在此条件下,这两个算法可解问题的规模〔即n值的范围各为多少?
哪个算法更适宜?
请说明理由。
n=40
n=16
则对于同样的循环次数n,在这个规模下,第二种算法所花费的代价要大得多。
故在这个规模下,第一种算法更适宜。
1.12设有以下三个函数:
请判断以下断言正确与否:
f<
n>
是O<
g<
h<
f<
g<
h<
n3.5>
nlogn>
对<
错<
错
1.13试设定若干n值,比较两函数和的增长趋势,并确定n在什么范围内,函数的值大于的值。
的增长趋势快。
但在n较小的时候,的值较大。
当n>
438时,
1.14判断下列各对函数和,当时,哪个函数增长更快?
快<
快
1.15试用数学归纳法证明:
1.16试写一算法,自大至小依次输出顺序读入的三个整数X,Y和Z的值
intmax3<
intx,inty,intz>
if<
z>
returnx;
elsereturnz;
else
returny;
1.17已知k阶斐波那契序列的定义为
,…,,;
试编写求k阶斐波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现。
k>
0为阶数,n为数列的第n项
intFibonacci<
intk,intn>
if<
k<
exit<
OVERFLOW>
int*p,x;
p=newint[k+1];
!
p>
inti,j;
i=0;
k+1;
i++>
if<
k-1>
p[i]=0;
elsep[i]=1;
for<
i=k+1;
n+1;
x=p[0];
for<
j=0;
j<
k;
j++>
p[j]=p[j+1];
p[k]=2*p[k-1]-x;
returnp[k];
1.18假设有A,B,C,D,E五个高等院校进行田径对抗赛,各院校的单项成绩均已存入计算机,并构成一张表,表中每一行的形式为
项目名称
性别
校名
成绩
得分
编写算法,处理上述表格,以统计各院校的男、女总分和团体总分,并输出。
typedefenum{A,B,C,D,E}SchoolName;
typedefenum{Female,Male}SexType;
typedefstruct{
charevent[3];
//项目
SexTypesex;
SchoolNameschool;
intscore;
}Component;
intMaleSum;
//男团总分
intFemaleSum;
//女团总分
intTotalSum;
//团体总分
}Sum;
SumSumScore<
SchoolNamesn,Componenta[],intn>
Sumtemp;
temp.MaleSum=0;
temp.FemaleSum=0;
temp.TotalSum=0;
inti;
n;
a[i].school==sn>
a[i].sex==Male>
temp.MaleSu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 习题集 答案 语言版 严蔚敏