《c语言程序设计第五版习题答案.docx》由会员分享,可在线阅读,更多相关《c语言程序设计第五版习题答案.docx(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、c语言程序设计第五版习题答案 c语言程序设计第五版 习题答案 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998 习题解析与答案 第1章C语言概述 一简答题 1概述C语言的主要特点。 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如ifelse语句、while语句、dowhile语句、switch语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质
2、量高,可移植性好。 2构成C语言程序的基本单位是什么它由哪几部分组成 函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3语言程序的运行一般要经过哪几个步骤 (1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二运行程序写结果 1输入下面程序并运行。 main() inta1,a2,x; a1=100; a2=50; x=a1-a2; printf(x=%dn,x); 运行结果为:x=50 2输入下面程序并运行。 main() inta1,a2,x; a1=10; a2=20; x=a1*a2; printf(a1=%
3、d,a2=%dn,a1,a2); printf(x=%dn,x); 运行结果为:a1=10,a2=20 x=200 三编程题 1参照本章例题,编写一个程序,用于显示如下信息: * IloveCprograms! * 要有文件包含语句#include。C语言中没有数据的输入、输出等功 能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf 等来实现的。这些函数的说明都包括在文件中。 main是主函数的名称。用括起来的内容是函数体,函数体由若干 条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 注意显示的信息有三行,所以要用到换行符“n”。 参考代码: #inclu
4、de main() printf(*n); printf(IloveCprograms!n); printf(*n); 第2章数据类型及其运算一简答题 1C语言中的数据类型主要有哪几类 短整型(shortint) 整型整型(int) 长整型(longint) 基本类型字符型(char)(float) 实型(浮点型) 双精度(double) 枚举类型(enum) 数组类型 构造类型结构体类型(struct) 共用体类型(union) 指针类型 空类型(void) 2字符常量与字符串常量有什么区别 字符常量用单括号括起,字符串常量用双括号括起;字符常量存储时占1个字节,字符串常量存储时除了n个字符
5、外,还有系统加上的字符串终止符0,所以字符串常量存储时占n+1个字节。 3C语言中的常量包括哪几类各自是如何构成的 C语言中的常量是一些其值预先定的量,并且在程序执行过程中其值不再发生变化。常量的分类遵循基本数据类型分类原则,C语言编译系统自动将其存放在于类型相应的内存单元中。其类别包含整形常量、浮点常量、字符常量、字符串常量和枚举常量。整形常量又分为十进制整形常量、八进制整形常量、十六进制整形常量。浮点常量分成十进制形式和指数形式。C语言中的,字符常量是用单括号括起来的一个字符或是字符序列,而字符串常量是用一对双括号括起来的零个或者多个字符组成的序列。 4简述指针、变量的指针、变量的值、指针
6、变量与指针变量的值的含义是什么 C语言中将地址又称为“指针”。一个变量所分配的内存空间首字节地址,称为该变量的指针(地址),变量的值就被放入所分配的地址单元中。地址一旦被分配,就不会再改变,所以,指针是一个常量。既然是常量就可以把它赋给一个变量。用来存放指针的变量,被称为指针变量。一个指针变量的值是变量的地址,一个指针变量可以被赋予不同的指针值。 5下面哪些是不合法的常量说明不合法的理由。 123,0892,M,n,0xabc,”Morning”,非法常量有:0892含有非八进制数字8和9 非法指数形式浮点常量:规定e后面的指数必须为整数。 6下面对变量定义的语句哪些不正确为什么请改正。 (1
7、)charc1,inta2;(2)INTa,b;FLOATx,y;(3)a,b:char; (4)charif;(5)inta,b(6)Inta:b:c; (7)inta,x;floatx,y; (1)charc1,inta2; 错误。定义不同类型的变量时,应用分号彼此分开。 改正为:charc1;inta2; (2)INTa,b;FLOATx,y; 错误。C语言中表示类型名的关键字必须小写。 改正为:inta,b;floatx,y; (3)a,b:char; 错误。C语言中变量定义格式为:类型名变量名; 改正为:chara,b; (4)charif; 错误。变量名不能与C语言的关键字重名。
8、改正为:charf1; (5)inta,b 错误。变量定义以语句形式出现,应以分号结尾。 改正为:inta,b; (6)Inta:b:c; 错误。类型名不能有大写字母,相同类型名之间用逗号分隔。 改正为:inta,b,c; (7)inta,x;floatx,y; 错误。在同一程序位置上,同一变量名不能重复定义充当两个不同的变量。 改正为:inta,x;floatx1,y; 7下述字符串常量的长度是多少在内存中存储时各自占用的单元数又是多少 (1)“Hello!”(2)“ABCnTH064”(3)“xAB*765+123=” (1)“Hello!”字符串长度为6,占用内存字节数为7。 (2)“A
9、BCnTH064”字符串长度为9,占用内存字节数为10。因为其中n064各自只占一个字符的位置。 (3)“xAB*765+123=”该字符串不是合法的,因为765表示的值太大,超出合法的ASCII字符集的范围。 二运行程序写结果 1以下程序的执行结果是。 main() inti,j; i=15; p rintf(“%d,%d”,i+,i-); 14,15 2以下程序的执行结果是。 main() inta=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
10、,*p1,*p2); printf(c=%dn,c); p1a P2b c=4 3以下程序的执行结果是。 #include main() chara=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代码值参加
11、整数运算。由于英文字母在ASCII代码表中是按顺序排列的,所以在计算o+3代表的字母时,可从字符o其顺序向后取3个字母,该字母是“r”。 (2)从ASCII代码表可以看出“小写字母”-“对应大写字母”的结果是32,因此可推算出如下等式:大写字母的ASCII值+32=对应小写字母的ASCII值;小写字母的ASCII值-32=对应大写字母的ASCII值。 girl 4以下程序的执行结果是。 #include main() intx; 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
12、,x); x1=11(4*5是20,-3+20是17,17-6等于11)x2=1(4%5等于4,3+4等于7,7-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 5
13、8,:,72 三、改错题 1请修改下列程序,使其能够通过编译。 #include VoidMain() inta=6;b=8; intc; c=a*b; printf(%d,c); 错误的地方有3处:(1)第2行关键字应该小写;(2)定义b时前面应该用逗号;(3)打印语句的格式应该用双引号括起来。 正确的程序如下: #include voidmain() inta=6,b=8; intc; c=a*b; printf(%d,c); 2请修改下列程序,使其能够正确运行。 #include voidmain(); floatf=; charc=”c”; printf(“%dn”,int(f%3);
14、 printf(“%c”,c); 错误的地方有3处:(1)第2行main();不应该有分号;(2)定义charc=”c”; 时,字符常量应该用单引号;(3)打印语句printf(“%dn”,int(f%3);的 格式有错,应该在f前的int用括号括起来,因为实型数据不能执行取余 运算。 正确的程序如下: #include voidmain() floatf=; charc=c; printf(%dn,(int)f%3); printf(%c,c); 第3章顺序结构程序设计一简答题 1程序有哪三种基本结构 程序的三种基本结构为:顺序结构、选择结构和循环结构。 2C语言的语句有哪几类表达式语句与表
15、达式有什么不同 C语句可分为以下五类:表达式语句、函数调用语句、控制语句、复合语句和空语句。其中表达式语句与表达式的区别在于表达式语句是表达式加上“;”组成。 二、填空题 1符号&是运算符,&a是指。 2C语言中的空语句就是。 3Scanf函数中的“格式字符”后面应该是,而不应该是。 4若想输出字符%,则应该在“格式字符”的字符串中用表示。 5intx=7;执行x+=x-=x+x;后x的值是。 6inta=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.以下程序的执行结果是。 #include main() doubled=;intx,y; x=;y=(x+/; printf(%dn,d*y); 0 2以下程序的执行结果是。 main() doubled;floatf;longl;inti; i=f=l=d=20/3; printf(%d%ld%f%fn,i,l,f,d); 以下程序的执行结果是。 main()