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

下载本文档

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

文档简介

1、c程序设计语百第二版答案【篇一:c语言程序设计现代方法(第二版)习题答案】answerstoselectedexercises2. was#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(valueo

3、fj:%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-39thevaluesprint

4、eddependonmanyfactors,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:(a) #includestdio.hintmain(void)(floatoriginal_amount;printf(enteranamount:);s

6、canf(%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);was#8thevaluesofx,i,andywillbe12.3,45,and.6,respectively.answerstoselectedprogrammingprojectswas#4;modified#inc

7、ludestdio.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,gro

8、up,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:%dnitemnumb

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

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

11、tf(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.answerstoselectedprogrammingprojects2.

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

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

14、合法,g不是16进制数中的符号,也不表示任何类型33333合法,int整形a合法,字符串常量合法,字符串常量0.1合法,longdouble长双精度浮点型e20不合法,缺少尾数部分0377u1合法,unsignedlong无符号长整型18不合法,存在非8进制位0xa不合法,不符合十六进制字符码表示规则xhh0x9cfu合法,unsignedint无符号整形45合法,char字符型1. e-5合法,double双精度浮点型0合法,char字符型2. f合法,float浮点型34不合法,缺少转义符合法,char字符型(p35,双引号作为字符常量时既可用图形符号也可用转义序列表示)a合法,char字

15、符型2.6以下的变量声明语句中有什么错误?(1) inta;b=5;第一个分号改为逗号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+ctr

16、ued=a+,a*=b+1d为1,a为6(5) d=y+=1/xy为8.2,d为8(6) abx=yfalsex=(int)y/b+x为3.0a-?+a:+aa为1a+xa+a108a=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+下

17、可运行2.9下面代码的执行结果是什么?chara=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;请给出下列表达式的值。(8) (1)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的高

18、字节作为结果的低字节,整数p的低字节作为结果的高字节,拼成一个新的整数。表达式为: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最低位的

19、1翻转。比如v=108,其二进制表示为01101100,则v=(v-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);pri

20、ntf(parity-checkcodeis%#xn,data);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),并编写一个程序,根据用户输入的年份,输出该年各月的英文名及天数。#incl

21、udestdio.henumyearjan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec;intmain(void)2.20设变量说明为:floata;doubleb;charc;intx;试将下列表达式中隐含的类型转换改为用强制类型转换运算符转换的表达式。(1) 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,februa

22、ry,march,april,may,june,july,august,september,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,m

23、onth_daysmonth);return0;i篇三:c语言"设计学习指导第二版答案】.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第四章一、1.b2

24、.c3.d4.d5.d6.c7.b8.d9.c10.d11.b12.a13.cc15.b16.ab17.d二、doublefun(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;(146f)12.b一、d2.c3.c4.c5.a6.a7.c8.a9.b10.b11.a12.b13.c14.c15.d16.a17

25、.d18.a19.a20.a21.b22.d23.c24.b25.d二、1.intfun(intn)(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;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;doubley(floatx)(doublez;if(x10)z=exp(x);el

26、seif(x-3)z=log(x+3);elsez=sin(x)/(cos(x)+4);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%1

27、0【或】n-n/10*10【或】n-10*(n/10)位置3:while(n0)【或】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)【或】i%17=0|i%7=0位

28、置4:n%5=0【或】!(n%5)【或】n/5*5=n5.位置1:s=0位置2:i+=2【或】i=i+2【或】i=2+i【或】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【或】位置2:floats=0,t=1,p=1;【或】#includemath.hfloats=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

29、(t)1e-4)【或】while(0.0001fabs(t)【或】while(1e-4fabs(t)【或】while(fabs(t)0.0001)位置4:printf(pi=%fn,s*4);【或】printf(pi=%fn,4*s);2.位置1:printf(%8.0f,f1);【或】printf(%f,f1);【或】printf(%8f,f1);位置2:for(i=1;i20;i+)【或】for(i=1;20i;i+)【或】for(i=2;i=20;i+)【或】【或】for(i=1;19=i;i+)for(i=2;20=i;i+)【或】for(i=1;i=19;i+)位置3:f1=f2;位

30、置4:f2=f3;位置1:longk=1;位置2:scanf(%ld,n);位置3:n/=10;【或】n=n/10;位置1:scanf(%d,n);位置2:for(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.0/t;【或】s=1.0/t+s;【或】s+=1.0/(float)t;【或】s+=1.0/(double)t;【或】s=s+1.0/(double)t;【或】s=1.0/(double)t+s;位置1:sum=1.0;【或】sum=1;位置2:s2=1.0;【或】s2=1;3. 位置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

温馨提示

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

评论

0/150

提交评论