C语言程序设计教程课后答案(第2版)杨路明

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第一章C语言程序设计概述-习题答案1算法的描述有哪些基本方法?答1、自然语言2、专用工具2C语言程序的基本结构是怎样的?举一个例子说明。答1、C语言程序由函数构成;2、“/*”与“*/”之间的内容构成C语言程序的注释部分;3、用预处理命令#include、#define可以包含有关文件或预定义信息;4、大小写字母在C语言中是有区别的;5、除main()函数和标准库函数外,用户也可以自己编写函数,应用程序一般由多个函数组成,这些函数指定实际所需要做的工作。3C语言有什么特点?答1、具有结构语言的特点,程序之间很容易实现段的共享;2、主要结构成分为函数,函数可以在程序中被定义完成独立的任务,独立地编译代码,以实现程序的模块化;3、运算符丰富,包含的范围很广;4、数据类型丰富;5、允许直接访问物理地址,即可直接对硬件进行损伤,实现汇编语言的大部分功能;6、限制不太严格,程序设计自由度大,这样使C语言能够减少对程序员的束缚;7、生成的目标代码质量,程序执行效率高,同时C语言编写的程序的可移植性好。4★指出合法与不合法的标识符命名。答AB12--√leed_3--a*b2--×8stu--×D.K.Jon--×EF3_3--√PAS--√if--×XYZ43K2--√AVE#XY--×_762--√#_DT5--×C.D--×5说明下列TurboC热键的功能。答F2:源文件存盘F10:调用主菜单F4:程序运行到光标所在行(用于调试程序)Ctrl+F9:编译并链接成可执行文件Alt+F5:将窗口切换到DOS下,查看程序运行结果。6说明下列TurboC方式下输入并运行下列程序,记录下运行结果。①main(){printf(********************\n);printf(welcomeyou\n);printf(verygood\n);printf(********************\n);}②main(){inta,b,c,t;printf(pleaseinputthreenumbers;);scanf(%d,%d,%d,&a,&b,&c);/*教材S是错误的*/t=max(max(a,b),c);printf(maxnumberis:%d\n,t);}intmax(intx,inty){intz;if(xy)z=x;elsez=y;return(z);}答运行结果:********************welcomeyouverygood********************运行结果:pleaseinputthreenumbers;3,1,4/*左侧下划线内容为键盘输入*/maxnumberis:47一个C程序是由若干个函数构成的,其中有且只能有一个___函数。答main()8在TurboC环境下进行程序调试时,可以使用Run下拉菜单的___命令或按___键转到用户屏幕查看程序运行结果。答1、Userscreen2、Alt+F59★C语言对标识符与关键字有些什么规定?答1、标识符用来表示函数、类型及变量的名称,它是由字母、下划线和数字组成,但必须用字母或下划线开头。2、关键字是一种语言中规定具有特定含义的标识符,其不能作为变量或函数名来使用,用户只能根据系统的规定使用它们。10C源程序输入后是如何进行保存的?答是以C为扩展名保存的纯文本文件。第二章C语言程序的基本数据类型与表达式-习题答案1★指出下列常数中哪些是符合C语法规定的。答'\'--×'101'--×\--×e3--×019--√0x1e--√ab\n--√1.e5--×(2+3)e(4-2)--×5.2e2.5--×2请找出下列程序中的错误,改正后写出程序运行结果。①voidmain(){intx,y=z=5,aver;x=7AVER=(x+y+z)/3printf(AVER=%d\n,aver);}②voidmain(){charc1='a';c2='b';c3='c';inta=3.5,b='A'printf(a=%db=\'\end\n,a,b);printf(a%cb%c\bc%c\tabc\n,c1,c2,c3);}答main(){intx,y=5,z=5,aver;x=7;aver=(x+y+z)/3;printf(AVER=%d\n,aver);}运行结果:AVER=5②main(){charc1='a',c2='b',c3='c';inta=3,b='A';printf(a=%d,b=\'%c\'\end\\n,a,b);printf(a%cb%c\bc%c\tabc\n,c1,c2,c3);}运行结果:a=3,b='A'endaabccabc3写出下列赋值的结果,表格中写了数值的是要将它赋给其他类型的变量,将所有的空格填上赋值后的数据(实数保留到小数点后两位)。int99-1char'h'unsignedint66float55.78longint68答int99104665568-1char'c''h''B''7''D'unsignedint9910466556865535float99.00104.0066.0055.7868.00-1.00longint99104665568-14★写出程序运行结果。①voidmain(){inti,j;i=8,j=10;printf(%d,%d,%d,%d\n,i,j,++i,j++);}②main(){inta=1,b=2,c=30;;printf(%d,%d,%d,%d\n,a=b=c,a=b==c,a==(b=c),a==(b==c));}注意:a=b=c,a=b==c之间应为逗号,教材有误答运行结果:9,11,9,10运行结果:30,1,0,0③voidmain(){inta=10,b=20,c=30,d;d=++a=10||b--=20||c++;printf(%d,%d,%d,%d\n,a,b,c,d);}答运行结果:11,19,30,15★写出下面表达式的值(设a=10,b=4,c=5,d=1,x=2.5,y=3.5)。⑴a%=(b%=3)⑵n++,a+=a-=a*=a⑶(float)(a+c)/2+(int)x%(int)y⑷a*=b+c⑸++a-c+b++⑹++a-c+++b⑺ab?x:'A'⑻b++==c⑼a+b,18+(b=4)*3,(a/b,a%b)⑽x+a%3*(int)(x+y)%2/4+sizeof(int)⑾ab?a:cd?c:d⑿b++==c⒀a*=b=c=2⒁a=b==c答⑴0⑵0⑶9.500000⑷90⑸10⑹10⑺'A'⑻2⑼4.5⑽1⑾0⑿20⒀06下列每组表达式中,被执行后结果完全等价的是哪些(设a、b、m是已被赋值的整型变量)?①m=(a=4,4*5)与m=a=4,4*5②(float)(a/b)与(float)a/b③(int)a+b与(int)(a+b)④m%=2+a*3与m=m%2+a*3⑤m=1+(a=2)+(b=3)与a=2,b=3,m=1+a+b答①前面是赋值表达式,而后面的是一个逗号表达式,所以一定不同;②前面的表达式中a/b结果为一整数,结果已经取整,精度可能受到影响,之后强制float后才为浮点型,后面的是先将a转换为float后再与b相除,其值保证了精度,所以不同。③因为a、b均为整数,其前后两个表达式的计算结果是一致的。④前一表达式是一算术表达式,而后者为一赋值表达式,此为一点不同;另外,前一表达式的m只被赋过一次值,后一表达式中的m曾两次被赋值,第一次赋值时与第一表达式中的值一致,第二次赋值后即不再相同。⑤前后表达式的计算结果应该是一致的:a=2,b=3,m=67条件表达式x0?x:-x的功能是什么?答如果x的值是一正数,则表达式的值为x值;如果x的值是一非正数,则表达式的值为-x。其实该表达式的值即为x的绝对值,C语言中提供了一个函数fabs(x)即可完成此功能,该函数包含在math.h头文件中。8用一个条件表达式描述从a、b、c中找出最大都赋给max.答max=a(bc?b:c)?a:(bc?b:c);9★若x为int型变量,则执行以下语句后x的值为()。x=6;x+=x-=x*x;A.36B.-60C.60D.-24答B.10★若有以下类型说明语句:charw;intx;floaty;doublez;则表达式w*x+z-y的结果为()类型。A.floatB.charC.intD.double答D.第三章顺序结构程序设计-习题答案1变量k为float类型,调用函数scanf(%d,&k),不能使变量k得到正确数值的原因是___。答格式修饰符与变量类型不一致。因为%d输入的数据类型应该为十进制整数,而&k为占用4个字节的float类型变量的地址。2★a=1234,b=12,c=34,则执行“printf(|%3d%3d%-3d|\n,a,b,c);”后的输出是___。答|12341234|分析如下:①%3d为右对齐输出变量,且指定输出变量的值宽度为3个字符位,如果变量实际位数小于3,则左端补空格,如果变量实际位数大于3,则按实际长度输出,不受限制。②%-3d为左对齐输出变量,在输出变量时,如是变量实际位数小于3,则在右端补空格,否则按实际输出。3★设有“inta=255,b=8;”,则“printf(%x,%o\n,a,b);”输出是___。答ff,10①如果“printf(%X,%o\n,a,b);”则输出为FF,10。说明在输出十六进制字母时,其大小写受格式修饰符的限制,如果是“%x”则输出小写,如果是“%X”则输出大写。②如果希望在输出十六进制时输出前导符0x或0X,则以上输出语句应改“printf(%#x,%o\n,a,b);”为或“printf(%#X,%o\n,a,b);”。本条解释不必须掌握。4★以下程序输出的结果是___。main(){inta1=1,a2=0,a3=2;printf(%d,%d,%d\n,a1,a1+a2+a3,a3-a1);}答1,3,15printf函数中用到格式符%5s,其中5表示输出字符占用5列。如果字符串长度大于5,则按___输出;如果字符串长度小于5,则按___输出。答①实际②左端补空格6★已定义变量如下:inta1,a2;charc1,c2;若要求输入a1、a2、c1和c2的值,正确的输入函数调用语句是___。答scanf(%d,%d,%c,%c,&a1,&a2,&c1,&c2);7输入两个整型变量a、b的值,输出下列算式以及运算结果___。a+b、a-b、a*b、a/b、(float)a/b、a%b每个算式占一行。如a=10,b=5,a+b输出为:10+5=15答设inta=10,b=5;以下为输出语句及结果:①printf(%d+%d=%d\n,a,b,a+b);10+5=15②printf(%d-%d=%d\n,a,b,a-b);10-5=5③printf(%d*%d=%d\n,a,b,a*b);10*5=50④printf(%d/%d=%d\n,a,b,a/b);10/5=2⑤printf(%(float)d/%d=%f\n,a,b,(float)a/b);(float)10/5=2.000000⑥printf(%d%%%d=%d\n,a,b,a%b);10%5=08★输入一个非负数,计算以这个数为半径的圆周长和面积。答#definePI3.1415926main(){floatr,l,area;printf(Inputapositive:);scanf(%f,&r);l=2*PI*r;area=PI*r*r;printf(l=%f\tarea=%f\n,l,area);}9输入任意一个3位数,将其各位数字反序输出(例如输入123,输出321)。答main(){intx,y;printf(Inputanumber(100-999):);scanf(%d,&x);y=100*(x%10)+10*(x/10%10)+x/100;/*注意

1 / 53
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功