1、C程序设计,主讲人:袁丽,燕大里仁基础教学部,内容框架:,程序设计和C语言知识简介,程序设计的三种基本结构,数组、函数、指针的使用,自定义数据类型的使用,文件的输入和输出,第一章:程序设计与C语言,一、基本概念,指令:计算机的一个最基本的功能。 如实现一次加法运算或实现一次大小的判别 程序:一组计算机能识别和执行的指令。计算机的一切操作都是由程序控制的,离开程序,计算机将一事无成,所以计算机的本质是程序的机器。,1.程序与指令:,2.计算机语言:,定义:计算机能够识别和接受的语言。 要使计算机按自己的意图工作,必须使用计算机所能接受、理解和执行的指令指挥计算机工作。 分类:低级语言(机器语言、
2、汇编语言)、 高级语言。(1)机器语言:最早问世,用二进制代码构成指令。如:100000(+) 110000(-)用机器语言编程的缺点:繁琐、不直观、不易调试。移植性差,依赖于计算机。,(2)汇编语言:用符号构成指令,如:MOV、ADD用汇编语言编程:相对直观,但仍繁琐,仍是面向计算机的语言。 (3)高级语言:与低级语言相比,有根本性的区别:它是面向问题的语言。用高级语言编程:直观、易懂、移植性好(不依赖于具体计算机) 注:计算机也不能直接识别高级语言程序,也要进行“翻译”。用一种称为编译程序的软件把高级语言编写的程序(称为源程序)转换为机器指令的程序(称为目标程序),然后让计算机执行指令程序
3、,最后得到结果。高级语言的一个语句往往对应多条机器指令。,高级语言:源程序,机器指令:目的程序,结果,编译程序,编译,执行,二、C语言的发展与特点,发展历史1972年:贝尔实验室的Dennis Ritchie在B语言的基础上设计并实现了C语言。 1978年:B.W.Kernighan和D.Ritchie(简称K & R)合著的The C Programming Language是各种C语言版本的基础,称之为旧标准C语言。 1983年:美国国家标准化协会(ANSI)制定了新的C语言标准,称ANSI C。,二、C语言的发展与特点,特点,C语言是一种结构化语言 C语言语句简洁、紧凑,使用方便、灵活
4、32个关键字,9种控制语句,程序书写形式自由。 C语言程序易于移植 C语言将与硬件有关的因素从语言主体中分离出来,通过库函数或其他实用程序实现它们。 C语言有强大的处理能力 生成的目标代码质量高,运行效率高,三、C语言程序的结构,例1.要求在屏幕上输出下一行信息。This is a C program.,例2. 求两个整数之和。,例3. 求两个整数中的较大者。,C语言程序的结构特点:,一个程序由一个或多个源程序文件组成。一个规模较小的程序往往只包括一个源程序文件,在一个源程序文件中可以包括3个部分:(1)预处理指令(由预处理得到的结果与程序其他部分一起,组成一个完整的、可以用来编译的最后的源程
5、序,然后由编译程序对该源程序正式进行编译,才得到目标程序);(2)全局声明;(3)函数定义 函数是C程序的主要组成部分。一个C语言程序是由一个或多个函数组成,其中必须包含一个main函数(且只能有一个main 函数)。一个小程序只包含一个源程序文件,在一个源程序文件中包含若干个函数。当程序规模较大时,所包含的函数数量较多,为了便于调试和管理,可以使一个程序包含若干个源程序文件,每个源程序文件又包含若干个函数。一个源程序文件就是一个程序模块,即将一个程序分成若干个程序模块。,一个函数包括两个部分。 (1)函数首部(即函数的第1行,包括函数名、函数类型、函数属性、函数参数名、参数类型);(2)函数
6、体(即函数首部下面的花括号内的部分,如果在一个函数中包括多层花括号,最外层的一对花括号是函数体的范围),其一般包括声明和执行两部分; 程序总是从main 函数开始执行。 程序中对计算机的操作是由函数中的C语句完成的。,在每个数据声明和语句的最后必须有一个分号。分号是C语句的必要组成部分。 C语言本身不提供输入输出语句。输入和输出的操作是由库函数scanf和printf等函数来完成的,C对输入输出实行“函数化” 程序应当包含注释。一个好的、有使用价值的源程序都应当加上必要的注释,以增加程序的可读性。,四、C程序的编译和运行,源程序test.c test.obj可执行代码test.exe,编译,连
7、接,运行,上机输入和编辑源程序。源程序以文件形式存放在自己指定的文件夹内,文件用.c作为后缀,生成源程序文件,如f.c。 对源程序进行编译。编译的作用首先是对源程序进行检查,判定它有无语法方面的错误,如有, 则发出“出错信息”,修改程序后重新进行编译,如此反复进行,直到没有语法错误。这时,编译程序自动把源程序转换为二进制形式的目标程序。 进行连接处理。必须把所有的编译以后得到的目标模块连接装配起来,再与函数库相连接成一个整体,生成一个可供计算机执行的目标程序(称为可执行程序)。连接的工作是 由一个称为“连接编辑程序”的软件来实现。 运行可执行程序,得到运行结果。,计算机不能直接识别和执行用高级
8、语言写的指令,必须用编译程序(也称编 译器)把C源程序翻译成二进制形式的目标程序,然后再将该目标程序与系统的 函数库以及其他目标程序连接起来,形成可执行的目标程序。,C语言程序的调试、运行步骤,过程流程图:,如何在VC6环境下调试运行C语言程序:,用vc编写程序的简单步骤:1、编写源程序,也就是输入程序代码,交给计算机处理。 2、把源程序编译成目标文件(.obj)。为什么需要编译呢?计算机识别的是0和1这种二进制数据,编译的过程就是把我们输入的源程序转换成计算机所能识别的二进制数据。编译程序在对源程序进行编译时,还会对其进行词法分析和语法分析,如果有语法错误会给出提示信息。 3、将编译产生的.
9、obj文件和系统库链接(或者说“组建”)成可执行程序文件.exe。 4、运行可执行程序文件。,(1)从桌面上选择“开始”|“程序”|“Microsoft Visual Studio | Visual C+6.0”;或双击VC6在桌面上的快捷方式,Visual C+的启动:,在Visual C+主窗口的顶部是它的主菜单栏,其中包含9个菜单栏:File(文件)、Edit(编辑)、View(查看)、Insert(插入)、Program(项目)、Build(构建)、Tools(工具)、Window(窗口)、Help(帮助)。,主窗口的左侧是项目工作区窗口,右侧是程序编辑窗口。 工作区窗口用来显示所设定
10、的工作区的信息,程序编辑窗口用来 输入和编辑源窗口。,程序编辑窗口,项目工作区,一、输入和编辑源程序:,1.新建一个简单的C源程序,在Visual C+主窗口的主菜单栏中选择File(文件),然后在其 下拉菜单中选择New(新建)。,选择左上角的Files(文件)选项卡,其中有 (表示要建立新的C+源程序文件)。 Visual C+6.0即可以用于 处理C+源程序,也可以处理C源程序。,然后在对话框右半部分的Location(目录)文本框中输入准备编辑 的源程序文件的存储路径。如:D:CC,在右上方的File(目录)文本框中输入准备编辑的源程序文件的名字。如:c1_1.c,这样,即将进行输入和
11、编辑的源程序就以c1_1.c为文件名存放在D盘的CC目录下。,注:如果不写后缀,系统会默认指定为C+源程序文件,自动 加上后缀.cpp。,单击OK按钮以后,回到了主窗口,光标位于程序编辑窗口,表示程序编辑窗口已经激活,可以输入和编辑源程序了。,如果经检查无误,则将源程序保存在前面指定的文件中,方法是:在主菜单栏中选择File(文件),在其下拉菜单中选择Save(保存)项。,2.打开一个已有的程序,(1)在“windows资源管理器”或“我的电脑”中按路径找到 已有的C程序名。,(2)双击该文件,自动会进入Visual C+集成环境,并打开了 该文件。,3.通过已有的程序建立一个新程序的方法,(
12、1)打开任意一个已有的源文件。,(2)利用该文件修改成新的文件,然后通过File(文件)|Save As (另存为)将它以另外一个文件名另存,这样就生成了一个新文件。,二、编译、连接和运行:,1.程序的编译,选择主菜单中的Build(编译),在其下拉菜单中选择Compile *.c项,,(由于建立或保存文件的时候已经指定了源文件的名字,因此在Build菜单的Compile项就自动显示了当前要编译的源文件名。,在选择编译命令以后,屏幕上出现一个对话框,如下:,选择“是”,表示同意建立一个默认的项目工作区,然后开始编译。也可以使用快捷键 Ctrl+F7来实现编译。,进行编译时,编译系统会查看源程序
13、文件中有无语法错误,然后 在主窗口下部的调试信息窗口输出编译的信息,如果有错,会指出 错误的位置和性质。,单击该箭头,可以看到 出错的位置和性质。,2.程序的连接,编译完成以后,会生成一个相应的.obj的文件,叫做目标程序。,编译系统据此确定,在连接后应生成一个名为*.exe的可执行文件, 因此在菜单中会显示此文件。,这时应选择Build(构建)| Build *.exe(构建*.exe),或者使用快捷键F7.,连接完成以后,在调试信息窗口中会显示连接时的信息,说明 没有发生错误,生成了一个*.exe的可执行文件。如下图:,3.程序的执行,在得到可执行文件*.exe以后,就可以直接执行该文件了
14、。 选择Build|!Execute*.exe(执行*.exe),也可以使用快捷键: Ctrl+F5来实现程序的执行.,可以看到程序的运行结果:第1行是程序的输出,然后换行,第2行 Press any key to continue.并非程序的输出,而是Visual C+在输出完 运行结果以后由该系统自动加上的一行信息,通知用户: “按任意键以便继续”当你按下任意键后,输出窗口消失,回到系统 主窗口。,建立和运行包含多个文件的程序:,如果一个程序中包含多个源程序文件,则需要建立一个项目 文件(project file),在这个项目文件中包含多个文件(包括源文件 和头文件)。,项目文件是放在项目
15、工作区的,因此还要建立项目工作区。 实际操作中有两种方法:一种是用户建立项目工作区和项目文件, 另一种是用户只是建立项目文件,由系统自动建立项目工作区。,在编译时,系统会分别对项目文件中的每个文件进行编译,然后 将所得到的目标文件连接成为一个整体,再与系统的有关资源连接, 生成一个可执行文件,最后执行这个文件。,简单了解工程及工程工作区的概念工程:project,即项目,项目内包含了一个应用程序所需的各种源程序、资源文件和文档等全部文件的集合,包括vc6在内的很多开发工具都使用工程来对软件开发过程进行管理。在VC6中编写程序,首先要创建工程。工程工作区:Project Workspace。工程
16、工作区是对工程的扩展,每一个工程都会与一个工作区相关联。一个工作区中可以存放一个工程,代表着一个要进行处理的程序;而大型软件往往需要同时开发数个应用程序,此时一个工作区中也可以用来存放多个工程,其中可以包含该工程的子工程或者与其有依赖关系的其他工程。VC6的开发环境允许在一个工作区内添加数个工程,其中有一个是活动的(缺省的),每个工程都可以独立进行编译、连接和调试。,工程类型:VC6内置了10余种不同的类型可供选择,选择不同的工程类型,VC6系统会提前做某些不同的准备以及初始化工作。“Win32 Console Application”是最简单的一种类型,此种类型的程序运行时,会出现一个类似于
17、DOS的窗口,并提供对字符模式的各种处理与支持。调试C语言程序时,选择此种类型会比较方便。,工作区间中可以有很多工程,一个工程由源文件、头文件、资源文件等组成。 一个工程完成一个任务,多个任务集合在一起构成一个系统。就好像我们要处理一个问题,所以建了一个工作区间;经过我们分析该 问题可以分成多个小问题,于是在一个工作区间中加入了多个工程;我们再 分别对每个问题进行处理。解决问题的过程中,我们要充分利用各种已有的 资源,再结合自己的思考。系统自带的头文件好比是已有的资源,包含了各 种函数,我们引用函数来为我们服务,来解决问题。我们的思考而写的东西 放在源文件中,或者说解决方案在源文件中。,用户只
18、建立项目文件,1、双击VC6在桌面上的快捷方式,打开VC6的集成开发环境窗口;,2、新建一个Win32 Console Application工程 单击菜单“文件”“新建”(英文版为“File”“New”),在弹出的对话框中选择“工程”选项卡(英文版是“Projects”选项卡),在该选项卡中有10多种工程类型,我们选择其中的“Win32Console Application”;,在“位置”文本框(英文版是“Location”)中填写工程的存储目录,当然这里也可以直接单击该文本框右侧的选择按钮 来选择存储目录,这里我选择E:MYPROGRAM作为工程的存储目录; 在“工程名称”文本框(英文版是
19、“Project name”)输入工程的名称,这里我输入的工程名是test,此时VC6会自动在工程存储目录中用该工程名“test”建立一个同名子目录,以后该工程的工程文件以及其他相关文件都将存放在这个目录下:E:MYPROGRAMtest。 这一步设置完成后,如下图:,3、单击“确定”按钮(英文版是“OK”)进入选择界面,可以在这里选择要创建的控制台程序的类型,如下图:,在上图中有4个可选项,我们分别介绍一下: a、一个空工程(An empty project):选择此项将生成一个空的工程,工程内不包括任何东西。 b、一个简单的程序(A simple application):选择此项将生成包
20、含一个空的main函数和一个空的头文件的工程。 c、一个“Hello,World”程序(A “Hello World!” application):需要包含有显示出“Hello World!”字符串的输出语句。 d、一个支持MFC的程序(An application that supports MFC):可以利用VC6所提供的类库来进行编程。 这里我选择了“一个空工程”,单击“完成”按钮(英文版是“Finish”),此时VC6会询问你是否接受这些设置,单击“确定”(OK),进入编程界面,如下图:,4、此时我们看一下VC的工作区(Workspace)窗口,该窗口位于VC界面的中部左侧,该窗口有两
21、个标签,一个是ClassView,一个是FileView,如下图:,ClassView中列出的是工程中所包含的所有类的有关信息,我们的程序不会涉及到类,所以这个标签中现在是空的;单击切换到FileView标签后,将看到这个工程所包含的所有文件信息。点击“+”图标打开所有的层次会发现有三个逻辑文件夹:Source Files文件夹中包含了工程中所有的源文件;Header Files文件夹中包含了工程中所有的头文件;Resource Files文件夹中包含了工程中所有的资源文件。如下图:,5、下面我们在工程中新建C源程序文件并输入源程序代码。单击菜单“工程”“增加到工程”“新建”(英文版的操作路径
22、为“Project”“Add To Project”“new”),在出现的对话框中选择“C+ Source File”,在文件名文本框中输入文件名:Hello,VC6将使用文件名Hello.cpp的文件来保存所输入的源程序,如下图:,然后单击“确定”(OK),进入源程序编辑窗口,在光标闪烁的位置即可用键盘输入自己的程序代码:,#include int main( ) printf(“nWellcome to !n“); return 0; ,如下图:,6、下面我们开始编译、链接和运行程序首先单击菜单“文件” “保存全部”(“FileSave All”)来保存一下工程,然后单击菜单“组建”“编
23、译”(“Build”“Compile”),此时将对程序进行编译。若编译中发现错误(error)或警告(warning),将在Output窗口中显示出它们所在的行以及具体的出错或警告信息,可以通过这些信息的提示来纠正程序中的错误或警告。当没有错误与警告出现时,Output窗口所显示的最后一行应该是:“Hello.obj-0 error(s), 0warning(s)”,如下图:,编译通过后,单击菜单“组建”“组建”(“Build”“Build”)来进行链接生成可执行程序。链接成功后,Output窗口所显示的最后一行应该是:“test.exe-0 error(s), 0 warning(s)”,如下图:,最后就可以运行我们所编制的程序了,单击“组建”(“Build”)菜单下的那个感叹号!,或者按组合键Ctrl+F5也可以,VC6将运行已经编好的程序,执行后将出现一个类似于DOS窗口的界面,如下图:,这样我们就在VC6环境下完成了一个简单C语言程序的编写和调试!,五、程序设计的过程,问题分析 设计算法 编写程序 对源程序进行编辑、编译和连接 运行程序,分析结果 编写程序文档,