c语言与程序设计-第2章课后习题参考答案.pdf
c语言与程序设计-第2章课后习题参考答案--第1页
2.1下列哪些是词法记号?
关键字(是)
注释
空白符
八进制常量(是)
三字符序列
字符串常量(是)
括号(是)
2.2C编译器可将下列每一个源字符串分解为哪些记号?(不必考虑记号组合是否合法)
(1)x+++yx,++,+,y
(2)-0xabL-,0xabL
(3)2.89E+12L2.89E+12L
(4)String+\FOO\String+\FOO\
(5)x**2x,*,*,2
(6)X??/X??/
(7)a?ba,?,b
(8)x--+=yx,--,+=,y
(9)intx=+10intx,=,+,10
(10)StringFOOString,FOO
(这道题当时改的时候有几个小题改得有错误,注意!)
2.3下列哪些不是标识符,为什么?
标识符由字母、数字和下划线组成,但首字符必须是字母或下划线。
4th不是,以数字开头;
sizeof不是(标准C的关键字)
_limit是
_is2是
xYshould是
x*y不是,*非法
o_no_o_no是
temp-2不是,-非法
isnt不是,非法
enum不是(标准C的关键字。注:关键字也称为保留字,是被系统赋予特定含义并
有专门用途的标识符。关键字不能作为普通标识符,但可以作为宏名。所有预处理均发生在
识别这些关键字之前。)
2.4在下列表示中,哪些是合法常数,哪些是非法常数?对于合法常数,指出其类型;对于
非法常数,说明其错误原因。
2L合法,long长整型
不合法,单引号组中的单引号前需要转义字符
1/5
c语言与程序设计-第2章课后习题参考答案--第1页
c语言与程序设计-第2章课后习题参考答案--第2页
.12合法,double双精度浮点型
0x1ag不合法,g不是16进制数中的符号,也不表示任何类型
33333合法,int整形
a合法,字符串常量
合法,字符串常量
0.L合法,longdouble长双精度浮点型
E20不合法,缺少尾数部分
0377UL合法,unsignedlong无符号长整型
\18不合法,存在非8进制位
\0xa不合法,不符合十六进制字符码表示规则\xhh
0x9cfU合法,unsignedint无符号整形
\45合法,char字符型
1.E-5合法,double双精度浮点型
\0合法,char字符型
3.F合法,float浮点型
34不合法,缺少转义符
合法,char字符型(P35,双引号作为字符常量时既可用图形符号也可用转义序列
表示)
\a合法,char字符型
2.6以下的变量声明语句中有什么错误?
(1)inta;b=5;第一个分号改为逗号inta,b=5;
(2)doubelh;关键字错误doubleh;