c语言程序设计第五版习题答案.doc

上传人:11****ws 文档编号:2122619 上传时间:2019-04-29 格式:DOC 页数:74 大小:527KB
下载 相关 举报
c语言程序设计第五版习题答案.doc_第1页
第1页 / 共74页
c语言程序设计第五版习题答案.doc_第2页
第2页 / 共74页
c语言程序设计第五版习题答案.doc_第3页
第3页 / 共74页
c语言程序设计第五版习题答案.doc_第4页
第4页 / 共74页
c语言程序设计第五版习题答案.doc_第5页
第5页 / 共74页
点击查看更多>>
资源描述

1、1习题解析与答案第 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=502输入下面程序并运行。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=20x=2003输入下面程序

3、并运行。2#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“);3第 2 章 数据类型及其运算一简答题1C 语言中的数据类型主要有哪几类?【解答】 短整型(short int )整型 整 型 (int) 长整型(long int ) 基本类型 字符型 (char) 单精度(float) 实型(浮点型) 双精度(double)枚

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

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

7、是变量的地址,一个指针变量可以被赋予不同的指针值。5 下面哪些是不合法的常量?说明不合法的理由。123,3.1415926,0892, M, n,0xabc,0.618E-6, ”Morning”,3.8e-3.14【解答】非法常量有:0892含有非八进制数字 8 和 93.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

8、 a,x; float x,y;【解答】(1) char c1,int a2;4错误。定义不同类型的变量时,应用分号彼此分开。改正为: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) In

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

10、各自只占一个字符的位置。(3) “xAB*765+123=?” 该字符串不是合法的,因为 765 表示的值太大,超出合法的 ASCII 字符集的范围。二运行程序写结果1以下程序的执行结果是。main()int i,j;i=15;printf(“%d,%d”, i+,i-);【解答】14,152以下程序的执行结果是 。main() int a=20,b=10,c,*p1,*p2;p1=p2=c=(-*p1)/(*p2)+6;5printf(“a=%d,b=%dn“,a,b);printf(“*p1=%d,*p2=%dn“,*p1,*p2);printf(“c=%dn“,c);【分析与提示】p1

11、a P2 b【解答】a=20,b=10*p1=20,*p2=10c=43以下程序的执行结果是 。#include 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 语言中,字符数

12、据可以按其 ASCII 代码值参加整数运算。由于英文字母在ASCII 代码表中是按顺序排列的,所以在计算o+3 代表的字母时,可从字符o 其顺序向后取 3 个字母,该字母是 “r”。(2)从 ASCII 代码表可以看出“小写字母”-“对应大写字母”的结果是 32,因此可推算出如下等式:大写字母的 ASCII 值+32= 对应小写字母的 ASCII 值;小写字母的 ASCII值-32=对应大写字母的 ASCII 值。【解答】girl4以下程序的执行结果是 。#include main()int x;x=-3+4*5-6;printf(“x1=%dn“,x);x=3+4%5-6;a 20b 106

13、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-6 等于 1)x3=0(-3*4 等于-12,-12%-6 等于 0)【解答】x1=11x2=1x3=05以下程序的执行结果是 。#include main() printf(“%dn“,NULL);printf(“%d,%cn“,49,49);printf(“%d,%c,%on“,48+10,48+10,48+10);【分析与提示】0(NULL 的 ASCII

14、码值是 0)49,1(数字 1 的 ASCII 码值是 49)58,:,72(48+10 等于 58,正好是“:”的 ASCII 码值,八进制表示是 72)【解答】049,158,:,72三、改错题1 请修改下列程序,使其能够通过编译。#include Void Main() int 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;7pr

15、intf(“%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();不应该有分号;(2)定义 char c=”c”;时,字符常量应该用单引号;(3)打印语句 printf(“%dn”,int(f%3);的格式有错,应该在 f 前的 int 用括号括起来,因为实型数据不能执行取余运算。正确的程序如下:#include void main() float f=7.12;char

16、 c=c;printf(“%dn“,(int)f %3);printf(“%c“,c);第 3 章 顺序结构程序设计一 简答题1程序有哪三种基本结构?【解答】程序的三种基本结构为:顺序结构、选择结构和循环结构。2C 语言的语句有哪几类?表达式语句与表达式有什么不同?【解答】C 语句可分为以下五类:表达式语句、函数调用语句、控制语句、复合语句和空语句。其中表达式语句与表达式的区别在于表达式语句是表达式加上“;”组成。二、填空题1符号执行 x+=x- =x+x;后 x 的值是。6int a=10,b=20;a+=b;b=a-b;a- =b; 的功能是。答案:1地址、变量 a 的内存地址。2一个分号

17、。3变量地址,变量名。84 连续 2 个%号。 5 -14 6交换 变量 a,b 的值,打印出 a=20,b=10。三运行程序写结果1.以下程序的执行结果是 。#include main()double d=3.2;int x,y;x=1.2;y=(x+3.8)/5.0;printf(“%dn“,d*y);【解答】02以下程序的执行结果是 。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.0000003以下程序的执行结果是 。main()in

18、t k=17;printf(“%d,%o,%xn“,k,k,k); 【解答】17,21,114以下程序的执行结果是 。#include main()char 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,则按实际位数输出。【解答】AB9CD5以下程序的执行结果是 。#include main(

19、)char c1,c2;scanf(“%c%c“,printf(“c1=%c,c2=%c,c3=%d,c4=%d“,c1+,-c2,c1,c2);【解答】运行输入:AB运行结果为:c1=A,c2=A,c3=65,c4=666以下程序的执行结果是 。#include main()char c1,c2;scanf(“%c,%c“, +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。【解答】运行

20、输入:B,C,运行结果为:c1=C,c2=B7以下程序的执行结果是 。main()char ch=a;int a=98;unsigned b=1000;long c=123456789;float x=3.14;double y=1.2345678;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);【解答】

21、(1)a=98,a=b,ch=97,ch=a(2)b=1000(3)c=123456789(4)x=3.140000, y=1.234568(5)x=3.14000e+00,y=1.23457e+00(6)y=1.23108以下程序的执行结果是 。#includemain()int a,b;float x;scanf(“%d,%d“,x=a/b;printf(“nx=%fn“,x);【解答】运行输入:2,2,运行结果为:1.0000009当输入 12345,a 时,给出程序的运行结果,执行结果是 。#includemain()int a;char c;scanf(“%3d,%c“,printf

22、(“n%d,%dn“,a,c);【分析与提示】md,m 指出了要输出数据的宽度。若数据位数小于 m,则左端补空格,若数据位数大于 m,则按实际位数输出。a 的 ASCII 码值是 97。【解答】12345,9710分析下面程序,在键盘上输入数据 才能使得变量 a=10,b=20,c1=A ,c2=a, x=1.5,y=-3.75,z=67.8 。程序如下:#includemain()int a,b;float x,y,z;char c1,c2;scanf(“%5d%5d%c%c%f%f%*f,%f“,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.8 11一个程序中,使用了多个 scanf 函数输入数据,用 a=3,b=7,x=8.5,y=71.82,c1=A,c2=a 输入到每个变量,应该如何输入数据? main()int a,b;

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

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。