c程序设计语言第二版答案_第1页
c程序设计语言第二版答案_第2页
c程序设计语言第二版答案_第3页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、c程序设计语言第二版答案2. 【篇一:c语言程序设计现代方法(第二版)习题答案】answerstoselectedexerciseswas#2(a)theprogramcontainsonedirective(#include)andfourstatements(threecallsofprintfandonereturn).(b)parkinsonslaw:workexpandssoastofillthetimeavailableforitscompletion.3. was#4#includestdio.hintmain(void)intheight=8,length=12,width=1

2、0,volume;volume=height*length*width;printf(dimensions:%dx%dx%dn,length,width,height);printf(volume(cubicinches):%dn,volume);printf(dimensionalweight(pounds):%dn,(volume+165)/166);return0;was#6heresonepossibleprogram:#includestdio.hintmain(void)(inti,j,k;floatx,y,z;printf(valueofi:%dn,i);printf(value

3、ofj:%dn,j);printf(valueofk:%dn,k);printf(valueofx:%gn,x);printf(valueofy:%gn,y);printf(valueofz:%gn,z);return0;whencompiledusinggccandthenexecuted,thisprogramproducedthefollowingoutput:valueofi:5618848valueofj:0valueofk:6844404valueofx:3.98979e-34valueofy:9.59105e-39valueofz:9.59105e-39thevaluesprin

4、teddependonmanyfactors,sothechancethatyoullgetexactlythesenumbersissmall.4. was#10(a)isnotlegalbecause100_bottlesbeginswithadigit.8. was#12thereare14tokens:a,=,(,3,*,q,-,p,*,p,),/,3,and;.answerstoselectedprogrammingprojectswas#8;modified#includestdio.hintmain(void)floatoriginal_amount,amount_with_ta

5、x;printf(enteranamount:);scanf(%f,original_amount);amount_with_tax=original_amount*1.05f;printf(withtaxadded:$%.2fn,amount_with_tax);return0;theamount_with_taxvariableisunnecessary.ifweremoveit,theprogramisslightlyshorter:#includestdio.hintmain(void)floatoriginal_amount;(a) printf(enteranamount:);sc

6、anf(%f,original_amount);printf(withtaxadded:$%.2fn,original_amount*1.05f);return0;chapter3answerstoselectedexerciseswas#2printf(%-8.1e,x);printf(%10.6e,x);printf(%-8.3f,x);printf(%6.0f,x);2. was#8thevaluesofx,i,andywillbe12.3,45,and.6,respectively.answerstoselectedprogrammingprojectswas#4;modified#i

7、ncludestdio.hintmain(void)(intmonth,day,year;printf(enteradate(mm/dd/yyyy):);scanf(%d/%d/%d,month,day,year);printf(youenteredthedate%d%.2d%.2dn,year,month,day);return0;was#6;modified#includestdio.hintmain(void)(intprefix,group,publisher,item,check_digit;printf(enterisbn:);scanf(%d-%d-%d-%d-%d,prefix

8、,group,publisher,item,check_digit);printf(gs1prefix:%dn,prefix);printf(groupidentifier:%dn,group);printf(publishercode:%dn,publisher);printf(itemnumber:%dn,item);printf(checkdigit:%dn,check_digit);/*thefiveprintfcallscanbecombinedasfollows:printf(gs1prefix:%dngroupidentifier:%dnpublishercode:%dnitem

9、number:%dncheckdigit:%dn,prefix,group,publisher,item,check_digit);*/return0;chapter4answerstoselectedexercises1. was#2notinc89.supposethatiis9andjis7.thevalueof(-i)/jcouldbeeitherTor尹,dependingontheimplementation.ontheotherhand,thevalueof-(i/j)isalwaysT,regardlessoftheimplementation.inc99,ontheother

10、hand,thevalueof(-i)/jmustbeequaltothevalueof-(i/j).(a) was#66383212-130004. 13.was#8theexpression+iisequivalentto(i+=1).thevalueofbothexpressionsisiaftertheincrementhasbeenperformed.answerstoselectedprogrammingprojects2.was#4#includestdio.hintmain(void)intn;printf(enterathree-digitnumber:);scanf(%d,

11、n);printf(thereversalis:%d%d%dn,n%10,(n/10)%10,n/100);return0;chapter5answerstoselectedexercises2.was#21111was#4(ij)-(ij)was#12yes,thestatementislegal.whennisequalto5,itdoesnothing,since5isnotequalto-9.was#16theoutputisonetwosincetherearenobreakstatementsafterthecases.answerstoselectedprogrammingpro

12、jects2.was#6【篇二:c语言与程序设计-第2章课后习题参考答案】txt关键字是注释空白符八进制常量是三字符序列字符串常量是括号是2.2c编译器可将以下每一个源字符串分解为哪些记号?不必考虑记号组合是否合法x+yx,+,+,y-0xabl-,0xabl(8) (5)x*2x,*,*,2x?/x?/a?ba,?,bx-+=yx,-,+=,yintx=+10intx,=,+,10stringfoostring,foo这道题当时改的时候有几个小题改得有错误,注意!2.3以下哪些不是标识符,为什么?标识符由字母、数字和下划线组成,但首字符必须是字母或下划线。4th不是,以数字开头;sizeof

13、不是(标准c的关键字)_limit是_is2是xyshould是x*y不是,*非法o_no_o_no是temp-2不是,-非法isnt不是,非法enum不是(标准c的关键字。注:关键字也称为保留字,是被系统赋予特定含义并有专门用途的标识符。关键字不能作为普通标识符,但可以作为宏名。所有预处理均发生在识别这些关键字之前。)2.4在以下表示中,哪些是合法常数,哪些是非法常数?对于合法常数,指出其类型;对于非法常数,说明其错误原因。21合法,long长整型不合法,单引号组中的单引号前需要转义字符.12合法,double双精度浮点型0x1ag不合法,g不是16进制数中的符号,也不表示任何类型33333

14、合法,int整形a合法,字符串常量合法,字符串常量0.1合法,longdouble长双精度浮点型e20不合法,缺少尾数部分0377ul合法,unsignedlong无符号长整型18不合法,存在非8进制位0xa不合法,不符合十六进制字符码表示规则xhh0x9cfu合法,unsignedint无符号整形45合法,char字符型1.e-5合法,double双精度浮点型0合法,char字符型f合法,float浮点型34不合法,缺少转义符合法,char字符型p35,双引号作为字符常量时既可用图形符号也可用转义序列表示a合法,char字符型2.6以下的变量声明语句中有什么错误?(1) inta;b=5;第

15、一个分号改为逗号inta,b=5;(2) doubelh;关键字错误doubleh;(3) intx=2.3;类型错误floatx=2.3;(4) constlongy;需要赋初值constlongy=0;(5) floata=2.5*g;g未定义变量intg=1;floata=2.5*g;(6) inta=b=2;b未定义变量inta=2,b=2;2.7设变量说明为:inta=1,b=2,c=3,d;doublex=2.0;y=7.7;请给出以下表达式的值。(1) +a*b-4(2) !a+b/c0(3) a=-b+ctrued=a+,a*=b+1d为1,a为6(5) d=y+=1/xy为8

16、.2,d为8(6) abx=yfalsex=(int)y/b+x为3.0(8) a-?+a:+aa为1(9) a+xa+a108(10) a=0,-a,a+=(a+)-a表达式结果为-1,a的值为02.8设i和j是int类型,a和b是double类型,以下表达式哪些是错误的,为什么?a=b=c错误,c未定义且逻辑错误a八045正确7+i*-j/3正确39/-+i-+29%j正确(5)a*+-b错误,+需要左值a|bAi错误,八号左侧类型为doublei*j%a错误,右侧类型为doublei/j2正确a+=i+=1+2正确int(a+b)正确,vc+下可运行2.9下面代码的执行结果是什么?cha

17、ra=1,b=2,c=3;printf(%d,%d,%d,%dn,sizeof(c),sizeof(a),sizeof(c=a),sizeof(a+b+7.7);结果:1,4,1,82.10设变量说明为:unsignedshortx=1,y=2,z=4,mask=0xc3,w;shortv;请给出以下表达式的值。xx0v=x-2(3)w=xAx65535x|yx|z5w=y|z,(w3)+(w1)60w=x|yx|zyAmaskx113v=-1,v=1-2v=x|x-1w=xAy65532x|y|z232.11写一个表达式,将整数k的高字节作为结果的低字节,整数p的低字节作为结果的高字节,拼成

18、一个新的整数。表达式为:32位k24|(k2558)8|(p25516)8|p2416位(k8)|(p8)2.12写一个表达式,将整数x向右循环移位n位。表达式为:32位x(32-(n%32)|x(n%32)16位x(16-(n%16)|x(n%16)2.13写一个表达式,将整数x从第p位开始的向右n位p从右至左编号为015翻转即1变0,0变1,其余各位保持不变。表达式为:xA(0)(p+1-n)(unsignedshort)0)(16-p-1)或:xA(0(16-n)(p+1-n)2.15表达式v=(v-1)能实现将v最低位的1翻转。比方v=108,其二进制表示为01101100,则v=(v

19、-1)的结果是01101000。用这一方法,可以实现快速统计v的二进制中1的位数,只要不停地翻转v的二进制数的最低位的1,直到v等于0即可。请用该方法重写例2-18。#includestdio.hintmain(void)(unsignedchardata,backup,t=0;intparity=0;data=getchar();backup=data;while(data)(t+;data=(data-1);data=backup|(parity7)A(t7);printf(thedatais%#xn,backup);printf(parity-checkcodeis%#xn,data);

20、return0;2.16写一个表达式,其结果是a、b和c这3个数中最大的一个。表达式为:ab?ac?a:c:bc?b:c或(ab)?(ac?a:c):(bc?b:c)或(ab)?(ac)?a:c):(bc)?b:c)2.18写一个表达式,如果整数a能被3整除且个位数字是5,则结果为非0,否则为0。表达式为:a%3?0:(a%10=5?1:0)2.19定义一个枚举类型enummonth,用来描述一年12个月:一月jan、二月feb、十二月dec,并编写一个程序,根据用户输入的年份,输出该年各月的英文名及天数。#includestdio.henumyearjan,feb,mar,apr,may,j

21、un,jul,aug,sep,oct,nov,dec;intmain(void)2.20设变量说明为:floata;doubleb;charc;intx;试将以下表达式中隐含的类型转换改为用强制类型转换运算符转换的表达式。x=(int)(a-(float)(int)c+a)b*(double)x+(double)(int)c-(int)0)(x0)?(double)a:benumyaermonth;intyear_num,year_days=365;char*month_name=january,february,march,april,may,june,july,august,septemb

22、er,october,november,december;intmonth_days=31,28,31,30,31,30,31,31,30,31,30,31;scanf(%d,year_num);if(!(year_num%4)year_num%100II!(year_num%400)month_days1=29,year_days=366;printf(n%dn,year_days);for(month=jan;month=dec;month+)printf(%s,%dn,month_namemonth,month_daysmonth);return0;【篇三:C语言程序设计学习指导第二版答

23、案】.C4.c5.d6.a7.b8.c9.a10.d11.b12.c13.a14.d15.b16.b第二章一、d2.a3.c4.d5.a6.b7.a8.b9.a10.d11.b12.c13.c14.d15.c16.b17.d18.a19.c20.b21.b22.d23.a24.bb26.b27.b25. 第三章一、d2.c3.a4.c5.a6.c7.c8.d9.a10.d11.ac14.c15.a16.b17.a18.a19.c20.a21.b22.d23.b24.bdd27.c28.c第四章一、b2.c3.d4.d5.d6.c7.b8.d9.c10.d11.b12.a13.cc15.b16.

24、ab17.ddoublefun(intm)(doubley=0;y=sin(m)*10;return(y);floatfun(floath)(return(long)(h*100+0.5)/100.0;doublefun(doublem)(floatn;n=(5.0/9.0)*(m-32);returnn;charfun(charc)(c=c+32;returnc;146f12.b一、1.d2.c3.c4.c5.a6.a7.c8.a9.b10.b11.a12.b13.c14.c15.d16.a17.d18.a19.a20.a21.b22.d23.c24.b25.d二、1.intfun(intn

25、)(intbw,sw,gw;bw=n/100;sw=(n-bw*100)/10;gw=n%10;if(n=bw*bw*bw+sw*sw*sw+gw*gw*gw)return1;elsereturn0;1. floatfun(floatx)(floaty;if(x0x!=-3.0)y=x*x+x+6;elseif(x=0x10.0x!=2.0x!=3.0)y=x*x-5*x+6;elsey=x*x-x-1;returny;2. doubley(floatx)(doublez;if(x10)z=exp(x);elseif(x-3)z=log(x+3);elsez=sin(x)/(cos(x)+4)

26、;return(z);4.intfun(intx)(intk;k=x*x;if(k%10=x)|(k%100=x)return1;elsereturn0;第六章1.c2.c3.d4.b5.c6.a7.a8.a9.d10.a11.d12.c13.c14.c15.c16.a17.a18.b19.a20.d21.b22.c23.c24.d25.bbc28.a二、位置1:r!=0【或】0!=r【或】r位置2:r=m%n【或】r=m-m/n*n位置3:n位置4:gcd,lcm【或】n,lcm位置1:k=0位置2:n%10【或】n-n/10*10【或】n-10*(n/10)位置3:while(n0)【或】

27、while(0n)【或】while(n!=0)【或】while(0!=n)位置4:printf(n)位置1:x!=0【或】x位置2:else【或】elseif(x%2=1)【或】elseif(x%2!=0)【或】if(x%2)位置3:scanf(%d,x)位置4:av2=s2/j位置1:n=0位置2:i=300【或】i300【或】300=i【或】300i位置3:i%7=0|i%17=0【或】!(i%7)|!(i%17)【或】!(i%17)|!(i%7)【或】!(i%7i%17)位置4:n%5=0【或】!(n%5)【或】n/5*5=n位置1:s=0位置2:i+=2【或】i=i+2【或】i=2+i

28、【或】i+,i+位置3:j=i【或】i=j【或】ji+1【或】i+1j【或】j1+i【或】1+ij位置4:f=f*j【或】f=j*f三、1.位置1:#includemath.h【或】#includemath.h位置2:floats=0,t=1,p=1;【或】floats=0,p=1,t=1;【或】floatp=1,s=0,t=1;【或】floatp=1,t=1,s=0;【或】floatt=1,p=1,s=0;【或】floatt=1,s=0,p=1;位置3:while(fabs(t)1e-4)【或】while(0.0001fabs(t)【或】while(1e-4fabs(t)【或】while(f

29、abs(t)0.0001)位置4:printf(pi=%fn,s*4);【或】printf(pi=%fn,4*s);2. 位置1:printf(%8.0f,f1);printf(%8f,f1);【或】printf(%f,f1);【或】位置2:for(i=1;i20;i+)【或】for(i=1;20i;i+)【或】for(i=2;i=20;i+)【或】for(i=2;20=i;i+)【或】for(i=1;i=19;i+)【或】for(i=1;19=i;i+)位置3:f1=f2;位置4:f2=f3;3. 位置1:longk=1;位置2:scanf(%ld,n);位置3:n/=10;【或】n=n/1

30、0;位置1:scanf(%d,n);位置2:fo(i=1;i=n;i+)【或】for(i=1;n=i;i+)【或】for(i=1;in+1;i+)【或】for(i=1;n+1i;i+)位置3:s+=1.0/t;【或】s=s+1.0/(float)t;【或】s=1.0/(float)t+s;【或】s=s+1.O/t;【或】s=1.O/t+s;【或】s+=1.0/(float)t;【或】s+=1.0/(double)t;【或】s=s+1.0/(double)t;【或】s=1.0/(double)t+s;5.位置1:sum=1.0;【或:1sum=1;位置2:s2=1.0;【或】s2=1;位置3:for(k=4;k=n;k+)【或】for(k=4;n=k;k+)【或】for(k=4;kn+1;k+)【或】for(k=4;k1+n;k+)【或】for(k=4;n+1k;k+)【或】for(k=4;1+nk;k+)位置1:t=1;【或】t=1.0;位置2:t=t*j;【或】t=j*t;【或】t*=j;位置3:s=s+t;【或】s=t+s;【或】s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论