1.5 上机实习课程
通过本章的学习,读者应该可以了解C语言的发展近况、特色与优点、整体开发与完整的编译流程,最重要的是可以学习到如何开始设计一个简单的C语言程序。接下来的上机学习课程将复习所学习的内容,让读者对C语言程序设计有更进一步的了解。
■【上机实习范例:CH01_02.c】
“\n”是C语言中的一种转义字符,具有换行的功能,这部分内容在第2章中将详细介绍,它通常配合printf()函数使用。请利用printf()函数与\n,得到图1.17所示的执行结果。
图1.17
参考程序代码如下。
01 #include <stdio.h> 02 #include <stdlib.h> 03 04 int main(void) 05 { 06 07 Printf("*\n"); /* 调用printf()函数 */ 08 Printf("**\n"); /* \n可跳行 */ 09 Printf("***\n"); 10 11 return 0; 12 }
本章课后习题
1. 何谓可执行文件?
解答:可执行文件是链接程序中所使用到的目标文件、函数库文件等程序文件,并且最后程序运行完全无误后,可用来解决问题。可执行文件的扩展名在Windows操作系统中是“.exe”,它可以直接在操作系统中显示执行结果,不需要借助其他编译器。
2. C语言有哪些特色与优点?
解答:程序可移植性强具有跨平台能力、体积小、执行效率高、具有底层处理能力、可作为学习其他语言的基础。此外,C语言本身可以直接处理底层存储器的问题,甚至可以处理底层位元逻辑运算问题,所能实现的功能不只是在开发套装软件方面。硬件驱动程序、网络通信协议和嵌入式系统等都是C语言所能完成的系统。
3. 何谓解释型语言?
解答:解释型语言是利用解释器来对高级语言的原始程序代码做逐行解释,即每解释完一行程序代码后,才会再解释下一行。解释的过程中如果发生错误,则解释动作会立刻停止。因为使用解释器解释的程序在每次执行时都必须解释一次,所以执行速度较慢。不过因为仅需存取原始程序,不需要再转换为其他类型的文件,所以程序所占用的存储空间较小。Basic、LISP、Prolog等语言皆使用解释的方法。
4. 美国国家标准学会为何要制定一种标准化的C语言?
解答:随着C语言在不同操作平台上的发展,逐渐有不同版本的C语言出现,它们的语法相近,却因为操作平台不同而不兼容。于是在1983年,美国国家标准学会开始制定一种标准化的C语言,以使同一段程序代码能在不同操作平台上使用,而无须再重新改写。
5. 在程序中使用函数有哪些优点?
解答:
(1)简化程序内容。主程序通过函数调用的方式执行各函数中所定义的程序功能,简化了原本应编写在主程序中的程序内容。
(2)程序代码复用。不必每次都重新编写相同的程序代码来执行同样的程序功能。
6. 何谓分治算法?
解答:将整个程序需求从上而下、由大到小逐步分解成多个较小的单元,这些单元称为“模块”。程序设计者们可针对各模块分别开发,不但能减轻设计者的负担、可读性较高,而且日后的维护工作也变得容易许多。
7. 何谓集成开发环境?
解答:所谓集成开发环境,即把有关程序的编辑、编译、执行与调试等功能集于同一操作环境下,以简化程序开发过程的步骤,让使用者只需通过此单一集成的环境,即可轻松编写程序。
8. 原始文件、目标文件的功能是什么?请上网查询资料详细描述。
解答:原始文件是一个纯文字文件,扩展名为“.c”,为使用者自行编写的原始程序代码。原始文件可以利用各种文字编辑器,或C语言集成开发环境(例如Dev C++)来进行编辑。原始文件还可以在各种平台中使用不同的编译器来编译成可执行文件。目标文件乃是使用者开发的程序在经过编译器编译后所产生的机器码,目的是让计算机明白应该执行的指令与动作。虽然目标文件中已经包含机器码,不过通常还需要链接程序来链接函数库文件(*.lib)与其他程序的目标文件。
9. 程序的错误按照性质可分为哪两种?
解答:(1)语法错误;(2)逻辑错误。
10. 在Dev C++中,可否声明为void main()?请说明原因。
解答:虽然void main()的语法逻辑正确,但有些系统不能通过编译,例如本书所使用的Dev C++。因此本书中对所有C语言程序中的main()函数都声明为int类型。
11. 编译阶段的主要工作是什么?
解答:编译器会将预处理器处理过的程序编译成机器码(又称为目标文件),而此文件的扩展名为“.obj”。目标文件可让计算机明白应该执行的指令与动作。虽然目标文件中已经包含机器码,不过通常还得多一步操作,即需要链接程序来链接函数库文件(*.lib)与其他程序的目标文件。
12. 下列的程序代码在语法上有哪些错误?
01 #include <stdio.h> 02 #include <stdlib.h> 03 04 int main(void) 05 { 06 printf(' C语言程序初体验\n ');/* 调用printf()函数 */ 07 08 return 0; 09 }
解答:必须将“printf(' C语言程序初体验\n ');”中的单引号修改为双引号。
13. 请问下面的语句是否为合法语句?
printf("C语言程序初体验!!\n"); system("pause") ; return 0;
解答:是,因为C语言语句的编写具有自由化格式精神。
14. 试说明main()函数的功能。
解答:main()函数是一个相当特殊的函数,它代表着任何C语言程序的进入点,并且必须使用main作为函数名称。也就是说,当程序开始执行时,一定会先执行main()函数,而不管它处于程序中的哪个位置,编译器都会找到它并开始编译程序内容,因此main()函数又称为“主函数”。
15. 如何在程序代码中使用标准函数库所提供的功能?
解答:要在程序代码中使用标准函数库所提供的功能,必须要先用预处理器指令“#include”来引用对应的头文件。“#include”指令的作用就是告诉编译器要加入哪些C语言中所定义的头文件。使用者除了可以使用C语言所提供的内建头文件外,也可以使用自定义的头文件,不过要用“""”符号将自定义的头文件引起来。