c语言程序设计第五版习题答案解析.docx

上传人:h**** 文档编号:25760047 上传时间:2022-07-13 格式:DOCX 页数:25 大小:20.01KB
返回 下载 相关 举报
c语言程序设计第五版习题答案解析.docx_第1页
第1页 / 共25页
c语言程序设计第五版习题答案解析.docx_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《c语言程序设计第五版习题答案解析.docx》由会员分享,可在线阅读,更多相关《c语言程序设计第五版习题答案解析.docx(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、c语言程序设计第五版习题答案解析 习题解析与答案 第1章C语言概述 一简答题 1概述C语言的主要特点。 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如ifelse语句、while语句、do while语句、switch 语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2构成C语言程序的基本单位是什么?它由哪几部分组成? 函数是构成C语言程序的基本单位。一个完整的C程序一般由文件

2、包含、宏定义、函数说明、变量和一个或若干个函数组成。 3语言程序的运行一般要经过哪几个步骤? (1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二运行程序写结果 1输入下面程序并运行。 main() int a1,a2,x; a1=100; a2=50; x=a1-a2; printf(x=%dn,x); 运行结果为:x=50 2输入下面程序并运行。 main() int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(a1=%d,a2=%dn,a1,a2); printf(x=%dn,x); 运行结果为:a1=10,a2=20 x=200 3输入

3、下面程序并运行。 #include main() printf(*n); printf( *n); printf( *n); printf( *n); printf( *n); printf( *n); 运行结果为:* * * * * * 思考:可以修改程序,使之输出平行四边形,等腰三角形等图形。 三编程题 1参照本章例题,编写一个程序,用于显示如下信息: * I love C programs! * 要有文件包含语句#include 。C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。这些函数的说明都包括在stdio.h文件中

4、。 main是主函数的名称。用括起来的内容是函数体,函数体由若干条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 注意显示的信息有三行,所以要用到换行符“n”。 参考代码: #include main() printf(*n); printf( I love C programs! n); printf(*n); 第2章数据类型及其运算 一简答题 1C语言中的数据类型主要有哪几类? 短整型(short int ) 整型整型(int) 长整型(long int ) 基本类型字符型 (char) 单精度(float) 实型(浮点型) 双精度(double) 枚举类型(enum) 数组

5、类型 构造类型结构体类型 (struct) 共用体类型(union) 指针类型 空类型(void) 2字符常量与字符串常量有什么区别? 字符常量用单括号括起,字符串常量用双括号括起;字符常量存储时占1个字节,字符串常量存储时除了n个字符外,还有系统加上的字符串终止符0,所以字符串常量存储时占n+1个字节。 3C语言中的常量包括哪几类?各自是如何构成的? C语言中的常量是一些其值预先定的量,并且在程序执行过程中其值不再发生变化。常量的分类遵循基本数据类型分类原则,C语言编译系统自动将其存放在于类型相应的内存单元中。其类别包含整形常量、浮点常量、字符常量、字符串常量和枚举常量。整形常量又分为十进制

6、整形常量、八进制整形常量、十六进制整形常量。浮点常量分成十进制形式和指数形式。C语言中的,字符常量是用单括号括起来的一个字符或是字符序列,而字符串常量是用一对双括号括起来的零个或者多个字符组成的序列。 4简述指针、变量的指针、变量的值、指针变量与指针变量的值的含义是什么? C语言中将地址又称为“指针”。一个变量所分配的内存空间首字节地址,称为该变量的指针(地址),变量的值就被放入所分配的地址单元中。地址一旦被分配,就不会再改变,所以,指针是一个常量。既然是常量就可以把它赋给一个变量。用来存放指针的变量,被称为指针变量。一个指针变量的值是变量的地址,一个指针变量可以被赋予不同的指针值。 5下面哪

7、些是不合法的常量?说明不合法的理由。 123,3.1415926,0892,M,n,0xabc,0.618E-6,”Morning”,3.8e-3.14 非法常量有: 0892含有非八进制数字8和9 3.8e-3.14非法指数形式浮点常量:规定e后面的指数必须为整数。 6下面对变量定义的语句哪些不正确?为什么?请改正。 (1) char c1,int a2; (2) INT a,b; FLOAT x,y;(3) a,b:char; (4) char if; (5) int a,b (6) Int a:b:c; (7) int a,x; float x,y; (1) char c1,int a2

8、; 错误。定义不同类型的变量时,应用分号彼此分开。 改正为:char c1; int a2; (2) INT a,b; FLOAT x,y; 错误。C语言中表示类型名的关键字必须小写。 改正为:int a,b; float x,y; (3) a,b:char; 错误。C语言中变量定义格式为:类型名变量名; 改正为: char a,b; (4) char if; 错误。变量名不能与C语言的关键字重名。 改正为:char f1; (5) int a,b 错误。变量定义以语句形式出现,应以分号结尾。 改正为:int a,b; (6) Int a:b:c; 错误。类型名不能有大写字母,相同类型名之间用

9、逗号分隔。 改正为:int a,b,c; (7) int a,x; float x,y; 错误。在同一程序位置上,同一变量名不能重复定义充当两个不同的变量。 改正为:int a,x; float x1,y; 7 下述字符串常量的长度是多少?在内存中存储时各自占用的单元数又是多少? (1) “Hello!” (2) “ABC nTH064?” (3) “xAB*765+123=?” (1)“Hello!” 字符串长度为6,占用内存字节数为7。 (2)“ABC nTH064?” 字符串长度为9,占用内存字节数为10。因为其中n 064?各自只占一个字符的位置。 (3) “xAB*765+123=?

10、” 该字符串不是合法的,因为765表示的值太大,超出合法的ASCII 字符集的范围。 二运行程序写结果 1以下程序的执行结果是。 main() int i,j ; i=15; p rintf(“%d,%d”, i+,i -); 14,15 2以下程序的执行结果是 。 main() int a=20,b=10,c,*p1,*p2; p1=&a; p2=&b; c=(-*p1)/(*p2)+6; printf(a=%d,b=%dn,a,b); printf(*p1=%d,*p2=%dn,*p1,*p2); printf(c=%dn,c); p1 a c=4 3以下程序的执行结果是。 #includ

11、e main() char a=G,b=o,c=o,d=d; a=a+32; b=b-6; c=c+3; d=d+8; printf(%c%c%c%cn,a,b,c,d); 从ASCII代码表可以看出,字符“G”、“o”、“o”、“d”的ASCII代码值为71、111、101,因此,G+32、o-6、o+3、d+8的值分别是103、105、114、108,它们所对应的字符分别是“g”、“i”、“r”、“l”。 常用结论: (1)在C语言中,字符数据可以按其ASCII代码值参加整数运算。由于英文字母在ASCII 代码表中是按顺序排列的,所以在计算o+3代表的字母时,可从字符o其顺序向后取3个字母

12、,该字母是“r”。 (2)从ASCII代码表可以看出“小写字母”-“对应大写字母”的结果是32,因此可推算出如下等式:大写字母的ASCII值+32=对应小写字母的ASCII值;小写字母的ASCII 值-32=对应大写字母的ASCII值。 girl 4以下程序的执行结果是。 #include main() int x; x=-3+4*5-6; printf(x1=%dn,x); x=3+4%5-6; printf(x2=%dn,x); x=-3*4%-6; printf(x3=%dn,x); x1=11(4*5是20,-3+20是17,17-6等于11) x2=1(4%5等于4,3+4等于7,7

13、-6等于1) x3=0(-3*4等于-12,-12%-6等于0) x1=11 x2=1 x3=0 5以下程序的执行结果是。 #include main() printf(%dn,NULL); printf(%d,%cn,49,49); printf(%d,%c,%on,48+10,48+10,48+10); 0(NULL的ASCII码值是0) 49,1(数字1的ASCII码值是49) 58,:,72(48+10等于58,正好是“:”的ASCII码值,八进制表示是72) 0 49,1 58,:,72 三、改错题 1请修改下列程序,使其能够通过编译。 #include Void Main() in

14、t a=6;b=8; int c; c=a*b; printf(%d,c); 错误的地方有3处:(1)第2行关键字应该小写;(2)定义b时前面应该用逗号;(3)打印语句的格式应该用双引号括起来。 正确的程序如下: #include void main() int a=6,b=8; int c; c=a*b; printf(%d,c); 2请修改下列程序,使其能够正确运行。 #include void main(); float f=7.12; char c=”c”; printf(“%dn”,int(f%3); printf(“%c”,c); 错误的地方有3处:(1)第2行main();不应该

15、有分号;(2)定义char c=”c”; 时,字符常量应该用单引号;(3)打印语句printf(“%dn”,int(f%3);的格式有 错,应该在f前的int用括号括起来,因为实型数据不能执行取余运算。 正确的程序如下: #include void main() float f=7.12; char c=c; printf(%dn,(int)f %3); printf(%c,c); 第3章顺序结构程序设计一简答题 1程序有哪三种基本结构? 程序的三种基本结构为:顺序结构、选择结构和循环结构。 2C语言的语句有哪几类?表达式语句与表达式有什么不同? C语句可分为以下五类:表达式语句、函数调用语句

16、、控制语句、复合语句和空语句。其中表达式语句与表达式的区别在于表达式语句是表达式加上“;”组成。 二、填空题 1符号&是运算符,&a是指。 2C语言中的空语句就是。 3Scanf函数中的“格式字符”后面应该是,而不应该是。 4若想输出字符%,则应该在“格式字符”的字符串中用表示。 5int x=7;执行x+=x- =x+x;后x的值是。 6int a=10,b=20;a+=b;b=a-b;a- =b; 的功能是。 答案:1地址、变量a的内存地址。 2一个分号。 3变量地址,变量名。 4连续2个%号。 5 -14 6交换变量a,b的值,打印出a=20,b=10。 三运行程序写结果 1.以下程序的

17、执行结果是。 #include main() double d=3.2;int x,y; x=1.2;y=(x+3.8)/5.0; printf(%dn,d*y); 0 2以下程序的执行结果是。 main() double d;float f;long l;int i; i=f=l=d=20/3; printf(%d %ld %f %fn,i,l,f,d); 6 6 6.000000 6.000000 3以下程序的执行结果是。 main() int k=17; printf(%d,%o,%xn,k,k,k); 17,21,11 4以下程序的执行结果是。 #include main() char

18、 a,b,c,d; a=A,b=B,c=C,d=D; printf(%1cn,a); printf(%2cn,b); printf(%3cn,c); printf(%4cn,d); 可以用%c格式输出的,也可以用%d格式输出,所以与md近似,m指出了要输出数据的宽度。若数据位数小于m,则左端补空格,若数据位数大于m,则按实际位数输出。 A B C D 5以下程序的执行结果是。 #include main() char c1,c2; scanf(%c%c,&c1,&c2); printf(c1=%c,c2=%c,c3=%d,c4=%d,c1+,-c2,c1,c2); 运行输入:AB 运行结果为:

19、c1=A,c2=A,c3=65,c4=66 6以下程序的执行结果是。 #include main() scanf(%c,%c,&c1,&c2); +c1; -c2; printf(c1=%c,c2=%cn,c1,c2); 例如当输入B,C,B,C的ASCII码值为66,67,执行+c1; -c2;后,c1为66+1变成67即C,c2为67-1变成66即B。 运行输入:B,C,运行结果为:c1=C,c2=B 7以下程序的执行结果是。 main() char ch=a;int a=98; unsigned b=1000;long c=9;float x=3.14; double y=1.23456

20、78; printf(1)a=%d,a=%c,ch=%d,ch=%cn,a,a,ch,ch); printf(2)b=%un,b); printf(3)c=%ldn,c); printf(4)x=%f,y=%fn,x,y); printf(5)x=%e,y=%en,x,y); printf(6)y=%-10.2fn,y); (1)a=98,a=b,ch=97,ch=a (2)b=1000 (3)c=9 (4)x=3.140000, y=1.234568 (5)x=3.14000e+00,y=1.23457e+00 (6)y=1.23 8以下程序的执行结果是。 #include main() i

21、nt a,b; float x; scanf(%d,%d,&a,&b); x=a/b; printf(nx=%fn,x); 运行输入:2,2,运行结果为:1.000000 9当输入12345,a时,给出程序的运行结果,执行结果是。 #include main() scanf(%3d,%c,&a,&c); printf(n%d,%dn,a,c); md,m指出了要输出数据的宽度。若数据位数小于m,则左端补空格,若数据位数大于m,则按实际位数输出。a的ASCII码值是97。 12345,97 10分析下面程序,在键盘上输入数据才能使得变量a=10,b=20,c1=A,c2=a,x=1.5,y=-3

22、.75,z=67.8。 程序如下: #include main() int a,b; float x,y,z; char c1,c2; scanf(%5d%5d%c%c%f%f%*f,%f,&a,&b,&c1,&c2,&x,&y,&z); printf(a=%d,b=%d,c1=%c,c2=%c,x=%f,y=%f,z=%f,a,b,c1,c2,x,y,z); 按%5 d格式输入a与b的值时,要先键入三个空格,然后再键入10与20。%*f是用来禁止赋值的。在输入时,对应%*f位置可以随意输入一个数(我们输入1.5,该数不会赋值给任何变量的)。 运行输入:1020Aa1.5-3.751.5,67

23、.8 11一个程序中,使用了多个scanf函数输入数据,用a=3,b=7,x=8.5,y=71.82,c1=A,c2=a输入到每个变量,应该如何输入数据? main() int a,b; float x,y; char c1,c2; scanf(a=%d,b=%d,&a,&b); scanf( x= %f,y=%e,&x,&y); scanf( c1= %cc2=%c,&c1,&c2); printf(a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%cn,a,b, x,y,c1,c2); 在使用多个scanf函数输入数据时,第一个输入行末尾输入的回车被第二个scanf函数吸收,因此

24、在第二、三个scanf函数的双引号后放置一个空格以抵消上行输入的回车键。若没有一个空格,则按上面输入的数据会出错。 运行输入:a=3, b=4 X=8, y=71.82 C1=AC2=a 运行结果:a=3,b=7,x=8.500000,y=71.820000,c1=A,c2=a 四编程题 1由键盘输入1个字母,输出其ASCII码值。 将一个字符常数赋给一个字符变量,并不是把该字符本身放到内存单元中去,而是将该字符的ASCII代码放到内存单元中,因此,字符型数据也可以像整型数据那样使用,可以用来表示一些特定范围内的整数。所以int型与char型变量的值可以互换,分别用%c和%d不同格式输出就行了

25、。 但是注意这种转换是有条件的。因为,char变量在内存占一个字节,而int整型变量占2个字节。当int型高位字节是0时,char与 int可以互换;若不是0,则不可以互换。例如,用%c格式输出时,取低位字节,高位字节被舍弃。 参考代码: #include stdio.h main() char ch; ch=getchar(); printf(%c,%d,ch,ch); 运行输入:B 运行结果:B,66 2从键盘上输入一个大写字母,把它转换成小写字母,然后显示出来。 大写字母转换小写时ASCII码值+32,相反的,小写字母转换成大写字母时ASCII码值-32。 参考代码: #include main() char x1,x2; printf(x1=?n); scanf(%c,&x1); x2=x1+32; printf(%c,%cn,x1,x2); 运行输入:A 运行结果:A,a 3从键盘上输入两个实型数,求两数的和、差、积,输出结果时要求小数部分占两位。 结果要求保留2位小数,所以输出的结果格式为%.2f。 main() float x,y,a,b,c; printf(please input x,y:); scanf(%f,%f,&x,&y); a=x+y; b=x-y; c=x*y; printf(x=%f,y=%fn,x,y);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 策划方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁