1、C语言程序设计,欢迎同学们带着兴趣和热情学习 C 语言 本人对学习计算机语言的观点: 说是学习,还不如说是习惯,授课教师:容善华 Tel:13972569419 或6392866 Email:jiaoxue,参考书 谭浩强著.C程序设计(第三版以上).北京:清华大学出版社 王士元著.C高级实用程序设计 清华大学出版社 课时安排 授课 :40学时 上机 :16学时,教学目的与任务: 理解程序的概念,掌握C程序的基本结构、字符集、标识符与关键字;熟悉C程序的开发环境;熟悉和掌握C程序从编辑到运行的完整过程;理解算法的概念;了解C语言的特点和发展历史; 教学重点: C程序的基本结构、字符集、标识符
2、与关键字;C程序的开发环境;C程 序从编辑到运行的完整过程; 教学难点: C程序的基本结构、VC 6.0 集成开发环境的使用,本书的教学要求,掌握C语言的基础知识,包括数据类型、 输入输出的基本操作以及简单程序设计; 掌握顺序、选择、循环三大结构的编程; 掌握函数的定义与调用; 掌握数组、指针的应用; 掌握结构体、链表、文件的操作; 初步的程序设计能力,C语言程序设计,学习方法 自主学习 重视上机实践 上机安排 按学号有序上机 交作业的方法: 登录 ftp:/192.168.9.211 科技学院学生作业上交目录计算机语言目录下的容善华子目录,每一次 作业按要求班级、分次数上交。,如何尽快学会用
3、C语言进行程序设计,了解程序设计语言(C语言) 模仿、改写、编写 通过不断的编程实践,逐步领会和掌握程序设计的基本思想和方法。,第1章 C概述及简单C程序,1.1 简单的C程序,1.3 C语言程序的上机调试步骤,1.2 C语言常用符号,1.4 Visual C+开发工具,1.5 C语言概况,结束放映,第 1 章,第1章 C程序设计入门 C 语言是一种国内外广泛流行的、已经得到普遍应用的程序设计语言,它既可以用来编写系统软件,又可以用来编写应用软件。 本章主要介绍 C语言的发展过程、特点、结构、运行过程和算法描述以及程序设计的基本概念。,简单的C程序 程序设计语言的发展历程 计算机是由人来指挥的
4、,人们为了用计算机来解决实际问题,一般总是要编制程序。所谓程序,是指用某种程序设计语言为工具编制出来的指令序列,它表达了人们解决问题的思路,用于指挥计算机进行一系列操作,从而实现预定的功能。程序设计语言(也称为计算机语言)就是用户用来编写程序的语言,它是人与计算机之间交换信息的工具。 程序设计语言就其发展过程和特点,一般可以分为机器语言、汇编语言和高级语言。,程序设计语言的发展历程,(1)机器语言(Machine Language) 计算机硬件系统只能执行由0和1二进制代码构成的操作指 令。每一台计算机都有一套指令系统,指令系统中的每一条指 令称为机器指令。每一种类的计算机都有它特有的机器指令
5、系 统,这样的机器指令集合称为机器语言。 用机器语言编写的程序,称为机器语言程序。计算机可以 直接识别并执行机器语言程序。 例如,“101110001110100000000011”的功能仅仅表示将1000 送入寄存器AX中。,(2)汇编语言(Assemble Language) 为了方便记忆和编写程序,人们用一些符号和简单的语法来表示二进制形式的机器指令。 汇编语言编写的程序称为汇编语言源程序。这种程序计算机是不能直接识别和执行的,必须通过一个专门的程序(汇编程序)将这些符号翻译成二进制数的机器语言才能执行。这种“汇编程序”就是汇编语言的翻译程序。 例如,用符号ADD表示加法,用符号SUB表
6、示减法,用机器语言表示的“101110001110100000000011”,用汇编语言表示为“MOV AX,1000”。 与机器语言相比,汇编语言仅仅改进了指令表示方法,比机器语言易记、易读、易写。汇编语言和机器语言都是面向机器的程序设计语言,一般称为“低级语言”。,程序设计语言的发展历程,汇编语言程序的执行过程,图1-1 汇编语言程序的执行过程,程序设计语言的发展历程,(3)高级语言(High Level Language) 高级语言使用接近人类习惯的自然语言来编写计算机程序,如FORTRAN语言、C语言等。 例如,下列C语言程序段: if(xy) max=x; else max=y; 表
7、示“如果x大于y,则max=x,否则max=y”。对于稍稍有点英语基础的人都很容易理解语句的含义,也便于记忆。,程序设计语言的发展历程,(3)高级语言(High Level Language) 由于高级语言与具体的计算机指令系统无关,因而高级语言是一种面向操作者(用户)的语言。用高级语言编写的程序能在不同类型的计算机上运行,通用性好,这大大地促进了计算机应用的普及。 用高级语言编写的程序称为高级语言源程序。计算机不能直接识别和执行这种程序,必须经过翻译,才能将其转换成机器语言程序执行。 翻译的方法有两种,解释方式和编译方式。,程序设计语言的发展历程,解释方式,编译方式,图1-2高级语言解释执行
8、方式,图1-3 高级语言编译执行方式,程序设计语言的发展历程,C语言的发展历程,随着计算机应用的迅速发展,各种功能强大使用方便的高级语言相继出现,高级语言使用方便,可移植性好。但高级语言一般难以实现低级语言能够直接操作计算机硬件的特点(如对内存地址的操作等)。在这样的情况下,人们希望有一种语言既有高级语言使用方便的优点,又有低级语言能够直接操作计算机硬件的优点,因此,C语言就运用而产生了。,C语言的发展历程,1963年英国的剑桥大学在ALGOL 60的基础上推出了CPL语言,但是CPL语言难以实现。1967年英国剑桥大学的学者对CPL语言作了简化和改进,推出了BCPL语言。1970年美国贝尔实
9、验室的学者以BCPL语言为基础,又作了进一步的简化,设计出了很简单且接近硬件的B语言。1972年由美国的学者在B语言的基础上设计出了C语言。 1977年D.M.Ritchie发表了不依赖于具体机器的C语言编译文本可移植C语言编译程序,使C语言移植到其他机器时所需要的工作大大简化了。1978年以后,C语言先后移植到大、中、小、微型计算机上。C语言很快风靡全世界,成为世界上应用最广泛的程序设计语言。,C语言的主要特点,C 语言发展十分迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。许多著名的系统软件,如 UNIX 操作系统就是由C语言编写的。另外,C语言还成功地用于数值计算、文字处理、
10、图形处理、数据库、计算机网络和多媒体等。归纳起来 C 语言具有7个特点。,C语言的主要特点,(1) 语言简洁,结构紧凑,使用方便、灵活 C语言一种编译型语言,一共只有32个关键字和9种控制语句,且源程序书写格式自由。 (2) 具有丰富的运算符和数据结构 C语言把括号、赋值、数据类型转换等都作为运算符处理,从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其他高级语言中难以描述的运算,并具有现代程序设计语言的各种数据结构,尤其是指针类型数据,使用十分灵活和多样化。具有大量的标准函数库。 (3) C语言是结构化语言 C语言是一种结构化程序设计语言,适合于大型程序的模块化
11、设计。,(4) C语言允许直接访问物理地址 C语言能够直接对内存地址进行访问操作,可以实现汇编语言的大部分功能。所以,它既有高级语言的功能,又兼有汇编语言的大部分功能。有时,也称它为“中级语言”。 (5) 生成的目标代码效率高 C语言仅比汇编程序生成的目标代码执行效率低1020%。这在高级语言中已是出类拔萃的了。 (6) C语言适用范围大,可移植性好 C 语言还有一个突出的优点就是基本上不做修改就能用于各种型号的计算机和各种操作系统。 7.与其它的计算机语言有良好的接口。,C语言的主要特点,1.1.4 C语言程序的基本组成,C语言程序的基本组成,程序运行结果: hello ,world!,例1
12、.1 要求在命令提示符窗口中显示“hello, world!”这一行文字。 /* This is the first C program */ #include /*程序需要使用C语言提供的标准函数库,预处理指令*/ void main() /*主函数,程序入口,有且仅有一个*/ /* 之间为函数体*/ printf(hello ,world!n);/*调用库函数printf显示字符串*/ ,C语言的程序语句组成结构,Return,C语言程序(也称为源程序)的一条语句可以书写成一行,也可以写成多行,书写格式自由。不可忘记的是:每个语句结束标记是分号。 C语言程序工作过程就是每条语句执行的过程。
13、 在组成C语言程序中必有一个且只能有一个的函数main函数,它是C语言程序运行时第一个被调用的函数,使整个C语言程序的入口点,通过main可以直接或间接调用其它函数。通过例子说明: #include void prst() printf(“这是第一个C语言程序”); void main() clrscr(); prst(); ,头文件,自定义函数,主函数,调用系统函数,调用系统函数,调用自定义函数,语句组成说明: 1、程序代码中介于/*与*/之间的字符序列称为注释, 它可以是一行文字或者连续的多行文字。使用注释能增强程序的可阅读性,注释可以在程序中自由地使用,但在程序编译时被自动忽略。 2、C
14、语言是函数式的语言,函数是组成C程序的基本单位,每个C程序不论大与小,都是由一个(或者多个)函数组成的。 3、函数是一个单独的程序模块,完成指定的功能。一个 C 程序不论由多少个文件组成,有且只有一个main()函数,通常称为主函数,而且任何一个C程序的执行都是从main()函数开始的。 主函数main( )的一般格式: 函数返回值的类型 main( 形式参数表 ) /* 函数首部 */ 语句; /* 函数体 */ ,语句组成说明: 4、C语言的函数由函数名和函数体构成。 函数名和一对圆括号构成函数头(main()函数),在函数头的前面还有函数值的类型说明(如 void)。 用一对花括号括起来
15、的部分称为函数体,函数体是函数运行的主体部分,函数体如果是空的,花括号也不能省略。 子函数在C语言程序中的位置可以使随意的,在主函数前或在主函数后均可以。如:,#include void main() clrscr(); prst(); void prst() printf(“这是第一个C语言程序”); ,Return,#include void main() printf(“this is a test”); ; printf(“this is a computer”); ,这是一条空语句,语句用分号结束,语句用分号结束,5、C语言的语句由表达式加分号组成。 C语言有多种多样的表达式,不论多
16、么复杂,但要构成语句,必须在语句后面加分号。 如果某一行只有分号而没有任何表达式则表明该语句行是一个空语句,空语句没有执行动作上的要求,只是为占有空位置 。,语句组成说明:,书写C程序时应注意的几点: (1)在C程序中,虽然一行可以写多条语句,而且一条语句可以分写在多行上,但是为了代码的清晰起见,一般一条语句单独占一行; (2)用一对花括号与括起来的部分,通常表示了程序的某一层次结构。一般与该结构语句的第一个字母对齐,并单独占一行; (3)源程序代码应该采用缩格的方式书写,在阅读时显得程序结构层次会更清晰,增加了程序的可读性; (4)标识符、关键字之间必须至少加一个空格以示间隔。若已有明显的间
17、隔符,虽然也可不再加空格来间隔,但也可以加一个空格来增加清晰度。,C语言常用符号,在C语言中使用的符号分为6类: 标识符、关键字、常量、字符串字面值、运算符、分隔符。 其中,空格符、制表符、换行符、换页符和注释等统称为空白符,空白符在程序中仅起间隔作用,编译程序对它们忽略不计。因此在程序中使用空白符与否,对程序的编译不发生影响,但在程序中适当的地方使用空白符将增加程序的清晰性和可读性。,C语言的关键字,在标准C中规定了32个符号,它们具有特定含义,必须用小写字母表示,不能另作他用,称为关键字。这32个关键字分别是: auto,break,case,char,const,continue,def
18、ault,do,double,else,enum,extern,float,for,goto,if,int,long,register,return,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile,while 请注意,不同版本的C语言编译系统对关键字会作适当的增减。,标识符,C 语言规定:标识符是以字母或者下划线开头,后面跟若干个字母、数字或者下划线。在标识符的组成中,英文字母大写与小写字母所组成的标识符是不同的。 C程序中的标识符常用于标识区分不同的变量名、函数名、符号常量名和类型名。
19、 例如,下述的标识符是合法的: a,x,x3,BOOK_1,sum5 而下述的标识符则是非法的: 3s(以数字开头),s*T(出现非法字符*),-3x(以减号开头),bowy-1(出现非法字符-) 需要强调的是,C语言中系统规定的标识符,例如main、scanf、printf等,在语法规定上允许用户改变它们原来的含义,但这样容易引起混淆,通常不把它们挪作它用。,在使用标识符时须注意以下几点: (1)标准C不限制标识符的长度,但它受到各种版本的C语言编译系统限制,同时也受到具体机器的限制。例如:Microsoft C规定标识符前8位有效。当两个标识符的前8个字符相同时,则被认为是同一个标识符;而
20、Turbo C则允许使用包含32个字符的标识符; (2)标识符虽然可由程序员随意定义,但标识符是用于标识某个数据量的符号,因此,在命名时应尽量做到“见名知义”,便于阅读理解; (3)书写程序时,在关键字与标识符之间必须要有一个以上的空格符作为间隔,否则将会出现语法错误。 例如,把int a;写成inta;时,C编译器会把inta当成一个标识符处理,其结果必然出错。,其它符号,C语言还规定了其他一些符号,譬如各种运算符(如算术运算中的+、-、*、/和%等),或者分隔符,这些符号的使用将在以后的章节中作介绍。,C语言程序的上机调试步骤,C语言是一种编译型的高级程序设计语言。 当一个用于描述解决问题
21、算法的C 语言源程序文件(扩展名为.c)编写完成之后,必须先用C语言编译程序(Compiler)将其编译,形成中间目标程序文件(扩展名为.obj),然后再用连接程序(Linker)将该目标程序文件与相关的库文件(扩展名为.lib),以及其他有关的中间目标程序文件连接起来,最终形成一个可以在操作系统平台上运行的、二进制形式的可执行程序文件(扩展名为.exe)。,一个完整的C语言源程序代码,最终转换为能够运行的可执行程序文件,一般需要经过以下几个步骤(详见P9):,Visual C+开发工具,有关C语言程序的编译系统有许多种,早期非常流行的编译系统有 Turbo C,它是美国 Borland 公司
22、生产的一套DOS平台上的C语言编译系统。随着面向对象技术的飞速发展,面向对象技术的C+、C#陆续面世,在Windows 程序和大型软件开发中得到广泛的使用。C+是C语言的超集,用C写的程序也能够在C+中运行。 本书采用Microsoft Visual C+6.0作为C程序开发工具,书中所有的例题源程序均在Visual C+ 6.0中调试运行。,Visual C+ 6.0 的安装,将Microsoft Visual Studio 6.0 安装盘插入光驱,运行Setup执行文件,根据屏幕提示进行安装。,VC+6.0安装完成后,可以选择安装 MSDN(Microsoft Developer Netw
23、ork,简称SDN),在MSDN中含有许多Visual Studio 6.0的帮助信息,对学习编程帮助很大,不过它需要单独的安装光盘。,上机运行VC+6.0的过程: 任务栏“开始”按钮“所有程序”“Microsoft Visual Studio 6.0” “Microsoft Visual Studio C+ 6.0”,选“Microsoft Visual Studio C+ 6.0” 。,Visual C+ 6.0 的IDE操作界面,VC+6.0的运行界面如下图所示。,Visual C+ 6.0 的基本操作,C语言程序的主要上机过程包括编辑、编译、连接、调试和运行这几个连续的过程,本教程主要
24、介绍如何在VC+6.0环境下运行一个C语言程序,这与在Turbo C(或者在Win-TC)环境下运行C程序的操作有所不同。 关于如何在Turbo C环境下运行C语言程序的内容,在与本书配套的C语言程序设计实验教程中有详细介绍,请大家参考。,在VC+6.0下运行C程序的一般过程: 1.启动VC+6.0; 2.新建一个用来保存源程序文件的文件夹(譬如D:mydir); 3.选择 FileNew 命令,在弹出的New对话框中选择Files选项卡下的C/C+ Source File选项,输入源文件名first.c及文件夹名D:mydir;,4.在正文编辑窗口中输入C语言程序源代码。 在输入源代码时,要
25、求采用缩格形式(或者称为嵌入式)来输入源程序,注意上下行程序之前的层次关系,增加程序的可读性。另外,在编辑过程中所涉及的操作,与在Microsoft Word中编辑文档的过程相类似; 5. 选择 File Save 命令保存源程序文件,当源程序代码较多时,在编辑时更要注意要多次保存; 6.选择 Build Compile first.c 命令来编译源程序。如果出现编译错误,则返回编辑窗口对程序进行针对性的修改,然后再重新编译,直至编译通过; 7.完成编译后,选择 Build Build first.exe 命令来连接生成可执行文件。本例中连接生成的执行文件被保存在D:mydirdebug文件夹
26、下;,8.连接成功之后,选择 Build Execute first.exe 命令来运行该文件。程序的运行结果会显示在另外一个命令提示符窗口(或者称为MS-DOS窗口)中。 当然,对源程序文件进行编译、连接与运行这三个步骤,除了上面介绍的菜单命令(如第6、7、8步)之外,还可以采用以下的快捷键方式,或者选择工具按钮方式,下面也一并进行介绍: 快捷键方式 编译( Compile )的快捷命令:Ctrl+F7 连接( Build )的快捷命令:F7 运行( Execute )的快捷命令:Ctrl+F5, 利用编译工具栏(Build MiniBar) 默认情况下,Build MiniBar会显示在V
27、C+ 6.0的界面上,将该工具栏打开显示(或者关闭显示)的命令为: Tool菜单 Customize命令 在Toolbars 选项卡中选择(或者取消选择)Build MiniBar 复选框 9.若源程序在编译过程中经过了修改,应该再次选择 File Save 命令来保存源程序文件; 10.选择File Close WorkSpace 命令关闭工作区,结束对当前源程序的所有操作。,C语言的三种结构,Return,1 顺序结构 2 判断选择结构 3 循环结构,1 C语言的顺序结构,C语言的顺序结构是一种理想的程序结构,它完全按书写语句从上到下顺序执行,即执行过程与书写过程完全一致。 #includ
28、e #include void main() int x=0; float y; y=sin(x*3.14159/180); printf(“%fn”,y); x=x+10; y=sin(x*3.14159/180); printf(“%fn”,y); x=x+10; y=sin(x*3.14159/180); printf(“%fn”,y); ,Return,2 C语言的判断选择结构,Return,C语言的判断选择结构是当程序执行到某条语句时,要进行判断从两条程序执行线路中选择一条线路执行。,1.5.3 C语言的循环结构,C语言循环构成一个重复结构,该结构是将一条语句或多条语句重复执行若干遍
29、。,Return,小结,掌握C语言的结构函数结构 C语言程序执行时从main函数开始执行 C语言程序中的每条语句必须用分号结束 使用C语言编写程序从文本文件到可执行文件要经过编辑、编译和链接。 算法是解决问题的模型 算法具有以下特点: 1.确定性 2.可行性 3.有穷性 4.输入 5.输出 算法表示的方法有: 自然语言表示法、传统流程图表示法、伪代码表示法、N-S流程图表示法、PAD图表示法。,语言编程风格,良好的编程风格不仅便于阅读理解源代码,而且可以减少拼写错误,减少调试复杂度。一般遵循如下规则: 1.一个说明或一个语句尽量占一行。 2.一般与该结构语句的第一个字母对齐,并单独占一行。 3.低一层次的语句或说明可比高一层次的语句或说明缩进一个Tab键位。以便看起来更加清晰,增加程序的可读性。,学习建议: (1)学习中千万不要只注意“语言” 而忽视“设计”; (2)多阅读一些典型的好程序; (3)通过程序的调试,既可以发现错误、排除错误,还可以进一步理解程序的行为,也是一次再学习的过程; (4)充分利用网络资源进行学习; 中国程序员大本营 微软MSDN 谷歌搜索引擎 百度搜索引擎,第1章内容结束,