首页 c语言程序设计现代方法(第二版)习题答案

c语言程序设计现代方法(第二版)习题答案

举报
开通vip

c语言程序设计现代方法(第二版)习题答案Chapter2AnswerstoSelectedExercises2.[was#2](a)Theprogramcontainsonedirective(#include)andfourstatements(threecallsofprintfandonereturn).(b)Parkinson'sLaw:Workexpandssoastofillthetimeavailableforitscompletion.3.[was#4]#include<>intmain(void){intheight=8,length=...

c语言程序设计现代方法(第二版)习题答案
Chapter2AnswerstoSelectedExercises2.[was#2](a)Theprogramcontainsonedirective(#include)andfourstatements(threecallsofprintfandonereturn).(b)Parkinson'sLaw:Workexpandssoastofillthetimeavailableforitscompletion.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:#include<>intmain(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:5618848Valueofj:0Valueofk:6844404Valueofx:Valueofy:Valueofz:Thevaluesprinteddependonmanyfactors,sothechancethatyou'llgetexactlythesenumbersissmall.5.[was#10](a)isnotlegalbecause100_bottlesbeginswithadigit.8.[was#12]Thereare14tokens:a,=,(,3,*,q,-,p,*,p,),/,3,and;.AnswerstoSelectedProgrammingProjects4.[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;}Chapter3AnswerstoSelectedExercises2.[was#2](a)printf("%",x);(b)printf("%",x);(c)printf("%-8.3f",x);(d)printf("%6.0f",x);5.[was#8]Thevaluesofx,i,andywillbe,45,and.6,respectively.AnswerstoSelectedProgrammingProjects1.[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]#include<>intmain(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;}Chapter4AnswerstoSelectedExercises2.[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)00013.[was#8]Theexpression++iisequivalentto(i+=1).Thevalueofbothexpressionsisiaftertheincrementhasbeenperformed.AnswerstoSelectedProgrammingProjects2.[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;}Chapter5AnswerstoSelectedExercises2.[was#2](a)1(b)1(c)1(d)14.[was#4](i>j)-(iintmain(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);elseprintf("%d:%.2dPM\n",hours-12,minutes);return0;}4.[was#8;modified]#include<>intmain(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");elseprintf("Hurricane\n");return0;}6.[was#10]#include<>intmain(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");elseprintf("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;}Chapter6AnswerstoSelectedExercises4.[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);elseprintf("%disprime\n",n);14.[was#16]Theproblemisthesemicolonattheendofthefirstline.Ifweremoveit,thestatementisnowcorrect:if(n%2==0)printf("niseven\n");AnswerstoSelectedProgrammingProjects2.[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;elsecommission=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]#include<>intmain(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]#include<>intmain(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;iintmain(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){intsum=0;charch;printf("Enteraword:");while((ch=getchar())!='\n')switch(toupper(ch)){case'D':case'G':sum+=2;break;case'B':case'C':case'M':case'P':sum+=3;break;case'F':case'H':case'V':case'W':case'Y':sum+=4;break;case'K':sum+=5;break;case'J':case'X':sum+=8;break;case'Q':case'Z':sum+=10;break;default:sum++;break;}printf("Scrabblevalue:%d\n",sum);return0;}6.[was#12]#include<>intmain(void){printf("Sizeofint:%d\n",(int)sizeof(int));printf("Sizeofshort:%d\n",(int)sizeof(short));printf("Sizeoflong:%d\n",(int)sizeof(long));printf("Sizeoffloat:%d\n",(int)sizeof(float));printf("Sizeofdouble:%d\n",(int)sizeof(double));printf("Sizeoflongdouble:%d\n",(int)sizeof(longdouble));return0;}Sincethetypeofasizeofexpressionmayvaryfromoneimplementationtoanother,it'snecessaryinC89tocastsizeofexpressionstoaknowntypebeforeprintingthem.Thesizesofthebasictypesaresmallnumbers,soit'ssafetocastthemtoint.(Ingeneral,however,it'sbesttocastsizeofexpressionstounsignedlongandprintthemusing%lu.)InC99,wecanavoidthecastbyusingthe%zuconversionspecification.Chapter8AnswerstoSelectedExercises1.[was#4]Theproblemwithsizeof(a)/sizeof(t)isthatitcan'teasilybecheckedforcorrectnessbysomeonereadingtheprogram.(Thereaderwouldhavetolocatethedeclarationofaandmakesurethatitselementshavetypet.)2.[was#8]Touseadigitd(incharacterform)asasubscriptintothearraya,wewouldwritea[d-'0'].Thisassumesthatdigitshaveconsecutivecodesintheunderlyingcharacterset,whichistrueofASCIIandotherpopularcharactersets.7.[was#10]constintsegments[10][7]={{1,1,1,1,1,1},{0,1,1},{1,1,0,1,1,0,1},{1,1,1,1,0,0,1},{0,1,1,0,0,1,1},{1,0,1,1,0,1,1},{1,0,1,1,1,1,1},{1,1,1},{1,1,1,1,1,1,1},{1,1,1,1,0,1,1}};AnswerstoSelectedProgrammingProjects2.[was#2]#include<>intmain(void){intdigit_count[10]={0};intdigit;longn;printf("Enteranumber:");scanf("%ld",&n);while(n>0){digit=n%10;digit_count[digit]++;n/=10;}printf("Digit:");for(digit=0;digit<=9;digit++)printf("%3d",digit);printf("\nOccurrences:");for(digit=0;digit<=9;digit++)printf("%3d",digit_count[digit]);printf("\n");return0;}5.[was#6]#include<>#defineNUM_RATES((int)(sizeof(value)/sizeof(value[0])))#defineINITIAL_BALANCEintmain(void){inti,low_rate,month,num_years,year;doublevalue[5];printf("Enterinterestrate:");scanf("%d",&low_rate);printf("Enternumberofyears:");scanf("%d",&num_years);printf("\nYears");for(i=0;i#defineNUM_QUIZZES5#defineNUM_STUDENTS5intmain(void){intgrades[NUM_STUDENTS][NUM_QUIZZES];inthigh,low,quiz,student,total;for(student=0;studenthigh)high=grades[student][quiz];if(grades[student][quiz]=0&&x<=n-1&&y>=0&&y<=n-1);}4.[was#4]intday_of_year(intmonth,intday,intyear){intnum_days[]={31,28,31,30,31,30,31,31,30,31,30,31};intday_count=0,i;for(i=1;i2)day_count++;returnday_count+day;}Usingtheexpressionyear%4==0totestforleapyearsisnotcompletelycorrect.Centuriesarespecialcases:ifayearisamultipleof100,thenitmustalsobeamultipleof400inordertobealeapyear.Thecorrecttestisyear%4==0&&(year%100!=0||year%400==0)6.[was#6;modified]intdigit(intn,intk){inti;for(i=1;imax)max=a[i];returnmax;}(b)intaverage(inta[],intn){inti,avg=0;for(i=0;i0)count++;returncount;}15.[was#12;modified]doublemedian(doublex,doubley,doublez){doubleresult;if(x<=y)if(y<=z)result=y;elseif(x<=z)result=z;elseresult=x;else{if(z<=y)result=y;elseif(x<=z)result=x;elseresult=z;}returnresult;}17.[was#14]intfact(intn){inti,result=1;for(i=2;i<=n;i++)result*=i;returnresult;}19.[was#16]Thefollowingprogramteststhepbfunction:#include<>voidpb(intn);intmain(void){intn;printf("Enteranumber:");scanf("%d",&n);printf("Outputofpb:");pb(n);printf("\n");return0;}voidpb(intn){if(n!=0){pb(n/2);putchar('0'+n%2);}}pbprintsthebinaryrepresentationoftheargumentn,assumingthatnisgreaterthan0.(Wealsoassumethatdigitshaveconsecutivecodesintheunderlyingcharacterset.)Forexample:Enteranumber:53Outputofpb:110101Atraceofpb'sexecutionwouldlooklikethis:  pb(53)findsthat53isnotequalto0,soitcalls    pb(26),whichfindsthat26isnotequalto0,soitcalls      pb(13),whichfindsthat13isnotequalto0,soitcalls        pb(6),whichfindsthat6isnotequalto0,soitcalls          pb(3),whichfindsthat3isnotequalto0,soitcalls            pb(1),whichfindsthat1isnotequalto0,soitcalls              pb(0),whichfindsthat0isequalto0,soitreturns,causing            pb(1)toprint1andreturn,causing          pb(3)toprint1andreturn,causing        pb(6)toprint0andreturn,causing      pb(13)toprint1andreturn,causing    pb(26)toprint0andreturn,causing  pb(53)toprint1andreturn.Chapter10AnswerstoSelectedExercises1.[was#2](a)a,b,andcarevisible.(b)a,anddarevisible.(c)a,d,andearevisible.(d)aandfarevisible.AnswerstoSelectedProgrammingProjects3.[was#4]#include<>/*C99only*/#include<>#include<>#defineNUM_CARDS5#defineRANK0#defineSUIT1/*externalvariables*/inthand[NUM_CARDS][2];/*01________0|____|____|1|____|____|2|____|____|3|____|____|4|____|____|ranksuit*/boolstraight,flush,four,three;intpairs;/*canbe0,1,or2*//*prototypes*/voidread_cards(void);voidanalyze_hand(void);voidprint_result(void);/***********************************************************main:Callsread_cards,analyze_hand,andprint_result**repeatedly.***********************************************************/intmain(void){for(;;){read_cards();analyze_hand();print_result();}}/***********************************************************read_cards:Readsthecardsintotheexternalvariable**hand;checksforbadcardsandduplicate**cards.***********************************************************/voidread_cards(void){charch,rank_ch,suit_ch;inti,rank,suit;boolbad_card,duplicate_card;intcards_read=0;while(cards_read/*C99only*/#include<>#include<>#defineNUM_RANKS13#defineNUM_SUITS4#defineNUM_CARDS5/*externalvariables*/intnum_in_rank[NUM_RANKS];intnum_in_suit[NUM_SUITS];boolstraight,flush,four,three;intpairs;/*canbe0,1,or2*//*prototypes*/voidread_cards(void);voidanalyze_hand(void);voidprint_result(void);/***********************************************************main:Callsread_cards,analyze_hand,andprint_result**repeatedly.***********************************************************/intmain(void){for(;;){read_cards();analyze_hand();print_result();}}/***********************************************************read_cards:Readsthecardsintotheexternal**variablesnum_in_rankandnum_in_suit;**checksforbadcardsandduplicatecards.***********************************************************/voidread_cards(void){boolcard_exists[NUM_RANKS][NUM_SUITS];charch,rank_ch,suit_ch;intrank,suit;boolbad_card;intcards_read=0;for(rank=0;rank
本文档为【c语言程序设计现代方法(第二版)习题答案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
桂桂
工作认真,教学过硬,思想进步,
格式:doc
大小:265KB
软件:Word
页数:82
分类:
上传时间:2021-10-31
浏览量:156