标准C语言问答题
注:以下问题请根据联机文档和课程视频的讲解独立完成,要求本文档在全部完成后提交,由辅导教师进行批改。回答问题时请将答案填写在蓝色答:之后。
注册名:
1.1.1 C语言概述 (ch1)
1) C语言起源于那一年,C语言的发明者是谁?
答:
2) 详细描述C语言的优势。
答:
3) 简述C语言的未来发展方向。
答:
4) 简述C语言的不足。
答:
5) 简述C语言的两个标准。
答:
1.1.2 数据 (ch2)
1) C语言中,基本数据类型有几个,请分别加以描述。
答:
2) 字符类型也属于C语言整型家族,并且分为有符号(singed)和无符号(unsigned)
两种版本。这个判断对吗?
答:
3) C语言有布尔类型吗?请加以说明。
答:
4) 简述整型的长度和机器字长的关系。
答:

5) 长整型至少应该和整型一样长,而整型至少应该和短整型一样长。这句话对吗?
答:
6) 整数用八进制来表示和用十六进制来表示时,开头的标识是什么?
答:
7) value = value – 48; value = value – ’60’; value = value - '0'; 这
三条语句相等吗?
答:
8) 枚举类型的变量实际上以整型的方式存储,例如:enum Jar_Type{CUP = 8, PINT =
16, QUART, HALF_GALLON, GALLON=128}; 这种只对部分符号名赋值合法吗? 答:
9) 在上面定义的枚举类型变量Jar_Type中,QUART, HALF_GALLON 的值分别是多少?
答:
10) 浮点数家族包括哪几种类型?
答:
11) 标准中针对浮点数定义的FLT_MAX, DBL_MAX和LDBL_MAX这三个常量,具体含义是
什么,是在那个系统头文件中定义的。
答:
12) C语言中的字符串,通常存储在字符数组中,它的结束标志是什么?请描述该结束标志
的具体含义。
答:
13) 字符串常量中,"" 字符串的含义是什么?
答:
14) 当一个字符串常量出现于一个表达式中时,如:printf("%sn", "Original
input."); 表达式所使用的值就是这些字符所存储的地址,而不是这些字符本身。这句话对吗?
答:
15) C语言中,数组的下标总是从0开始,还是从1开始?
答:
16) C编译器一般并不检查程序对数组下标的引用是否在数组的合法范围内,所以防止因数
组越界而产生的非法访问都是程序员自己的事。判断这句话的正确性,请给出一个例子程序加以验证。
答:
17) C语言支持一种叫作typedef的机制,它允许你为各种数据类型定义新名字:char
*ptr_to_char; typedef char *ptr_to_char; ptr_to_char a; 请给出这三个声明的解释。
答:
18) const变量的赋值方法:首先,可以在声明时对它进行初始化,如int const a = 15;
其次,在函数中声明为const的形参在函数被调用时会得到实参的值。请问,还有其它方式或场合可以对一个const变量进行赋初值吗?
答:
19) 以下指针变量的const属性:int const *pci; int *const cpi; int const
*const cpci; 请详细描述三者的区别。
答:
20) #define指令是另一种创建名字常量的机制, #define MAX_ELEMENTS 50 (注意:
#define语句之后没有”;”),int const max_elements = 50; 请给出二者在存储概念上的区别。
答:
21) 标识符的作用域就是程序中该标识符可以被使用的区域,C编译器可以确认4种不同类
型的作用域 -- 文件作用域、函数作用域、代码块作用域和原型作用域。请分别给出示例对这四种标识符的作用域加以描述。
答:
22) 位于一对花括号之间的所有语句称为一个代码块。任何在代码块的开始位置声明的标识
符都具有代码块作用域(block scope), 表示它们可以被这个代码块中的所有语句访问。请判断上述描述的正确性。
答:
23) 任何在所有代码块之外声明的标识符都具有文件作用域(file scope), 它表示这些标
识符从它们的声明之处直到它所在的源文件结尾处都是可以访问的。请判断上述描述的正确性。
答:
24) 链接属性一共有3种 -- external(外部)、internal(内部)和none(无)。请分
别对这三种链接属性用示例加以说明。
答:
25) 关键字extern和static用于在声明中修改标识符的链接属性,如果某个声明在正常
情况下具有external链接属性,在它前面加上static关键字可以使它的链接属性变为internal. static只对缺省链接属性为external的声明才有改变链接属性的效果。请判断上述描述的正确性,并用示例加以说明。
答:
26) 变量的存储类型(storage class)是指存储变量值的内存类型。有三个地方可以用于
存储变量,请给出这三个地方的具体名称。
答:
27) 凡是在任何代码块之外声明的变量总是存储于静态内存中,也就是属于堆栈的内存,这
类变量称为静态(static)变量。这句话对吗?
答:
28) 静态变量在程序运行之前创建,在程序的整个执行期间始终存在。这句话对吗?
答:
29) 在代码块内部声明的变量的缺省存储类型是自动的(automatic). 也就说它存储于堆
栈中,称为自动(auto)变量。在程序执行到声明自动变量的代码块时,自动变量才被创建,当程序的执行流程离开该代码块时,这些自动变量便自动销毁。如果该代码块被数次执行,例如一个函数被反复调用,这些自动变量每次将重新创建。请举例说明自动变量的生存周期。
答:
30) 对于在代码块内部声明的变量,如果给它加上关键字static, 可以使它的存储类型从
自动变为静态。这句话对吗?
答:
31) 函数的形式参数可以声明为静态吗?请说明理由。
答:
32) 关键字register可以用于自动变量和静态变量的声明,提示它们应该存储于机器的硬
件寄存器而不是内存中,这类变量称为寄存器变量。这个论述有什么问题,请给出你的