第一篇 C语言基础

第1章 踏上征程前的思想动员

C语言是目前国内外广泛流行的高级程序设计语言,它是在20世纪70年代初问世的,是面向过程的较好的结构化程序设计语言。它不仅可以用来编写系统软件,也可以用来编写应用软件,同时也是面向对象程序设计技术的主要工具。C语言是一门强大而灵活的语言,读者在学习时肯定会遇到很多困难,但恭喜读者选择了本书,因为笔者是十几年前自学C语言的,知道学习C语言的酸甜苦辣,因此笔者有信心带领读者轻松地学好C语言、用好C语言。

本章的主要知识点如下:

·为什么选择C语言

·如何学习C语言

·机器语言进化史

·认识C语言的代码

·学习C语言的开发环境

目录

第一篇 C语言基础

第1章 踏上征程前的思想动员

1.1 为什么选择C语言

1.2 如何学好C语言

1.3 语言概述

1.4 程序的开发周期

1.5 VC++、C++、C和TC的区别​​​​​​​

1.6 小结

1.7 习题


1.1 为什么选择C语言

为什么要选择C语言?这是每个读者应该问的问题。如果掌握了C语言之后,还是不能满足读者的需求,那么学习C语言就是一件浪费时间的事情。笔者在本节尝试回答这个问题,如果笔者的回答不能令读者满意,也许读者应该选择另外一门编程语言。

1.在计算机领域,C语言“大小通吃”

C语言的应用极其广泛,不论是网站后台还是底层操作系统,多媒体应用还是大型网络游戏,均可使用C语言来开发。

(1)C语言可以写网站后台程序。用C语言编写CGI(Common GateWay Interface,使浏览器能与用户交互的一种方法)程序,然后在HTML页面中嵌入CGI,即可完成强大的功能,至于连接数据库,查询、插入数据等常规操作,当然也不在话下。对于有大量连接的网站,比如大型论坛、社区、游戏,用C语言编写的CGI,比起用其他语言编写的后台程序,速度更快、性能更优。

(2)C语言可以写出绚丽的GUI界面。无论在Windows平台还是Linux平台上,用C语言都可以写出绚丽华美的GUI窗口界面来。类似QQ、MSN等软件的GUI界面,都可以通过C语言实现。

(3)C语言可以专门针对某个主题写出功能强大的程序库,然后供其他程序使用,从而节省其他程序的开发时间。比如常用的压缩、解压缩软件,就有专门的zlib库;mp3解码软件,有libmad库;还有以前的DOS时代Borland公司提供的图形库等。有了各种各样的程序库后,程序员开发软件时,就可以把这些库拿来直接使用,组装成自己所需的软件。而这些库一般都是用C语言写成的,既高效又稳定。上面提到的很多库中都有C语言源代码可以供学习研究。

(4)用C语言可以写出大型游戏的引擎。游戏中需要处理的事情繁多,很多游戏对实时的要求比较高,C语言运行高效、快捷,能满足这些需求。

(5)用C语言可以写出另一个语言。很多语言的编译器或者解释器就是用C语言编写出来的。比如风靡全球的PHP,常被用来写网站后台程序,再如Ruby等。

(6)用C语言可以写操作系统和驱动程序,并且这些只能用C语言编写。Linux操作系统的全部源代码都可以从网上得到。Windows操作系统虽然无法获取到源代码,但是一批开源运动者用C语言编写了一个Windows克隆版本的操作系统ReactOS,与Windows几乎一模一样,它的代码也是开源的,可以通过访问网站www.reactos获取相关信息。

(7)任何设备只要配置了微处理器,就都支持C语言。从微波炉到手机,都是由C语言技术来推动发展的。

一句话,没有C语言干不了的事情!何况它同时干了这么多事情。

2.掌握了C语言,其他类似语言不学自通

当掌握了C语言后,再去学习其他面向过程的语言,最多一个星期就能学会。因为万变不离其宗,其他语言只是在语法上有些许更改,而思想却没有更改。

3.C语言久经考验,有现成的大量优秀代码和资料

因为C语言已经存在很多年了,它有广泛的使用团体,并且有大量的现成代码可以利用。这就使读者能在过去程序的基础上,快速和高效地编写新的算法和函数。C语言是一个开源组织的语言,在全球著名的开源组织网站www.sourceforge上,能找到任何想要的开源代码。C语言使用者众多,讨论者也就众多,开发出了数不尽的资料可供学习。

4.简洁、紧凑,使用方便、灵活,功能强大,执行效率高

所有的优点都是基于C语言的简洁、紧凑,使用方便、灵活,功能强大,执行效率高。C语言仅有32个关键字,9种控制语句,却能完成无数的功能。在某些方面C语言可能确实不如其他语言优秀,比如在字符串处理方面就不如Perl语言;在数值计算方面就不如Fortran语言;在人工智能方面就不如Lisp语言。可是这些语言在其他方面却远远不及C语言。而且C语言其他的诸如表达力强、移植性好的特点,也许现在读者还无法理解,随着时间的推移,将会慢慢了解到。

如果上面的回答还是不能满足读者的需求,那么最后一条一定可以满足:精通C语言,工作不用愁!

1.2 如何学好C语言

无论出于什么目的,一旦下定决心准备学习C语言,就要端正思想,只是听说C语言难,所以觉得学不好,这是不可取的。只要读者掌握了一些方法,克服了畏难情绪,并且不轻言放弃,那么就完全可以学好。以下是一些基本方法:

(1)多动手多求人。所有的问题都可以通过自己编写代码、观察结果解决。凡是可以通过编写代码观察到结果的问题,都不应该成为一个问题。不会的,也不要太固执,多问问有经验的人。

(2)多学习优秀代码。C语言灵活简洁,即使编写出不好的代码,也能编译出可以运行的程序来。但是还有更优秀的编程技巧,可以让程序更好地工作,这就要求读者多学习其他人编写的优秀代码。

(3)多以人类的思考方法来类比计算机。计算机需要什么数据、如何获取这些数据、得到后如何存放、如何处理、处理后如何表现等,对这些问题要多问些为什么,一旦理解了计算机处理这些问题的过程,编程就是一件非常轻松的事情了。

(4)C语言只是一个基本工具,要想编写强大的软件,必须学习相关操作系统的API(应用程序编程接口),熟悉其他类库的使用方法,才能开发出满足用户需求的软件。

本书已经考虑到C语言难学的情况,将难点分散到各个章节,尽量以非计算机专业术语讲解,容易理解。同时尽量用图示和实例代码来帮助读者更快地学会C语言。

1.3 语言概述

一提到语言这个词,人们自然会想到像英语、汉语这样的自然语言,因为语言是人和人相互交流信息不可缺少的工具。而今天,计算机遍布了我们生活的每一个角落,除了人和人之间的相互交流之外,我们还必须和计算机交流。用什么样的方式才能和计算机做最直接的交流呢?人们自然想到的是最古老同时也是最方便的方式——语言。

1.3.1 什么是语言

类比人类的语言,如汉语、英语、法语等,可以总结出语言有如下特点:

(1)语言是用来交流沟通的。有一方说,有另一方听,必须有两方参与,这是语言最重要的功能。语言就是用来表达意思、传递信息的。说的一方传递信息,听的一方接受信息;说的一方下达指令,听的一方遵从命令做事情。没有语言,双方就很难交流沟通。

(2)语言有独特的语法规则,交流双方都必须了解并遵守这些规则。一个只会说汉语的中国人,和一个只会说法语的法国人,如果戴上面具,只通过嘴巴发出声音互相交流,结果一定是鸡同鸭讲,信息完全传递不出去。为什么?因为互相不知道对方的语法规则,当然听不懂了。为什么要戴面具?为什么只能通过嘴巴?因为人类的一些面部表情,身体动作,这些是相通的,不通过声音,而通过肢体语言也能多少表达出一些意思。

1.3.2 什么是机器语言

计算机是一个忠实的仆人,时刻等候着主人的命令。如何才能使计算机听话呢?当然是用计算机听得懂的语言去命令它了。计算机的大脑或者说心脏就是CPU,它控制着整个计算机的运作。每种CPU都有自己的指令系统。这个指令系统就是该CPU的机器语言。机器语言是一组由0和1系列组成的指令码,这些指令码是由CPU制作厂商规定出来的,然后发布出来请程序员遵守。如下面是某CPU指令系统中的两条指令:



1000000         
加
1001000         
减

要让计算机完成相应的任务,就得用这样的语言去命令它。这样的命令不是一条两条,而是上百条。由于不同型号的计算机的指令系统即机器语言是不相通的,按一种计算机的机器指令编制的程序,不能在另一种计算机上执行。

用机器语言编写程序,编程人员首先要熟记所用计算机的全部指令代码和代码的含义。在编写程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步所使用的工作单元处在何种状态。这是一件十分烦琐的工作,编写程序花费的时间往往是实际运行时间的几十倍或几百倍。而且,编出的程序全是由0和1组成的指令代码,不仅直观性差,还容易出错(读者可参考图1-1中所示的机器语言部分)。

1.3.3 什么是汇编语言

在用机器语言编程的实践中,一批顽强而聪明的先行者终于发明了汇编语言——一门人类可以比较轻松掌握的编程语言。只是这门语言计算机并不懂,人类还不能用这门语言命令计算机做事情。

所以,有一类专门的程序,既懂机器语言,又懂汇编语言,而且还很聪明,知道怎么把汇编语言翻译成机器语言。于是,人类和计算机间又有了一种新的交流方式,而且人类可以比较轻松地编写程序了。

上文提到过,不同的CPU有不同的指令系统,从而就有不同的机器语言与之一一对应。计算机硬件不同,机器语言就不同,汇编语言也不同。所以程序员用汇编语言编写程序,都要记住是在什么CPU上编写的。程序员不仅要考虑程序设计思路,还要熟记计算机内部结构,这种编程的劳动强度依旧很大。为了使读者对机器语言和汇编语言的表现形式有个感性认识,笔者截取了Visual C++.NET在调试的时候所看到的汇编语言窗口,如图1-1所示(读者现在不必太在意它们的具体含义)。

图1-1 在调试界面中的机器语言、汇编语言、C语言

1.3.4 面向过程的语言

汇编语言和机器语言都是面向机器的,机器不同,语言也不同。既然有办法把汇编语言翻译成机器语言,难道就不能把其他更人性化的语言翻译成机器语言吗?1954年,Fortran语言出现了,其后相继出现了其他的类似语言。这批语言使程序员摆脱了计算机硬件的桎梏,把主要精力放在了程序设计上,不再关注底层的计算机硬件。这类语言称为高级语言。同样的,高级语言要被计算机执行,也需要由一个翻译程序将其翻译成机器语言,这就是编译程序。

这类高级语言解决问题的方法是,分析出解决问题所需要的步骤,把程序看成数据被加工的过程。基于这类方法的程序设计语言称为面向过程的语言。C语言就是一种面向过程的程序设计语言。

1.3.5 什么是C语言

如果读者对C语言的历史感兴趣,可以参考其他相关书籍。本书不再罗列众人皆知的事实了。

一般来说,C语言可以简称C(注意,C是大写的)。至于什么是C语言,请读者自学完本书后,作一个定义吧。

1.4 程序的开发周期

在Windows下,利用“记事本”(Notepad.exe)这个小软件,可以输入并编辑文字,然后保存到计算机硬盘上,如图1-2所示。保存到硬盘上的数据以文件的形式存在,如要将文件保存到“d:\”目录,在保存的时候,“记事本”软件会提示用户输入文件名和保存的路径,例如我们可以用“C.txt”作为文件名,以“d:\”作为文件路径。保存后,通过Windows的文件浏览器定位到“d:\”就可以看到文件“C.txt”。同样的,用画图小软件可以信手涂鸦,也能保存一个扩展名为bmp的文件到硬盘上,如图1-2所示。

图1-2 记事本和画图可以产生文件

可以看到,“记事本”和“画图”都可以产生出文件来。这些文件被称作“文档”。这些文档都可以被应用软件打开,它们自身是无法运行也无法展现其内容的。如:.txt文本文档,要查看其内容,一种办法是用“记事本”软件打开;又如:.mp3音乐文档,想要听其声音,一种办法是用mp3播放软件打开。那么读者有没有想过,如何产生一个.exe的可执行文件呢?

聪明的读者一定知道了。是的,就是通过编写某种语言的源代码,编译成功通过后,再经过连接,成功后就出现了计算机可以执行的一个.exe文件了。这就是所谓的程序。是不是只有C语言才能编制出.exe的程序来呢?当然不是的。据不完全统计,全球现存的编程语言多达2500多种,这其中大部分都可以经过编译连接,最后产生出一个.exe可执行文件来。但是基本上,它们都遵循同样的流程:编辑源代码,编译源代码,连接目标程序,最后生成一个.exe可执行文件。用C语言开发程序的流程如图1-3所示。

图1-3 开发程序的流程

1.4.1 编辑C源代码

编辑C源代码就是做如下工作:

(1)逐个输入字符,如汉字、英文、标点符号或者其他可以用键盘输入的字符。

(2)通过插入、删除、移动、复制、粘贴等方法修改已经输入的字符。

(3)将输入、修改完毕的所有字符保存到硬盘上。

一篇由汉字、英文、标点符号或者其他可以用键盘输入的字符组合的内容被称作文本。能够进行文字编辑的软件被称作编辑器。

通俗地讲,源代码就是程序员输入编写的、符合C语言语法规则的文本。如下列片段就是一段源代码:



void main(void)
{
                printf("\nHello World!");
}

一般用扩展名.c表示其为一个C源代码文件。源代码文件简称源文件,有时候也叫做源程序。程序员的主要工作之一就是根据需求编写源代码。

编辑器的功能在很大程度上能够帮助程序员提高工作效率。只要能输入文字的文本编辑软件都可以作为源代码编辑器。如记事本软件、字处理软件Word、Ultra Edit、Edit Plus等。但是专业程序员一般都采用专业的源代码编辑器。业界鼎鼎有名的编辑工具有VI/VIM、Emacs/XEmacs等。一个好的源代码编辑器,要求具备关键字着色功能(可以用不同的颜色表示代码的不同部分)、优秀的代码跳转功能、代码自动补全功能等。虽然用最普通的记事本软件也能编辑代码,但是却十分不方便。

1.4.2 编译C源代码

编译是把C语言源代码翻译成用二进制指令表示的目标文件。注意,这里的目标文件与机器语言还有一段距离,并不是真正的机器语言,所以不能被计算机直接运行。编译着重于“译”,就是翻译。

声明  

读者要注意区分编辑和编译的概念。虽然一字之差,意义却大不相同。编辑,是指对文本的修改、插入、删除等操作;而编译却是将编辑好的源代码翻译成目标文件。

编译过程由C编译系统提供的编译程序完成。编译程序简称为编译器。编译程序运行后,自动对源程序进行句法和语法检查,当发现错误时,就将错误的类型和所在的位置显示出来,以帮助用户修改源程序中的错误。用户可以再利用编辑器对源程序进行修改。修改好后,重新进行编译,直到编译通过为止。如果未发现句法和语法方面的错误,就自动形成目标代码,并对目标代码进行优化后生成目标文件。

目标程序文件的扩展名为.obj,它是目标程序的文件类型标识。不同的编译系统,或者不同版本的编译程序,它们的启动命令不同,生成的目标文件也不相同,扩展名有时候也不一定相同,当然格式也不相同。但是其作用相同。

一个C源代码文件编译后就会产生一个目标文件与之对应。一般不会出现多个源代码文件对应一个目标文件的情况。进行软件开发涉及的源代码文件个数,不会像教学C语言这样简单到只有一个源文件,而是几十、上百甚至成千上万个。所以大型软件的开发一般通过工程文件的方式来管理源代码。

请读者思考一下,为什么软件开发不直接从源代码一步到位翻译成可执行文件,而要经过编译后,再经过连接这个步骤呢?这个问题,留在后续章节再解释。当读者明白了这个问题后,也就明白了目标文件存在的意义了。

1.4.3 连接目标文件

多个源代码文件经编译后产生了对应的多个目标文件,此时还没有将其组合装配成一个可以运行的整体,因此计算机还是不能执行。连接过程是用连接程序将目标文件、第三方目标文件、C语言提供的运行时库文件连接装配成一个完整的可执行的目标程序。连接程序简称连接器。

可执行程序文件的扩展名为.exe,是可执行程序的文件类型标识。绝大部分系统生成的可执行文件的扩展名是.exe,但是在UNIX系统中,除非在编译时用户特别规定自己的文件名,否则生成的可执行文件自动确定为a.out。有的C编译系统把编译和连接放在一个命令文件中,用一条命令即可完成编译和连接任务,减少了操作步骤。

程序员开发程序,除了要编写自己的代码外,有时候会使用其他人提供的库文件。如读者要编写一个mp3播放器软件,对于mp3解码部分,因为已经有现成的第三方代码库做好了这件事情,可以直接拿这个第三方库文件来使用。这个库提供的功能可供用户的播放器软件调用。为了方便开发,C语言也有一批库函数,一般编译厂商都会提供给开发人员使用。

1.4.4 编译连接过程示例

有时候为了叙述简便,将编译连接这两个步骤,统一用“编译”一个词语代替,读者应该清楚实际是经历过了两步。在VC编程环境里,当用户下达build(构建)命令后,开发环境就开始编译连接工作。本节的示例没有列出源文件,源文件名是main.c,内容可以暂时不考虑,读者只关注编译、连接的步骤即可。

(1)当源代码中没有错误时,其工作过程输出如下:



------ Build started: Project: 9.1, Configuration: Debug Win32 ------
Compiling...
main.c
Linking...
Build log was saved at "file://e:\study\C Study\9.1\Debug\BuildLog.htm"
9.1 - 0 error(s), 0 warning(s)

从这个Build的过程中,明显看出经历了“Compiling…”(编译)、“Linking…”(连接)两步。最后结果是“0 error(s),0 warning(s)”,即没有错误也没有警告。

(2)如果源代码有错误,在编译过程就会提示用户。由于没有通过编译,也就没有目标文件,所以连接也就不用进行了。一个源代码错误编译不通过的示例如下:



------ Build started: Project: 9.1, Configuration: Debug Win32 ------
Compiling...
main.c
e:\study\C Study\9.1\main.c(20) : error C2143: syntax error : missing ')' before '{'
Build log was saved at "file://e:\study\C Study\9.1\Debug\BuildLog.htm"
9.1 - 1 error(s), 0 warning(s)
---------------------- Done ----------------------
    Build: 0 succeeded, 1 failed, 0 skipped

说明  读者现在可能还不明白错误提示信息的含义,不用担心,在后面的章节中会慢慢讲到。现在读者只需要关注如果源代码有错误,会出现什么情况即可。

“e:\study\C Study\9.1\main.c(20):error C2143:syntax error:missing')'before'{'”这行输出表示,代码第20行(“()”内表示出来的)出现错误。错误代码是C2143,具体错误是语法错误,在“{”前缺少“)”。双击错误提示可将鼠标光标定位到错误行处,可以修改源代码。

(3)有时候编译通过了,但是连接却不一定通过。如下:



------ Build started: Project: 9.1, Configuration: Debug Win32 ------
Compiling...
main.c
Linking...
LIBCD.lib(crt0.obj) : error LNK2019: unresolved external symbol _main referenced in function _mainCRTStartup
Debug/9.1.exe : fatal error LNK1120: 1 unresolved externals
Build log was saved at "file://e:\study\C Study\9.1\Debug\BuildLog.htm"
9.1 - 2 error(s), 0 warning(s)
---------------------- Done ----------------------
    Build: 0 succeeded, 1 failed, 0 skipped

编译main.c后没有提示信息,表示通过,产生了.obj文件。Linking提示后,表示开始进行连接。但是在连接过程中出现错误,最终没有产生.exe文件。同样,具体的连接错误原因,这里不再分析了。

1.4.5 运行程序

运行程序是指将可执行的目标程序投入运行,以获取程序处理的结果。如果程序运行结果不正确,可重新回到第一步,对程序进行编辑修改、编译和运行。与编译、连接不同的是,运行程序可以脱离语言开发环境。因为它是对一个可执行程序进行操作,与C语言本身已经没有联系,所以既可以在语言开发环境下运行,也可直接在操作系统下运行。

1.5 VC++、C++、C和TC的区别

VC++、C++、C和TC,这几个语言名中都带有C,可以说和C都有联系。

1.C

C就是指C语言。C语言的关键字少,而且拥有丰富的运算符和数据类型,可以解决大部分的“计算型”的问题或者“描述型”的问题。各大操作系统都提供了各种对C语言的集成化的调试编译环境,使用C语言编写的程序可以轻松地运行在各种平台上而不用做出任何修改,这也是C语言流行的原因。

2.VC++

VC++,一般是指微软公司的Visual Studio 6开发套件中的Visual C++开发环境。Visual Studio 6套件中包含了Visual C++、Visual Basic、Visual FoxPro等语言的开发环境。所谓开发环境,是集成了源代码编辑、编译、连接、调试等功能的一个综合程序。

Visual C++就是一个很好的C或者C++开发环境。一般被简称为VC或者VC++。该开发环境提供了优秀的代码编辑功能,同时提供了编译连接程序,在该开发环境中,输入完源代码,可立即编译运行,并且可以参照代码进行调试。

现在Visual Studio已经发展到了Visual Studio 2012版本,相对于Visual Studio 6.0又有比较大的改变。笔者平时工作时,一般使用Visual C++开发工具,如图1-4所示就是该环境的一个快照。

图1-4是正在使用Visual C++进行调试的一个快照。从图中可以看到当前处于暂停(break)状态,程序运行到“printf("\nPlease input a number(0-100):");”这条语句,当前的变量i_score的值是0。函数的调用过程是:



9.1.exe!main()  Line 12 C++
9.1.exe!mainCRTStartup()  Line 259 +  C

对上面提到的一些词语不理解没有关系,这里只是描述这个快照的情况,使读者对集成的编程环境有个感性认识。等读者有了一定的编程经验后,再回头来看就可以明白。如果读者没有安装VC,只需要明白编程环境的概念即可。

图1-4 Visual C++编程环境

如图1-1所示也是VC的一个快照,显示的是汇编语言窗口。从图1-1可以清楚地看到C语言被翻译成的汇编语言以及其对应的机器语言。从图1-1和图1-4中可以看出,VC是一个比较方便的开发环境。笔者机器上还安装了Visual Assist X扩展工具,这是一个扩展VC环境的一个小软件。从菜单上可以看到Build、Debug菜单项,顾名思义,Build就是编译相关的菜单项,从中可以找到编译需要的一些命令;Debug是调试的菜单项,从中可以看到调试的相关命令。

说明 可以在VC的这个开发环境中进行编译、连接和运行。

对于编译有专门的编译程序,同样,连接也有专门的程序,在VC的安装目录下面可以找到这些程序,而通过开发环境编译连接的时候,由开发环境在后台悄悄地去调用这些程序。从图1-5中可以发现这些程序的藏身之处。其中,cl.exe就是微软的编译器,link.exe就是微软的连接器,它们都可以单独执行。cl.exe执行后的情况如图1-6所示。

C语言于1987年被标准化,称为ANSI C。由于不同软件厂商都可以开发出自己的C语言编译器,在推出的编译器里,多多少少会增加自己的特性,这些特性被称作语言扩展。但是这些编译器都支持ANSI C。如果使用了其中的语言扩展,则在其他编译器上就不能被正确编译。为了不同编译器都能编译同一份源代码,所以应尽量不使用各厂商的语言扩展功能。

图1-5 VC的编译连接程序藏身之处

图1-6 cl.exe执行后的情况

所以说,VC++并不是一门语言,而是开发环境。一般来说,现在进行软件开发,都是在集成的开发环境中进行的。当然,如果愿意,也可以单独编辑源代码,然后用命令行的方法编译并连接程序。

3.C++

C++是另外一门有些类似C语言语法的面向对象的高级语言。虽然C语言不加修改就可以被C++编译器编译,但C和C++是完全不同思想的两种语言,不应将C++看成C的超集。

4.TC

TC是Borland公司早年在16位机器上开发的C编程环境,是Turbo C的简称。最后版本是2.0,一般简称为TC2。一般学习C语言,都使用该编程环境,只是这已经算是老古董了,对于现在的操作系统,使用TC2来编写程序已经很不合时宜了。如图1-7所示是TC2开发环境下输入完源代码后编译完毕的状态。

图1-7 TC2开发环境

5.其他编译器及环境

Linux下面开发软件主要使用GCC(GNU Compiler Collection,GNU编译器集合),因为它免费。

Windows下面除VC++外,也还有不少其他的C语言开发环境,Dev-C++是一个值得推荐的开发环境,因为它开源。Code::Blocks同样也是开源的。LCC-Win32是免费的C小型编译器,TCC是轻型C语言编译器。

注意 本书使用LCC-Win32作为开发环境。

1.6 小结

要想学好C语言程序设计,为以后的学习打下一个好的基础,那么从一开始就要有好的学习态度和正确的学习方法。本章先是带领读者学习了C语言的一些特征,还了解了编程相关的一些背景知识。读者应该对什么是计算机语言有了一个大概的了解。通过本章的学习,读者还应该了解一个可运行的程序是如何被生产出来的,了解了编程的步骤及开发环境和语言的区别。这些知识看似与编程语言学习关系不大,但是却对学习编程语言大有帮助。

1.7 习题

一、填空题

1.C语言开发程序所经过的4个步骤是_____、_____、_____和_____。

2.C程序编译后,目标程序文件的扩展名是_____。

二、上机实践

1.使用读者自己熟悉的编辑器,写一个输出“Hello World”的程序。

【提示】



printf
("\nHello World
!"
);

2.将上述代码进行编译连接等一系列程序后,找到生成的.exe文件,复制到其他文件夹,如从C盘复制到D盘,并运行一下,测试是否能正确输出“Hello World”。

更多推荐

《零基础学C语言》第一篇 C语言基础-第1章 踏上征程前的思想动员