c语言程序设计第五版习题答案.doc
121页习题解析与答案第1章C语言概述一. 简答题1.概述C语言的主要特点解答】(1)语言简洁、紧凑,使用方便、灵活2)数据类型丰富,表达能力强3)运算符多样C语言中的运算符包含的范围非常广泛4)具有结构化的控制语句如if…else语句、while语句、do while语句、switch语句、for语句5)允许直接访问物理地址C语言中含有的位和指针运算,能够直接对内存地址进行访问操作6)所生成的目标代码质量高,可移植性好2.构成C语言程序的基本单位是什么?它由哪几部分组成?【解答】函数是构成C语言程序的基本单位一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成3.C语言程序的运行一般要经过哪几个步骤?【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行二.运行程序写结果1.输入下面程序并运行main(){int a1,a2,x; a1=100;a2=50;x=a1-a2; printf(″x=%d\n″,x);}【解答】运行结果为:x=502.输入下面程序并运行main() {int a1,a2,x; a1=10;a2=20;x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2);printf(″x=%d\n″,x); }【解答】运行结果为:a1=10,a2=20 x=2003.输入下面程序并运行。
include
这些函数的说明都包括在stdio.h文件中②main是主函数的名称用{}括起来的内容是函数体,函数体由若干条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束 ③注意显示的信息有三行,所以要用到换行符“\n”参考代码:#include
3. C语言中的常量包括哪几类?各自是如何构成的?【解答】C语言中的常量是一些其值预先定的量,并且在程序执行过程中其值不再发生变化常量的分类遵循基本数据类型分类原则,C语言编译系统自动将其存放在于类型相应的内存单元中其类别包含整形常量、浮点常量、字符常量、字符串常量和枚举常量整形常量又分为十进制整形常量、八进制整形常量、十六进制整形常量浮点常量分成十进制形式和指数形式C语言中的,字符常量是用单括号括起来的一个字符或是字符序列,而字符串常量是用一对双括号括起来的零个或者多个字符组成的序列4. 简述指针、变量的指针、变量的值、指针变量与指针变量的值的含义是什么?【解答】C语言中将地址又称为“指针”一个变量所分配的内存空间首字节地址,称为该变量的指针(地址),变量的值就被放入所分配的地址单元中地址一旦被分配,就不会再改变,所以,指针是一个常量既然是常量就可以把它赋给一个变量用来存放指针的变量,被称为指针变量一个指针变量的值是变量的地址,一个指针变量可以被赋予不同的指针值5. 下面哪些是不合法的常量?说明不合法的理由123,3.1415926,0892,’M’,’\n’,0xabc,0.618E-6,”Morning”,【解答】非法常量有: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 a,x; float x,y;【解答】(1) char c1,int a2;错误定义不同类型的变量时,应用分号彼此分开改正为: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; 错误类型名不能有大写字母,相同类型名之间用逗号分隔改正为:int a,b,c;(7) int a,x; float x,y;错误。
在同一程序位置上,同一变量名不能重复定义充当两个不同的变量改正为:int a,x; float x1,y;7. 下述字符串常量的长度是多少?在内存中存储时各自占用的单元数又是多少?(1) “Hello!” (2) “ABC\n\\TH\064\?” (3) “\xAB*\765+123=?”【解答】(1)“Hello!” 字符串长度为6,占用内存字节数为72)“ABC\n\\TH\064\?” 字符串长度为9,占用内存字节数为10因为其中\n \\ \064\?各自只占一个字符的位置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=&a;p2=&b; c=(-*p1)/(*p2)+6; printf("a=%d,b=%d\n",a,b);printf("*p1=%d,*p2=%d\n",*p1,*p2); printf("c=%d\n",c);}【分析与提示】 p1 a a20b10 P2 b`【解答】a=20,b=10 *p1=20,*p2=10 c=43.以下程序的执行结果是 。
include





