C语言程序设计现代方法第二版习题答案CProgrammingAModernApproach.docx
《C语言程序设计现代方法第二版习题答案CProgrammingAModernApproach.docx》由会员分享,可在线阅读,更多相关《C语言程序设计现代方法第二版习题答案CProgrammingAModernApproach.docx(76页珍藏版)》请在冰豆网上搜索。
![C语言程序设计现代方法第二版习题答案CProgrammingAModernApproach.docx](https://file1.bdocx.com/fileroot1/2022-11/21/b999ba6d-f965-46b5-a7d8-6a4b88a79684/b999ba6d-f965-46b5-a7d8-6a4b88a796841.gif)
C语言程序设计现代方法第二版习题答案CProgrammingAModernApproach
Chapter2
AnswerstoSelectedExercises
2.[was#2](a)Theprogramcontainsonedirective(#include)andfourstatements(threecallsofprintfandonereturn).
(b)
Parkinson'sLaw:
Workexpandssoastofillthetime
availableforitscompletion.
3.[was#4]
#include
intmain(void)
{
intheight=8,length=12,width=10,volume;
volume=height*length*width;
printf("Dimensions:
%dx%dx%d\n",length,width,height);printf("Volume(cubicinches):
%d\n",volume);
printf("Dimensionalweight(pounds):
%d\n",(volume+165)/166);
return0;
}
4.[was#6]Here'sonepossibleprogram:
#includeintmain(void)
{
inti,j,k;floatx,y,z;
printf("Valueofi:
%d\n",i);printf("Valueofj:
%d\n",j);printf("Valueofk:
%d\n",k);
printf("Valueofx:
%g\n",x);printf("Valueofy:
%g\n",y);
printf("Valueofz:
%g\n",z);
return0;
}
WhencompiledusingGCCandthenexecuted,thisprogramproducedthefollowingoutput:
Valueofi:
5618848
Valueofj:
0
Valueofk:
6844404
Valueofx:
3.98979e-34
Valueofy:
9.59105e-39
Valueofz:
9.59105e-39
Thevaluesprinteddependonmanyfactors,sothechancethatyou'llgetexactlythesenumbersissmall.
5.[was#10](a)isnotlegalbecause100_bottlesbeginswithadigit.
8.[was#12]Thereare14tokens:
a,=,(,3,*,q,-,p,*,p,),/,3,and;.
AnswerstoSelectedProgrammingProjects
4.[was#8;modified]
#include
intmain(void)
{
floatoriginal_amount,amount_with_tax;
printf("Enteranamount:
");
scanf("%f",&original_amount);amount_with_tax=original_amount*1.05f;
printf("Withtaxadded:
$%.2f\n",amount_with_tax);
return0;
}
Theamount_with_taxvariableisunnecessary.Ifweremoveit,theprogramisslightlyshorter:
#include
intmain(void)
{
floatoriginal_amount;
printf("Enteranamount:
");
scanf("%f",&original_amount);
printf("Withtaxadded:
$%.2f\n",original_amount*1.05f);
return0;
}
Chapter3
AnswerstoSelectedExercises
2.[was#2]
(a)printf("%-8.1e",x);
(b)printf("%10.6e",x);
(c)printf("%-8.3f",x);
(d)printf("%6.0f",x);
5.
respectively.
[was#8]Thevaluesofx,i,andywillbe12.3,45,and.6,
AnswerstoSelectedProgrammingProjects
1.[was#4;modified]
#include
intmain(void)
{
intmonth,day,year;
printf("Enteradate(mm/dd/yyyy):
");scanf("%d/%d/%d",&month,&day,&year);
printf("Youenteredthedate%d%.2d%.2d\n",year,month,day);
return0;
}
3.[was#6;modified]
#includeintmain(void)
{
intprefix,group,publisher,item,check_digit;
printf("EnterISBN:
");
scanf("%d-%d-%d-%d-%d",&prefix,&group,&publisher,&item,&check_digit);
printf("GS1prefix:
%d\n",prefix);printf("Groupidentifier:
%d\n",group);printf("Publishercode:
%d\n",publisher);printf("Itemnumber:
%d\n",item);printf("Checkdigit:
%d\n",check_digit);
/*Thefiveprintfcallscanbecombinedasfollows:
printf("GS1prefix:
%d\nGroupidentifier:
%d\nPublishercode:
%d\nItemnumber:
%d\nCheckdigit:
%d\n",prefix,group,publisher,item,check_digit);
*/
return0;}
Chapter4
AnswerstoSelectedExercises
2.[was#2]NotinC89.Supposethatiis9andjis7.Thevalueof(-i)/jcouldbeeither—1or—2,dependingontheimplementation.Ontheotherhand,thevalueof-(i/j)isalways—1,regardlessoftheimplementation.
InC99,ontheotherhand,thevalueof(-i)/jmustbeequaltothevalueof-(i/j).
9.[was#6]
(a)638
(b)321
(c)2-13
(d)000
13.[was#8]Theexpression++iisequivalentto(i+=1).Thevalueofbothexpressionsisiaftertheincrementhasbeenperformed.
AnswerstoSelectedProgrammingProjects
2.[was#4]
#include
intmain(void)
{
intn;
printf("Enterathree-digitnumber:
");
scanf("%d",&n);
printf("Thereversalis:
%d%d%d\n",n%10,(n/10)%10,n/100);
return0;
}
Chapter5
AnswerstoSelectedExercises
2.[was#2]
(a)1
(b)1
(c)1
(d)1
4.[was#4](i>j)-(i6.[was#12]Yes,thestatementislegal.Whennisequalto5,itdoesnothing,since5isnotequalto-9.
10.[was#16]Theoutputis
onetwo
sincetherearenobreakstatementsafterthecases.
AnswerstoSelectedProgrammingProjects
2.[was#6]
#includeintmain(void)
{
inthours,minutes;
printf("Entera24-hourtime:
");scanf("%d:
%d",&hours,&minutes);
printf("Equivalent12-hourtime:
");
if(hours==0)
printf("12:
%.2dAM\n",minutes);
elseif(hours<12)
printf("%d:
%.2dAM\n",hours,minutes);
elseif(hours==12)
printf("%d:
%.2dPM\n",hours,minutes);else
printf("%d:
%.2dPM\n",hours-12,minutes);
return0;
}
4.[was#8;modified]
#includeintmain(void)
{
intspeed;
printf("Enterawindspeedinknots:
");scanf("%d",&speed);
if(speed<1)
printf("Calm\n");
elseif(speed<=3)
printf("Lightair\n");
elseif(speed<=27)printf("Breeze\n");
elseif(speed<=47)printf("Gale\n");
elseif(speed<=63)
printf("Storm\n");
else
printf("Hurricane\n");
return0;
}
6.[was#10]
#includeintmain(void)
{
intcheck_digit,d,i1,i2,i3,i4,i5,j1,j2,j3,j4,j5,first_sum,second_sum,total;
printf("Enterthefirst(single)digit:
");
scanf("%1d",&d);
printf("Enterfirstgroupoffivedigits:
");scanf("%1d%1d%1d%1d%1d",&i1,&i2,&i3,&i4,&i5);printf("Entersecondgroupoffivedigits:
");
scanf("%1d%1d%1d%1d%1d",&j1,&j2,&j3,&j4,&j5);printf("Enterthelast(single)digit:
");
scanf("%1d",&check_digit);
first_sum=d+i2+i4+j1+j3+j5;
second_sum=i1+i3+i5+j2+j4;
total=3*first_sum+second_sum;
if(check_digit==9-((total-1)%10))printf("VALID\n");
else
printf("NOTVALID\n");
return0;
}
10.[was#14]
#include
intmain(void)
{
intgrade;
printf("Enternumericalgrade:
");
scanf("%d",&grade);
if(grade<0||grade>100){printf("Illegalgrade\n");return0;
}
switch(grade/10){
case10:
case9:
printf("Lettergrade:
A\n");break;
case8:
printf("Lettergrade:
B\n");break;
case7:
printf("Lettergrade:
C\n");break;
case6:
printf("Lettergrade:
D\n");break;
case5:
case4:
case3:
case2:
case1:
case0:
printf("Lettergrade:
F\n");break;
}
return0;
}
Chapter6
AnswerstoSelectedExercises
4.[was#10](c)isnotequivalentto(a)and(b),becauseiisincrementedbeforetheloopbodyisexecuted.
10.[was#12]Considerthefollowingwhileloop:
while(…){
continue;
Theequivalentcodeusinggotowouldhavethefollowingappearance:
while(…){
gotoloop_end;
loop_end:
;/*nullstatement*/
}
12.[was#14]
for(d=2;d*d<=n;d++)if(n%d==0)
break;
Theifstatementthatfollowstheloopwillneedtobemodifiedaswell:
if(d*d<=n)
printf("%disdivisibleby%d\n",n,d);
else
printf("%disprime\n",n);
14.[was#16]Theproblemisthesemicolonattheendofthefirstline.Ifweremoveit,thestatementisnowcorrect:
if(n%2==0)printf("niseven\n");
AnswerstoSelectedProgrammingProjects
2.[was#2]
#include
intmain(void)
{
intm,n,remainder;
printf("Entertwointegers:
");scanf("%d%d",&m,&n);
while(n!
=0){
remainder=m%n;
m=n;n=remainder;
printf("Greatestcommondivisor:
%d\n",m);
return0;
}
4.[was#4]
#include
intmain(void)
{
floatcommission,value;
printf("Entervalueoftrade:
");
scanf("%f",&value);
while(value!
=0.0f){
if(value<2500.00f)
commission=30.00f+.017f*value;
elseif(value<6250.00f)commission=56.00f+.0066f*value;
elseif(value<20000.00f)
commission=76.00f+.0034f*value;
elseif(value<50000.00f)commission=100.00f+.0022f*value;
elseif(value<500000.00f)
commission=155.00f+.0011f*value;
else
commission=255.00f+.0009f*value;
if(commission<39.00f)
commission=39.00f;
printf("Commission:
$%.2f\n\n",commission);
printf("Entervalueoftrade:
");
scanf("%f",&value);
}
return0;
}
6.[was#6]
#includeintmain(void)
{
inti,n;
printf("Enterlimitonmaximumsquare:
");scanf("%d",&n);
for(i=2;i*i<=n;i+=2)printf("%d\n",i*i);
return0;
}
8.[was#8]
#includeintmain(void)
{
inti,n,start_day;
printf("Enternumberofdaysinmonth:
");
scanf("%d",&n);
printf("Enterstartingdayoftheweek(1=Sun,7=Sat):
");scanf("%d",&start_day);
/*printanyleading"blankdates"*/
for(i=1;iprintf("");
/*nowprintthecalendar*/for(i=1;i<=n;i++){printf("%3d",i);
if((start_day+i-1)%7==0)printf("\n");
}
return0;
}
Chapter7
AnswerstoSelectedExercises
3.[was#4](b)isnotlegal.
4.[was#6](d)isillegal,sinceprintfrequiresastring,notacharacter,asitsfirstargument.
10.[was#14]unsignedint,becausethe(int)castappliesonlytoj,notj*k.
12.[was#16]Thevalueofiisconvertedtofloatandaddedtof,thentheresultisconvertedtodoubleandstoredind.
14.[was#18]No.Convertingftointwillfailifthevaluestoredinfexceedsthelargestvalueoftypeint.
AnswerstoSelectedProgrammingProjects1.[was#2]shortintvaluesareusuallystoredin16bits,causingfailureat182.intandlongintvaluesareusuallystoredin32bits,withfailureoccurringat46341.
2.[was#8]
#includeintmain(void)
{
inti,n;
charch;
printf("Thisprogramprintsatableofsquares.\n");printf("Enternumberofentriesintable:
");scanf("%d",&n);
ch=getchar();
/*disposeofnew-linecharacterfollowingnumberofentries*//*couldsimplybegetchar();*/
for(i=1;i<=n;i++){printf("%10d%10d\n",i,i*i);
if(i%24==0){
printf("PressEntertocontinue...");
ch=getchar();/*orsimplygetchar();*/
}
}
return0;
}
5.[was#10]
#include
#include
intmain(void)
{
intsu