C语言答案 第2章学习资料.doc
厦门大学本科生公共课《C程序设计基础》教材习题答案第二章C语言基础
主讲教师:第PAGE4页/共NUMPAGES5页
一、思考题
常量和变量有什么区别?它们分别是如何定义的?
常量是指在C程序运行过程中其值不变的量,变量是一个值的存放处,其值在程序运行过程中可以被改变。
常量有两种形式:字面常量与符号常量,C语言可以使用以下两种形式定义符号常量
(1)用关键字const定义
定义格式为:const类型名常量名=值;
(2)用编译预处理命令#define
定义格式为:#define常量名值常量
变量的定义格式为:
数据类型变量名1,变量名2,…,变量名n;
或
数据类型变量名1=初值1,变量名2=初值2,…,变量名n=初值n;
变量的要素有哪些?请用一个例子说明?
名字、类型、值和地址
inta=1;int是类型,a是名字,1是值,地址是编译器给a变量分配的内存空间
为什么程序需要有短整型(short)和长整型(long)?
整型的值集理论上是所有整数,但由于受到计算机存储单元的限制,C语言的整型只能表示所有整数的一个有限子集,因此,整数有它的表示范围限制,且不同的C语言系统可表示整数的范围可能不同。不同范围的整型数据所占有的内存空间大小不同。程序开发人员通过选择能够满足范围要求的类型(short或long),可以减少数据存储空间。比如,当短整型可以满足数据范围要求时,就没有必要选择需要更多存储空间的长整型。
字符’8’
字符’8’
C语言有字符串变量吗?
没有
字符常量和字符串常量有和区别?
字符常量就是单引号里面的字符比如a,字符串常量就是双引号里面的比如fasdf,而且存贮的时候字符串常量最后会加上一个/0作为结束符,也就是说上面的字符串常量里有6个字符
C语言中的运算符“/”和“%”有何区别?C语言中除法运算符“/”与数学中的运算符“÷”的用法和功能完全一样吗?
“/”是除法,“%”是取余数,“/”与“÷”的用法和功能不完全一样,“÷”得到的是两数相除后得到的真实值,“/”得到的是两数相除后取整的值。
在C语言中,运算符“=”的功能是什么?能用它来判别两个量是否相等吗?
“=”是赋值运算符,它将右侧表达式的值赋予左侧变量。不能判别两个量是否相等。
双目运算符两边的操作数可以是不同的类型吗?如果可以,它们如何影响运算的结果?
可以,C编译器会先对其中一些操作数进行隐式类型转换,使操作数类型一致后进行计算。转换方向为:char,short-int-unsigned-long-double,float-double
10、描述你所学过的运算符的优先级。
()[]-.从左到右
!~++--+-*(type)sizeof从右到左
*/%从左到右
+-从左到右
从左到右
==从左到右
==!=从左到右
从左到右
^从左到右
|从左到右
从左到右
||从左到右
?:从右到左
=+=-=*=/=%==^=|===从右到左
,从左到右
11、什么是表达式?它与数学中的代数式有何不同?
C语言的表达式是运算符和操作数组成的运算式。代数式是由运算符号(加、减、乘、除、乘方、开方)把数或表示数的字母连结而成的式子。单独一个数或者一个字母也是代数式。带有“(≤)”“(≥)”“=”“≠”等符号的不是代数式。而C语言中根据运算符的不同,可将表达式分为算术表达式、赋值表达式、关系表达式、逻辑表达式、条件表达式和逗号表达式,可以包含的运算符更多。
12、为什么在表达式中有时必须要使用括号?
当希望程序执行计算时,应写出一个表达式以制定必要的操作。括号可以用来强制改变表达式的运算顺序。
13、++i与i++有何区别?
++i是先让i自加1后再参加其他运算,而i++是先让i参加其他运算后再自加1。
14、在函数printf的控制字符串参数末尾经常有一个转义字符“\n”,它的作用是什么?而为何当用printf显示提示用户输入的信息是很少使用该字符?
\n作用是换行。用户输入时需要回车,因此会自动换行,不需要输出\n。
15、若变量i已定义为int型变量,当执行赋值语句i=8.9;后,i的值是什么?若接着执行赋值语句i=16.46;后,i的值又是什么?
816
16、说出下列C语言表达式的值和类型
(1)值:-5,int
(2)值:6,int
(3)值:24.0,double
(4)值:6,int
(5)值:3.5,double
(6)值:5,int
(7)值:5,int
17、