• 219.18 KB
  • 2022-04-22 11:43:07 发布

程序设计技术习题(非编程题)参考答案-重庆大学.pdf

  • 10页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'《程序设计技术》(第三版)习题参考答案及说明习题1一、单项选择题DADDDBDCCD说明:3题,time是个系统已定义的时间函数,所以不能用作用户标识符。8题,sqrt(4.0)开方函数值系统默认为double型。二、填空题①主②main③x=x*(x+b)④普通、格式、分隔和转义⑤指定输出数据格式⑥voidmain()⑦"howareyou!"三、阅读程序题1.9,11,9,102.2,-1,-2说明:x+=-z---y;等价于x=x+(-(z--)-y);先取出z值-1,再取负得1,再减y值得2x+=2,x=x+2=0+2=2,z再--变成-2实际上等同于两个语句:x=x+(-z-y);z--;3.先改错:c5=’116’应为c5=’116’aa∪bb∪∪∪cc∪∪∪∪∪∪abcA∪N说明:第一个t跳过8列,第二个t接着跳过8列如果b前面是t,它就完全抵消掉t的作用(即抵消掉了8列),而如b前面是若干个空格或字符则只回退一个空格或字符。4.2,25.57∪∪5∪∪767.856400,-789.12402367.856400∪,-789.124023∪∪∪67.86,∪-789.12,67.856400,-789.124023,67.856400,-789.1240236.785640e+001,-7.89e+002A,65,101,411234567,4553207,12d68765535,177777,ffff,65535COMPUTER,∪∪COM6.题目有错:最后一句应为printf("result=%fn",result);a+c=102a+c=ff+m=17.950000-1- a+m=17.650000c+f=102.300000result=1746.150019习题2一、单项选择题CBADCCCAAC二、填空题①(a*b==0)&&(a||b)!=0其实它要表达的意思是:要保证a或者b有一个为0,另一个必不为0。②逻辑与③逻辑或④continue⑤while((c=getchar())!=’n’)题目有错,P85第2行的花括弧应移到if之前,想想为什么?⑥%c三、阅读程序题1.答案:2.答案:⎧−1−−−−(x<0)该程序所完成功能的函数关系为:()⎪signx=⎨0−−−−−(x=0)3.答案:⎪⎩1−−−−−(x>0)4.答案:5.答案:6.答案:-2- 习题3单项选择题BBCACDDABB填空题①9②0③10④x⑤一致⑥n/2⑦sum+a⑧sum/n三、阅读程序题1.2462.s=303.5945842(说明:printf函数的参数是从右到左扫描的,因此先做c[i]/2,再做c[i]=a[i]*b[i]项,而此时c[i]尚未初始化,里面是一个固定值:101010……共32位二进制数,其等值十进制数为-858993460,c[i]/2=-429496730,虽然计算但并不输出,因为只有一个输出格式,对应输出的表达式为:c[i]=a[i]*b[i])4.lanuge5.816357492说明:如果你耐心读通了该程序,掌握读程序的方法,对后续学习应该很有帮助。读程序写结果通常采用列表法:k=1i1j2由a[i][j]=k得到a[1][2]=1i03j33k=2得到a[3][3]=2i22j41k=3得到a[2][1]=3i1j2此时a[1][2]!=0条件成立(前面已得到a[1][2]=1)i3j1k=4得到a[3][1]=4i2j2-3- ……直到k=10时退出第一个for循环最后输出结果:a[1][1]=8a[1][2]=1a[1][3]=6a[2][1]=3a[2][2]=5a[2][3]=7a[3][1]=4a[3][2]=9a[3][3]=26.max=10,row=2,colum=1找出二维数组中最大值并输出该数组元素的下标号。习题4一、单项选择题ABACABCBDD二、填空题①主②main函数③main函数④个数⑤类型⑥顺序⑦函数类型⑧floatf(floatx,intn)⑨f(x,n)⑩x*f(x,n-1)三、阅读程序题1.x=5,y=25(观察x和y为全局变量,且各函数中没有与之同名的局部变量,x和y从定义处到程序结束处均有效,从main开始执行,得到x=7,y=-5,然后调用fun函数后对x和y重新赋值为x=5,y=25)2.y=153.0(实际上是利用递归函数求1!+2!+3!+4!+5!)3.s1=3.140000,s2=5.140000说明:S(a)展开为:PI*a*aS(a+b)展开为:PI*a+b*a+b4.20055.5,36.3.00,1.00,0.25说明:#defineSQ1(x)x*x-4- SQ1(1.0+1.0)→1.0+1.0*1.0+1.0最后输出的是1.0/1.0+1.0*1.0+1.0=3.0#defineSQ2(x)(x)*(x)SQ2(1.0+1.0)→(1.0+1.0)*(1.0+1.0)1.0/(1.0+1.0)*(1.0+1.0)=1.0#defineSQ3(x)((x)*(x))SQ3(1.0+1.0)→((1.0+1.0)*(1.0+1.0))1.0/((1.0+1.0)*(1.0+1.0))=0.25习题5一、单项选择题AACCADDACB二、填空题①“char*func1()”定义一个返回字符指针值的函数,“char(*func2)()”定义一个指向函数的指针②一个返回值为单精度类型指针的函数名;③(*p)(a,b,c)④findmin⑤(*f)(x,y,z);三、阅读程序题1.1202.5,4,33.44.155.1126.49111131315习题6一、单项选择题BDACDCACAC二、填空题1是其值可以是二级地址(指针)2是其值可以是多级地址址(指针)3沿着数组所占据的存储区域向前和向后移动多个或者是一个数组元素4可以在程序的运行过程中根据需要创建的数组5int*v,int*key6a,&key7add-a8&n三、阅读程序题1.11-5- 2.26893.3579114.147085.13120003333368113389333333336.111111413111111114691167111习题7一、单项选择题AABCBCBDD说明:3..4%s等同于4.4%s(自动取m=n=4),即:字符串宽度为4列,从左边取4个字符,所以是B4.这个作为单选题,题目是有错的,因为答案有两个:B和C。(A)*(str+k)即*(str+3)输出n(B)*str+k就是*str+3即‘c’+3=’f’输出的f字符已经不在”china”串中(C)**(str+k)出错(D)str[k]就是str[3],输出n5.t是tab键;v是跳空走页;\就是一个;是字符串结束符,其后的都无效,所以答案是3,即B。7.答案有错,程序运行时输入数据:123321被s1和s2数组接收,然后gets(s3)接收了回车456654因为gets函数可接收空格,所以456654全部被s4[]数组接收,因此给出的答案都不对,正确答案应该是:123321*该空行是输出s3[]里面的回车产生的*456654-6- 二、填空题①"②字符串③字符④11⑤12⑥字符型⑦连续⑧j=i⑨continue⑩i++三、阅读程序题1.HelloWexloWexloexloWorld读该题主要注意printf函数要换行必须认为添加n,而puts函数要自动换行。2.123abcdxyabcdxyzyz该题应注意:x=0将xyz连结到abcd之后x=1将yz连结到abcdxyz之后x=2退出循环3.egnahc该题实现的功能是递归调用倒序输出字符串先将p1指向字符串开头’c’,再利用while循环将p2指针指向字符串的最后’’,然后p2--使p2指针指向最后一个有效字符’e’,将第一个字符和最后一个交换,然后将p1后移一个位置,p2前移一个位置,再交换……4.DBCDegc5.123456该题有一定难度,祥解如下:p[0]p[1]p[2]p[3]straaaa54321123456xyzttptp=tp+4+1tp=tp+5+1tp=tp+6+1strcmp(p[n],p[k])<0k=nn=1,k=0p[1],p[0]‘5’-‘a’<0k=n=1n++→2n=2,k=1p[2],p[1]‘1’-‘5’<0k=n=2n++→3n=3,k=2p[3],p[2]‘x’-‘1’>0k=2不变n++→4循环条件是n<4此时退出循环,k=2puts(p[2])结果为123456-7- 6.SWI*CH#*Wa第6题详解kc2S输出S3W输出W4I输出I5L不输出,继续6T输出*,继续7C输出C8H输出H9‘2’退出swith结构,输出#,继续102whill循环条件不满足,但做了k++,k变为11,跳过了223字符,接着输出了*,继续经过for循环中的k++后k值为1212W输出W,继续13A输出a,继续14L不输出,继续15L不输出,继续16不满足循环条件,退出for循环,程序结束最后结果:SWI*CH#*Wa习题8一、单项选择题DCCDADDDDB7题提示:(A)的错误在于首先要明确p是指向结构体而不是指向变量n的,所以显然把变量n的地址赋给p是错误的;(B)p并未指向固定地址,其值为NULL,悬空,不能给其赋值;(C)强制转换为结构体类型,但没有这种写法,所以也是错误的;(D)是正确的,它等价与于p->n,但应该有个前提就是在定义的时候使*p=&d,这个也不好解释,记死就行了。9题提示:(A)先做p->n得5,再做p++,与表达式值无关(B)先做p->n得5,再做n++,与表达式值无关-8- (C)同上(D)因为->运算符级别高于++,所以++p->n等价于++(p->n),而(p->n)为5,再++运算变为6了,所以结果为6,前面三个表达式结果都为5二、填空题①若干个数据项②结构体成员③定义结构体数据类型的变量④同时存在⑤同时⑥需要存储区域最大的一个分配存储空间⑦long*⑧char*⑨double*三、阅读程序题1.110,z2.ascalbasicb3.5,34.5160215.liming196.abcdefghijk习题9一、单项选择题ADBBBCCCDC二、填空题1显示器2w3指定文件内部记录指针移动的起始位置4sizeof(student)三、阅读程序题1.younk2.文件拷贝3.135794.Name:LileiPhone:123456Score:1005.AAA6.18-9- 习题10一、单项选择题DABCBDBCAD二、填空题①1536②~(~0<<4)③20④操作数除以2⑤12三、阅读程序题1.1fc0002.x=8fy=8f003.原字符串是:lostcontroloftheskiddingcar.加密后的字符串是:搻寢邷悜媿悡邜欉嫍氝寯枦洊憳邷瀺?解密后的字符串是:lostcontroloftheskiddingcar.-10-'