2016数据结构基础(C语言版)习题及答案(英文版)Word格式文档下载.docx
《2016数据结构基础(C语言版)习题及答案(英文版)Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《2016数据结构基础(C语言版)习题及答案(英文版)Word格式文档下载.docx(171页珍藏版)》请在冰豆网上搜索。
CHAPTER1
Chapter1,Pages16-17
Problem1.aThisstatementisapoorlyphrasedversionofFermat'
slasttheorem.Weknowthatwecanfindn>
2forwhich‚theequationholds.Fermatscribbledanoteonatextmarginindicatingthathehadfoundthesolutionforn=2.Unfortunately,theproofdiedwithhim.Becausethestatementisphrasedasaquestion‚ratherthanaclearlydefinedalgorithm,itlacksdefiniteness.
Problem1.bThisstatementviolatesnotonlytherulesofmathematics,butthecriterionofeffectiveness.Wecancomputeonlythosethingsthatarefeasible,anddivisionbyzeroismathematicallyundefined
Page17,Exercise3
#include#include#include
#defineTRUE1
#defineFALSE0
#defineMAX_STRING100voidtruth_table(int);
intmain(){intn;
printf("
n:
(>
=0):
"
);
scanf("
%d"
&
n);
while(n<
=0)
{/*errorloop*/printf("
}
truth_table(n);
voidtruth_table(intn)
{/*generateatruth_tablebytransforming#ofpermutationsintobinary*/
inti,j,div,rem;
charstring[MAX_STRING];
for(i=0;
i<
pow(2,n);
i++)
{/*numberofpermutationsorrowsinthetable*/strcpy(string,"
\0"
div=i;
for(j=n;
j>
0;
j--)
{/*numberofbitsneededforeachrow*/rem=div%2;
div=div/2;
if(!
rem)strcat(string,"
FALSE"
elsestrcat(string,"
TRUE "
%s\n"
string);
Page17,Exercise4
#include
intmin(int,int);
#defineTRUE1
intmain()
{
intx,y,z;
x:
x);
y:
scanf("
y);
z:
z);
if(min(x,y)&
&
min(y,z)){/*xissmallest*/printf("
%d"
x);
if(min(y,z))printf("
%d%d\n"
y,z);
elseprintf("
%d%d\n"
z,y);
elseif(min(y,x)&
min(y,z)){/*yisthesmallest*/printf("
y);
if(min(x,z))printf("
x,z);
z,x);
else
%d%d%d\n"
z,y,x);
intmin(inta,intb){
if(a<
b)returnTRUE;
returnFALSE;
Page17,Exercise7
doubleiterFact(int);
doublerecurFact(int);
scanf("
0)
{/*errorloop*/
%dfactorialis%f.\n"
n,iterFact(n));
printf("
n,recurFact(n));
doublerecurFact(intn)
{/*recursiveversion*/
if((n==0)||(n==1))return1.0;
returnn*recurFact(n-1);
doubleiterFact(intn)
{/*findthefactorial,returnasadoubletokeepitfromoverflowing*/
inti;
doubleanswer;
if((n==0)||(n==1))return1.0;
answer=1.0;
for(i=n;
i>
1;
i--)answer*=i;
returnanswer;
Page17,Exercise8
intiterFib(int);
intrecurFib(int);
%dFibonacciis%d.\n"
n,iterFib(n));
n,recurFib(n));
intrecurFib(intn)
if((n==0)||(n==1))return1;
returnrecurFib(n-1)+recurFib(n-2);
intiterFib(intn)
intfib,fib1,fib2;
if((n==0)||(n==1))return1;
fib1=fib2=1;
for(i=2;
=n;
i++){fib=fib1+fib2;
fib2=fib1;
fib1=fib;
returnfib;
Page17,Exercise9
doublerecurBinom(int,int);
doubleiterBinom(int,int);
doublerecurFact(intn);
intmain(){
intn,m;
m:
m);
while(m<
%dm:
%dRecursiveBinomialcoefficientis%f.\n"
n,m,recurBinom(n,m));
%dIterativeBinomialcoefficientis%f.\n"
n,m,iterBinom(n,m));
doubleiterBinom(intn,intm)
{/*definedasn!
/(m!
-(n-m)!
)*/inti;
doublenFact,mFact,nMinusMFact;
if(n==m)return1;
if((n==0)||(n==1))nFact=1;
else {
nFact=1;
i--)nFact*=i;
if ((m==0)||(m==1))mFact=1;
else{
mFact=1;
for(i=m;
i--)mFact*=i;
if(((n-m)==0)||((n-m)==1))nMinusMFact=1;
nMinusMFact=1;
for(i=n-m;
i--)nMinusMFact*=i;
returnnFact/(mFact*nMinusMFact);
doublerecurBinom(intn,intm)
returnrecurFact(n)/(recurFact(m)*recurFact(n-m));
Page17,Exercise11
#defineTower11
#defin