1、程序设计基础(C语言)上东北大学高级语言程序设计课程组程序设计基础(C语言)文件 程序设计基础(C语言)31.文件概念n什么是文件?文件是存储在外部介质上(介质:磁盘和磁带等外存储器)的数据或信息的集合n例如程序文件中保存着源程序数据文件中保存着数据声音文件中保存着声音数据n磁盘上的每个文件都有唯一的名字,进行标识,依据文件名找到相应的文件n为什么要使用文件文件的改动不能引起程序的改动,即程序与数据分离不同的程序可以访问同一数据文件中的数据,即数据共享能够长期保存程序运行的中间数据或结果数据程序设计基础(C语言)41.文件概念nC语言实现文件操作通过操作系统完成对文件的输入输出操作通过由C语言
2、的编译系统提供的一套用于文件操作的库函数,也称为“标准输入输出库”n文件的特点文件是一个有序的数据序列n保存的所有数据有着严格的排列次序(类似于数组)n要访问文件中的数据,必须按照它们的排列顺序,依次进行访问程序设计基础(C语言)51.文件概念n文件的分类数据的组织形式nASCII码文件ASCII码文件是将要存储的数据采用ASCII码的形式进行存储 数据按顺序组成一个一个的字符序列 每一个字符用一个ASCII码来表示,占用1个字节 ASCII码形式的文件在文本编辑器下可以直接阅读保存在内存中的所有数据在存入文件的时候都要先转换为等价的字符形式当要从文件中读取数据时,在将字符串转换为浮点数例如:
3、123.45(浮点数)将123.45转换为字符串“123.45”再存放程序设计基础(C语言)61.文件概念n文件的分类数据的组织形式n二进制文件将数据按其在内存中的存储方式(二进制方式)原样输出到文件中存放的 内存中的数据存入磁盘的时候不需要进行数据转换 磁盘上保存的数据采用语言规定的与内存数据一致的表示形式进行存储例如:123.45存放字二进制文件中将会占用4个字节(浮点数)程序设计基础(C语言)71.文件概念n文件的分类数据的组织形式n区别ASCII码文件较为直观、可读性好 方便人们的阅读和理解 可以直接在Windows下的记事本等工具直接观察 占用存储空间较多而且在数据输入输出时必须进行
4、二进制代码和ASCII码之间的转换二进制文件存储空间的利用效率高 输入输出时不需要进行转换,因而速度较快,可以节省磁盘空间和转换时间 二进制文件不能直接识别内存中的表示形式,不方便人们的阅读和理解,可读性差程序设计基础(C语言)81.文件概念n文件的分类文件的处理方式n数据写入文件或从文件中读出数据的过程 计算机内存计算机内存程程序序数数据据区区出入文件缓冲区出入文件缓冲区输出文件缓冲区输出文件缓冲区外存外存文件文件写文件写文件输出输出输入输入读文件读文件程序设计基础(C语言)91.文件概念n文件的分类文件的处理方式 n“写文件”将保存在内存中的数据写入磁盘 首先要建立一个“输出文件缓冲区”通
5、过该缓冲区可将内存中的数据存入磁盘,以文件的形式保存n“读文件”将保存在文件中的数据装入内存 首先要建立一个“输入文件缓冲区”,将文件中的数据装入缓冲区 然后再由缓冲区存入程序可以操作的内存数据区程序设计基础(C语言)101.文件概念n文件的分类文件的处理方式 nC语言系统对缓冲区的处理方式不同产生了两种不同的文件处理方式 缓冲文件系统 对每个正在使用的文件,系统自动地在内存中为其开辟一个缓冲区非缓冲文件系统 指系统不会自动开辟缓冲区,而要由程序自行设置文件的缓冲区 n提示在ANSI C83标准中取消了非缓冲文件系统 对文本文件和二进制文件均统一采用缓冲文件系统进行处理程序设计基础(C语言)1
6、11.文件概念n文件的分类文件的处理方式 n缓冲文件的特点缓冲区是一个连接计算机内存数据与外存文件的桥梁在内存开辟一个“缓冲区”,为程序中的每一个文件使用 执行读文件的操作时,从磁盘文件将数据先读如内存“缓冲区”,装满后再从内存“缓冲区”依此读入进接收的变量 执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”写满后再写入文件 由此可见,内存“缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,操作外存的次数越少,执行速度就越快、效率就越高一般来说:文件的“缓冲区”的大小随机器而定程序设计基础(C语言)122.文件的操作n语言中文件的操作主要是由语言库函数实现了解和掌握语
7、言提供的与文件有关的操作和规定n文件的定义n文件的状态n访问文件的基本操作文件操作的函数属于语言标准输入输出库中的函数n应在程序函数的前面使用预处理命令#include“#include 程序设计基础(C语言)132.文件的操作n文件指针 每个正在使用的文件都要说明一个FILE类型的结构变量n该类型就是文件读写所需要分配的内存区域的类型n利用一个结构体类型的变量存放该结构变量用于存放文件的有关信息 文件的名字、文件的性质、文件的当前状态等FILE 类型由系统定义n它包含的成员即FILE的各个分量由操作系统自动定义在头文件stdio.h中定义n通过文件结构的数据集合进行输入输出处理文件结构在打开
8、文件时由操作系统自动建立程序设计基础(C语言)142.文件的操作n文件指针 在头文件stdio.h中定义的结构FILE typedef struct typedef struct short levelshort level;/*文件的缓冲区级别(满或空的程度)文件的缓冲区级别(满或空的程度)*/unsigned flag unsigned flag;/*文件状态标志文件状态标志*/char fd char fd;/*文件号文件号*/int int cleft;/cleft;/*缓冲区的剩余字符(剩余空间)缓冲区的剩余字符(剩余空间)*/int int mode mode;/*文件的操作模式文
9、件的操作模式*/short size short size;/*缓冲区大小缓冲区大小*/char char*bufferbuffer;/*文件缓冲区的地址(位置)文件缓冲区的地址(位置)*/char char*curpcurp;/*当前地址指针(下一个字符的位置)当前地址指针(下一个字符的位置)*/short token short token;/*有效性检查控制单元有效性检查控制单元*/FILEFILE;程序设计基础(C语言)152.文件的操作n文件声明定义文件类型之后才能用其声明若干个FILE类型的变量n存放文件的信息在程序中,凡是要对已打开文件进行操作,都要通过指向该文件结构的指针n定义
10、FILE型(文件型)的指针变量通过文件指针变量找到与它相关的文件 如果需要同时处理n个文件,一般需要说明n个指针变量使它们分别指向n个不同的文件,以实现对文件的访问我们只需要定义文件类型的指针 通过这个指针,程序与操作系统之间交流信息,使用文件程序设计基础(C语言)162.文件的操作n文件声明格式n说明FILE是文件结构的类型名,标识结构类型文件型指针是指向文件结构的指针 例如:FILE*p;/*p是一指向文件结构的指针变量*/n提示语言中标准设备文件是由系统控制的 它们由系统自动打开和关闭 用户在程序中可以直接使用,无需再进行说明语言中提供了三个标准设备文件的指针 stdin 标准输入文件(
11、键盘)stdout 标准输出文件(显示器)stderr 标准错误输出文件(显示器)FILE*文件型指针名文件型指针名;程序设计基础(C语言)172.文件的操作n文件的操作过程打开文件n建立用户程序与文件的联系n系统为文件开辟文件缓冲区操作文件n对文件的读、写、追加和定位操作读操作:从文件中读出数据写操作:向文件中写入数据其他操作关闭文件n切断文件与程序的联系,将文件缓冲区的内容写入磁盘,并释放文件缓冲区程序设计基础(C语言)182.文件的操作n打开文件操作系统分配一块内存区域n可以在这个区域上对文件进行读写操作将该文件的基本状态信息装入内存的该区域为了在后面对文件内容读写是能够找到这个内存区域
12、,需要将这个内存区域的起始指针赋值给定义的FILE类型指针变量n通过库函数fopen调用实现目的n在程序与操作系统之间建立一种关联通过打开文件,程序把所要操作文件的要求:如要打开的文件名、文件的操作方式(读/写)等通知操作系统程序设计基础(C语言)192.文件的操作n打开文件fopen函数的调用形式n说明FILE是前面介绍的文件类型fp是一个指向FILE类型的指针变量 指向被打开的文件filename文件名 所要打开的文件名称mode文件使用方式 用具有特定含义的符号表示 FILEFILE*fp fp;fp=fopenfp=fopen(char char*filenamefilename,ch
13、ar char*modemode)程序设计基础(C语言)202.文件的操作n打开文件fopen函数的功能n以mode方式打开由文件名filename指定的文件该函数的返回值为指针类型n若文件打开成功返回一个指向该文件的指针n若文件打开失败返回一个空指针NULL程序设计基础(C语言)21例:打开文件的正确方法是例:打开文件的正确方法是#include“stdio.h#include“stdio.h”FILE FILE*fpfp;fp=fopenfp=fopen(“stu.datstu.dat”,“w”w”););/*以写方式打开当前目录下的以写方式打开当前目录下的stu.datstu.dat文件
14、文件 并将返回的指向并将返回的指向stu.datstu.dat文件的文件指针文件的文件指针 赋给文件类型指针变量赋给文件类型指针变量fpfp*/ifif(fpfp=NULL=NULL)printf printf(“cannot open filen”cannot open filen”););exitexit(0 0););2.文件的操作程序设计基础(C语言)22【例】以写方式打开一个【例】以写方式打开一个readme.txtreadme.txt文件。文件。#include“stdio.h#include“stdio.h”void main void main()()FILE FILE*fpf
15、p;fp=fopenfp=fopen(“readme.txtreadme.txt”,“w”w”););ifif(fpfp=NULL=NULL)printfprintf(“file not found!”file not found!”););fclosefclose(fpfp););else else printf printf(“file opened ok!”file opened ok!”););可以在可以在fopenfopen打开文件时打开文件时检查函数的返回值是否检查函数的返回值是否为为NULLNULL以确定文件是否以确定文件是否真正打开,若文件打开真正打开,若文件打开失败,还使用读
16、写函数失败,还使用读写函数对文件进行读写操作将对文件进行读写操作将会出现错误。会出现错误。2.文件的操作程序设计基础(C语言)23也可以写成下面这种方式:也可以写成下面这种方式:#include“stdio.h#include“stdio.h”void main void main()()FILE FILE*fpfp;fp=fopenfp=fopen(“readme.txtreadme.txt”,“w”w”););if if(fpfp=NULL=NULL)printf printf(“file not found!”file not found!”););exitexit(0 0););els
17、e else printf printf(“file opened ok!”file opened ok!”););exitexit(0 0)也是一个库)也是一个库函数,定义在函数,定义在“stdio.hstdio.h”中,它起的作用是:中,它起的作用是:(1 1)关闭所有文件;)关闭所有文件;(2 2)程序正常退出;)程序正常退出;(3 3)返回操作系统;)返回操作系统;(4 4)将()将(0 0)返回操作)返回操作系统。系统。一般情况下:一般情况下:exitexit(0 0)表示在程序设计者控制表示在程序设计者控制的范围内正常退出;的范围内正常退出;exitexit(!0!0)则表示程序)
18、则表示程序非正常退出。非正常退出。2.文件的操作程序设计基础(C语言)242.文件的操作n文件的关闭当对文件操作结束后,程序要通知操作系统文件使用完毕n关闭该文件意味着释放文件指针以供别的程序使用 可以避免文件中数据的丢失否则容易导致对文件的误操作 尤其是刚对文件进行写操作,如不关闭文件,可能会丢失刚刚写入的数据n关闭文件采用 C库函数fclose程序设计基础(C语言)252.文件的操作n文件的关闭fclose函数的调用形式n说明文件指针是通过fopen打开的文件fclose函数关闭fopen打开的文件fclose函数返回值 返回值为整型 正常关闭时返回为0,否则返回为非0数,表示关闭出错函数
19、的功能n关闭由文件指针指定的文件切断缓冲区与该文件的联系释放文件指针fclose(文件指针文件指针);程序设计基础(C语言)26例:以读方式打开一个文本文件例:以读方式打开一个文本文件readme.txtreadme.txt然后关闭该文件。然后关闭该文件。#include“stdio.h#include“stdio.h”void main void main()()FILE FILE*fpfp;fp=fopenfp=fopen(“readme.txtreadme.txt”,“r”r”););if if(fpfp=NULL=NULL)printfprintf(“file not found!n”
20、file not found!n”););else else printfprintf(“file opened ok!n”file opened ok!n”););fclosefclose(fpfp););printfprintf(“file closed!n”file closed!n”););2.文件的操作程序设计基础(C语言)27文件的读写是整个文件操作的核心,也是最灵活多变的部分。文件的读写是整个文件操作的核心,也是最灵活多变的部分。针对文本文件和二进制文件的不同性质进行分类操作,对文本针对文本文件和二进制文件的不同性质进行分类操作,对文本文件可按字符读写或按字符串读写;对二进制文件
21、可按成块读写或文件可按字符读写或按字符串读写;对二进制文件可按成块读写或格式化读写。各种格式化读写。各种C C语言编译系统都提供了丰富的文件读写函数,语言编译系统都提供了丰富的文件读写函数,有一些库函数事实上已成为标准。有一些库函数事实上已成为标准。读写字符读写字符 C C提供提供fgetcfgetc和和fputcfputc函数对文本文件进行字符的读写。函数对文本文件进行字符的读写。函数定义格式:函数定义格式:fgetc和和fputcfgetc函数从输入流的当前位置返回一个字函数从输入流的当前位置返回一个字符,并将文件指针指示器移到下一个字符符,并将文件指针指示器移到下一个字符处,如果已经到文
22、件尾部,函数返回处,如果已经到文件尾部,函数返回EOF,此时表示本次操作结束。此时表示本次操作结束。fputc函数完成将函数完成将字符的值写入所指定的流文件的当前位置字符的值写入所指定的流文件的当前位置处,并将文件指针后移一位。该函数的返处,并将文件指针后移一位。该函数的返回值是所写入字符的值,出错时返回回值是所写入字符的值,出错时返回EOF。2.文件的操作程序设计基础(C语言)28例:从键盘输入字符存储在磁盘文件例:从键盘输入字符存储在磁盘文件test.txttest.txt中。中。#include stdio.h#include stdio.h main()main()FILE FILE
23、*fpfp;char c;char c;fp=fopen(test.txt,w fp=fopen(test.txt,w);/);/*以写的方式打开文件以写的方式打开文件*/if(fp if(fp=NULL)=NULL)printf(File printf(File doesnt existn);doesnt existn);exit(0);exit(0);while(c=fgetchar while(c=fgetchar()!=n);()!=n);/*只要输入字符为非空格符只要输入字符为非空格符*/fputc(c fputc(c,fpfp);/);/*写入文件一个字符写入文件一个字符 */fc
24、lose(fp fclose(fp););程序设计基础(C语言)29读写字符串读写字符串 fgetsfgets()函数从文件中读取至多()函数从文件中读取至多num-1num-1个字符,并将其放入个字符,并将其放入 strstr指向的数组中。函数形式为:指向的数组中。函数形式为:char char*fgetsfgets(char char*strstr,intint num num,FILE FILE*STREAMSTREAM)fputsfputs()函数将()函数将strstr指向的字符串写入文件,操作成功时,函指向的字符串写入文件,操作成功时,函数返回值为数返回值为0 0值,失败时返回非值
25、,失败时返回非0 0值。函数形式为:值。函数形式为:int fputsint fputs(char char*strstr,FIILE FIILE*streamstream)【例】从一个文本文件中【例】从一个文本文件中test1.txt中读出字符串,再写入另一个文中读出字符串,再写入另一个文 件件test2.txt中。中。#include#include计算机及程序设计概述计算机和计算机程序程序设计基础(C语言)31计算机的基本工作原理程序设计基础(C语言)32计算机硬件和计算机软件n计算机硬件主机外部设备n计算机软件裸机要使计算机解决各种实际问题,必须有软件的支持,计算机软件着重研究如何管理
26、计算机和使用计算机的问题,没有软件支持的计算机就是一堆废铁程序设计基础(C语言)33指令与程序n指令指令就是计算机执行某种操作的命令,是硬件能理解并能执行的语言,是机器语言的一个语句,是程序员进行程序设计的最小语言单位。n指令的组成指令由操作码和操作数构成nMov 3,reg1nMov 5,reg2nAdd reg1,reg2nEnd程序设计基础(C语言)34指令与程序n程序程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的、可以连续执行并能够完成一定任务的指令序列的集合。n程序的开发描述问题(算法)程序设计语言n计算机软件程序设计基础(C语言)35程序设计语言n机器语言
27、二进制指令与计算机硬件的设计密切相关 n汇编语言汇编语言与机器语言的指令具有一一对应的关系,指令的操作码和操作数地址全部用指定的符号表示 汇编语言依然依赖于计算机系统结构,只能为特定的机器所识别,是面向机器的语言 程序设计基础(C语言)36程序设计语言n高级语言与具体的计算机指令系统无关的计算机语言n高级语言的分类面向过程的语言nC、Pascal面向对象的语言nC+、Java、.Net面向特定应用的语言nSQL程序设计基础(C语言)37为什么学习c语言?nC语言是目前实际程序设计工作中使用最广泛的语言之一它包含了程序设计需要理解和使用的基本程序机理和主要机制掌握这些机制就可以理解程序与程序设计
28、的主要问题。n目前有许多软件系统是用C编写的,或基本上是用C编写的学习程序设计的同时也能掌握一种实用的程序设计工具nC语言是一种很灵活的语言既可以在较高层次上做,也可以在较低级的层次上做n很多新型的语言都是衍生自C语言有些本身就是C语言的扩充和发展n程序设计是计算机领域的基础课程C语言适合作为计算机领域许多后续课程的教学语言程序设计基础(C语言)38授课重点n侧重学习一个具体问题的算法化的过程n学习应该掌握的基本编程技巧以及C编程的风格和艺术n讨论怎样编写出一个好的程序?简单、实用的原则程序设计基础(C语言)39本课程的组织第一部分第一部分基基 础础第二部分第二部分简单程序设计简单程序设计第三
29、部分第三部分高级程序设计高级程序设计算法概念、编程原理、编程风格、算法概念、编程原理、编程风格、基本数据类型定义、算术运算符及基本数据类型定义、算术运算符及表达式表达式顺序结构、选择结构、循环结构、顺序结构、选择结构、循环结构、数组的定义及应用、程序设计过程数组的定义及应用、程序设计过程函数、变量的存储类别、指针、结函数、变量的存储类别、指针、结构体与共用体、文件构体与共用体、文件程序设计基础(C语言)40程序设计n什么是程序设计?使用某种程序语言编写程序的过程,就是用计算机语言对所要解决的问题中的数据以及处理问题的方法和步骤所做的完整而准确的描述的过程n怎样进行程序设计?分析问题确定算法编制
30、程序调试程序程序设计基础(C语言)41程序设计n一个完整的程序数据结构、算法、编程语言和程序设计方法n对数据的描述(数据流)指定数据的类型和数据的结构n对操作的描述(控制流)指定操作的步骤,既算法n程序=数据结构+算法程序设计基础(C语言)42算法n什么是算法(Algorithm)?就是为了解决一个特定的问题而采取的确定的、有限的、按照一定次序进行的、缺一不可的执行步骤注意n为了有效地利用计算机解决实际问题,在设计算法时不仅要保证计算机执行算法的正确性,还要考虑算法的质量,选择适合于具体问题的算法程序设计基础(C语言)43算法n通常计算机算法分为两大类:数值运算算法和非数值运算算法数值运算是指
31、对问题求数值解n有确定的数学模型非数值运算是指事务处理过程n种类繁多,很难提供统一规范的算法n更多的是需要用户设计其算法的程序设计基础(C语言)44算法n例1:猴子吃桃问题。有一堆桃子不知数目,猴子第一天吃掉一半,又多吃了一个,第二天照此方法,吃掉剩下桃子的一半又多一个,天天如此,到第11天早上,猴子发现只剩一只桃子了,问这堆桃子原来有多少个?数学模型:数学模型:a ai i=2=2*(a ai+1i+1+1+1)i=9,8,7,i=9,8,7,1 1;Step1:peach1=1;i=10;Step2:peach0=2*(peach1+1););Step3:peach1=peach0;Ste
32、p4:i=i-1;Step5:若:若i=1,继续循环执行,继续循环执行Step2;Step6:输出:输出peach0的值。的值。程序设计基础(C语言)45算法n输入三个数,然后输出最大的数n算法的两个要素基本功能操作n数据运算和传输控制结构n顺序、选择和循环三种基本控制流程 算法可以写成:算法可以写成:(1)输入)输入A,B,C;(2)若)若AB,则,则A-MAX;若;若AMAX。(3)若)若CMAX,则,则C-MAX。(4)输出)输出MAX,MAX是最大数。是最大数。程序设计基础(C语言)46算法的特性n有穷性应含有有限的操作步骤,不能是无限的。有穷性指在“合理的限度之内”n唯一性每一个步骤
33、都是确定的,只有一个涵义,不可以为二义性n有零个或多个输入在执行算法时需要从外界获取必要的信息n有一个或多个输出算法执行的目的就是为了求解,“解”就是输出的信息没有输出的算法是没有意义的n正确性每一个步骤应当被有效的执行,并得到确定的结果程序设计基础(C语言)47算法的表示n流程图端点:表示程序的转向,常用端点:表示程序的转向,常用来表示程序的开始和结束。来表示程序的开始和结束。处理:操作的功能处理:操作的功能判断:单入口判断:单入口多出口,表明判断的条件多出口,表明判断的条件流线:表示程序流线:表示程序的执行方向和顺序。的执行方向和顺序。输入输入/输出:表示数据的名称、类型和用途等。输出:表
34、示数据的名称、类型和用途等。程序设计基础(C语言)48算法的表示n流程图开始开始输入输入A,B,CAB?TNMAX=AMAX=BCMAX?NTMAX=C输出输出MAX结束结束程序设计基础(C语言)49算法的表示nN-S图是适合结构化程序设计方法的图形工具N-S流程图无法表示非结构化的程序T TN N当条件满足当条件满足a1=1a1=1i=9i=9当当i=1i=1时,循环时,循环a0=2a0=2*(a1+1a1+1)a1=a0a1=a0i=i-1i=i-1输出输出a0a0程序设计基础(C语言)50算法的表示nUML面向对象的分析与设计工具适合于描述复杂系统元素之间的关系,不关注具体算法程序设计基
35、础(C语言)51程序设计基本步骤 n确定数学模型实际问题的准确描述n算法描述 解决问题的具体步骤n编写程序 将已设计好的算法表达出来 n程序测试 保证程序的正确性 程序设计基础(C语言)52结构化的程序设计方法n程序的三种基本结构 问题的提出结构化程序设计必须采用的结构n顺序结构、选择结构和循环结构被称为程序设计的三种基本结构n算法的实现过程是由一系列操作组成的,这些操作之间的执行次序就是程序的控制结构n总体结构流程都是自上而下顺序执行的。程序设计基础(C语言)53结构化的程序设计方法n程序的三种基本结构顺序结构,顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的 选择结构,表示程序的处
36、理出现了分支,它需要根据某一特定的条件选择其中的一个分支执行 循环结构,程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环 程序设计基础(C语言)54结构化的程序设计方法n结构化程序设计方法 公认的面向过程编程应遵循的基本方法和原则结构化程序设计特征n采用模块化结构自顶而下的设计方法 便于对问题的分解和模块的划分 程序由三种基本控制结构组成有限制地使用转移语句n采用结构化程序设计语言书写程序结构化程序设计语言书写程序n注意书写风格程序设计基础(C语言)55其他程序设计方法n面向对象程序设计方法结构化程序设计方法作为一种面向过程的程序设计方法,将解决问题的重点放在了描述实现过程的
37、细节上,尽量保证程序的客观性,避免人对于程序设计的干扰。面向对象方法的基本原则是尽可能地模拟现实世界中人类的思维方式,使开发软件的方法和过程尽可能地接近人类解决问题的方法和过程。n并行程序设计n基于组件的程序设计程序设计基础(C语言)56什么是C语言?n1973年由美国贝尔实验室设计发布的 目前是计算机程序设计语言的主流语种是世界上最为广泛使用的语言之一nC语言的流行归功于两个主要因素使用正确的C语言指令几乎可以完成任何任务是可移植的C编译系统的广泛采用nC语言是一种能够让软件工程师与计算机进行有效对话的介于汇编语言和高级语言之间的编程语言程序设计基础(C语言)57什么是C语言?nC语言标准1
38、978年,正式出版的The C Programming Language书中介绍的c语言,称为标准c语言1983年,美国国家标准化协会(ANSI)根据各种c语言版本对c的扩充和发展,颁布了c语言的新标准ANSI cnANSI c比标准c有了很大的扩充和发展1987年,美国国家标准化协会又颁布新标准,称为87 ANSI C1990年,国际标准化组织ISO接受了87 ANSI C作为ISO C的标准n目前功能最完善、性能最优良的新版本n目前流行的C编译系统都是以它为基础的程序设计基础(C语言)58什么是C语言?nC语言的特点适合开发系统软件结构化的程序设计语言丰富的数据类型和数据结构运算符多样化可
39、移植性好语句简洁紧凑编程风格灵活,语法限制少,使用灵活具有预处理功能面向对象程序设计的基础程序设计基础(C语言)59编写一个加法运算程序编写一个加法运算程序#include#includestdio.hstdio.hmainmain()()int int a a,b b;/*定义两个整形变量定义两个整形变量*/a=1 a=1;b=5b=5;/*给两个变量赋值给两个变量赋值*/printf printf(“%d+%d%d+%d=%dn”,a,b,a+b=%dn”,a,b,a+b);/*打印打印a a和和b b之和之和*/C C语言严格区分大、小写语言严格区分大、小写 英文字母。英文字母。C C语
40、言程序习惯上使用小写英文字语言程序习惯上使用小写英文字母母,而大写英文字母通常作为常而大写英文字母通常作为常量的宏定义和其他特殊的用途。量的宏定义和其他特殊的用途。什么是C语言?程序设计基础(C语言)60#include#includestdio.hstdio.hmainmain()()int int a a,b b;/*定义两个整形变量定义两个整形变量*/a=1 a=1;b=5b=5;/*给两个变量赋值给两个变量赋值*/printf printf(“%d+%d%d+%d=%dn”,a,b,a+b=%dn”,a,b,a+b);/*打印打印a a和和b b之和之和*/C C语言严格区分大、小写语
41、言严格区分大、小写 英文字母。英文字母。什么是C语言?C C语言程序是由一个个的语言程序是由一个个的 语句组成。语句组成。每个语句都具有规定的语法格式每个语句都具有规定的语法格式和特定的功能。和特定的功能。编写一个加法运算程序编写一个加法运算程序程序设计基础(C语言)61#include#includestdio.hstdio.hmainmain()()int int a a,b b;/*定义两个整形变量定义两个整形变量*/a=1 a=1;b=5b=5;/*给两个变量赋值给两个变量赋值*/printf printf(“%d+%d%d+%d=%dn”,a,b,a+b=%dn”,a,b,a+b);
42、/*打印打印a a和和b b之和之和*/C C语言严格区分大、小写语言严格区分大、小写 英文字母。英文字母。什么是C语言?C C语言程序是由一个个的语言程序是由一个个的 语句组成。语句组成。C C语言程序使用语言程序使用“;”作为作为 语句的终止符和分隔符。语句的终止符和分隔符。可以任意书写,即一行中可以书写多可以任意书写,即一行中可以书写多个语句,一个语句也可以占用任意多个语句,一个语句也可以占用任意多行,语句之间必须用行,语句之间必须用“;”分隔。初分隔。初学时建议在一行内书写一条语句。学时建议在一行内书写一条语句。编写一个加法运算程序编写一个加法运算程序程序设计基础(C语言)62#inc
43、lude#includestdio.hstdio.hmainmain()()int int a a,b b;/*定义两个整形变量定义两个整形变量*/a=1 a=1;b=5b=5;/*给两个变量赋值给两个变量赋值*/printf printf(“%d+%d%d+%d=%dn”,a,b,a+b=%dn”,a,b,a+b);/*打印打印a a和和b b之和之和*/C C语言严格区分大、小写语言严格区分大、小写 英文字母。英文字母。什么是C语言?C C语言程序是由一个个的语言程序是由一个个的 语句组成。语句组成。C C语言程序使用语言程序使用“;”作为作为 语句的终止符和分隔符。语句的终止符和分隔符。
44、C C语言程序中用大括号对语言程序中用大括号对 “”表示程序的结构层表示程序的结构层 次范围。次范围。一个完整的程序模块要用一对花括号括起一个完整的程序模块要用一对花括号括起来,用以表示模块的范围。为了清晰地表来,用以表示模块的范围。为了清晰地表现出程序的结构,建议使用右缩进锯齿型现出程序的结构,建议使用右缩进锯齿型程序书写格式。程序书写格式。编写一个加法运算程序编写一个加法运算程序程序设计基础(C语言)63#include#includestdio.hstdio.hmainmain()()int int a a,b b;/*定义两个整形变量定义两个整形变量*/a=1 a=1;b=5b=5;/
45、*给两个变量赋值给两个变量赋值*/printf printf(“%d+%d%d+%d=%dn”,a,b,a+b=%dn”,a,b,a+b);/*打印打印a a和和b b之和之和*/C C语言严格区分大、小写语言严格区分大、小写 英文字母。英文字母。什么是C语言?C C语言程序是由一个个的语言程序是由一个个的 语句组成。语句组成。C C语言程序使用语言程序使用“;”作为作为 语句的终止符和分隔符。语句的终止符和分隔符。C C语言程序中用大括号对语言程序中用大括号对 “”表示程序的结构层表示程序的结构层 次范围。次范围。语言程序可以使用注释。语言程序可以使用注释。注释部分的格式是:注释部分的格式是
46、:注释内容注释部分不参与注释内容注释部分不参与程序的执行,对程序的运行结果没程序的执行,对程序的运行结果没有影响,只是用来提示或助记。有影响,只是用来提示或助记。编写一个加法运算程序编写一个加法运算程序程序设计基础(C语言)64什么是C语言?C程序为函数模块结构,整个程序都是由一个或多个函数组成函数是由函数说明和函数体两部分组成一个C程序总是从main()函数开始执行被调用的函数可以是系统提供的库函数,也可以是用户根据需要自己编制设计的函数(用户自定义函数)一个C 程序可以由一个文件组成,也可以由若干个文件组成分析下面程序:分析下面程序:#includestdio.h#include main
47、 main()()int int a=1,b=5,c;a=1,b=5,c;c=add(a,b);c=add(a,b);printf(“c printf(“c=%dn”,c);=%dn”,c);int add(int int add(int x x,intint y)y)return(x+y);return(x+y);程序设计基础(C语言)65 C C程序程序源程序文件源程序文件1 1源程序文件源程序文件i i源程序文件源程序文件n n预编译命令预编译命令函数函数1 1函数函数n n函数体函数体函数首部函数首部什么是C语言?程序设计基础(C语言)66什么是C语言?n标识符每种程序语言都规定了在程
48、序里描述名字的规则n这些名字包括:变量名、常数名、数组名、函数名、文件名、类型名等,被统称为标识符C语言的标识符是满足如下条件的n只能由英文字母、数字和下划线组成n必须以英文字母或下划线开头n注意C语言对大、小写字母严格区分根据ANSI标准,只有前31个字符是有意义,但一般系统使用的标识符,其有效长度不超过8个字符 标识符不要与关键字同名程序设计基础(C语言)67什么是C语言?n关键字具有特定含义的,用作专用的标识符n语言中关键字绝大多数是由小写字母构成的字符序列注意:n这些特定的关键字不允许用户作为自定义的标识符使用例:指出合法的例:指出合法的标识符与关键字标识符与关键字 “ABA”S05
49、file.c AbcABA”S05 file.c Abc 10page printf yellow_red a&b 10page printf yellow_red a&b -113 _ACG -113 _ACG 程序设计基础(C语言)68什么是C语言?n语句语句是组成程序的基本单位n它能完成特定操作所有程序设计语言都提供了满足编写程序要求的一系列语句n有确定的形式和功能C语言中的语句程序设计基础(C语言)69C语言的开发与运行n开发一个C程序,一般过程编辑:使用一个文本编辑器将编写好的编辑:使用一个文本编辑器将编写好的C C程序输入计算机,并以程序输入计算机,并以 文本文件的形式保存文本文件
50、的形式保存C C语言源程序,其文件扩展名为语言源程序,其文件扩展名为“.C”.C”编译:使用一个编译:使用一个C C语言编译系统(如语言编译系统(如TurboCTurboC 2.0 2.0)对)对C C语言源程序语言源程序 进行语法检查和翻译,生成同名的进行语法检查和翻译,生成同名的“.OBJ”.OBJ”目标文件目标文件链接:将目标文件和系统提供的标准库函数等连接在一起,生成链接:将目标文件和系统提供的标准库函数等连接在一起,生成 一个同名的一个同名的“.EXE”.EXE”可执行文件可执行文件 执行:脱离执行:脱离C C语言编译系统,可在操作系统下键入文件名直接运行语言编译系统,可在操作系统下