第1章C语言概述教学目标:通过本讲帮助学生了解C语言的特点、掌握C程序的基本结构和熟悉C程序的编辑、编译、调试和运行过程。了解:C语言的特点。重点:C程序的基本结构;C程序的编辑、编译、调试和运行过程、C语言的上机环境。教学方法:理论教学与实践教学相结合。第1章C语言概述第一章C语言概述1.1C语言的发展简史与特色1.2关键字和语句形式1.3C源程序的结构特点1.4C程序的实现1.5程序的三种基本结构与流程图第1章C语言概述冯.诺依曼结构:计算机运算器控制器存储器主机:I/O设备:键盘、显示器等中央处理器CPUCPU指令系统,由0、1序列构成的指令码组成如:10000000加10010000减1.1C语言的发展简史与特色1.1.1C语言发展简史面向机器的语言亦称低级语言用助记符号描述的指令系统如ADDA,B描述数据处理的过程客观世界可以分类,对象是类的实例对象是数据和方法的封装对象间通过发送和接受消息发生联系机器语言汇编语言高级语言面向过程面向对象(Pascal、C)(C++、VC++、C#、Java等)–程序设计语言的发展第1章C语言概述第1章C语言概述在C语言诞生以前,系统软件主要是用汇编语言编写的。由于汇编语言程序依赖于计算机硬件,其可读性和可移植性都很差;但一般的高级语言又难以实现对计算机硬件的直接操作(这正是汇编语言的优势),于是人们盼望有一种兼有汇编语言和高级语言特性的新语言。C语言是从B语言的基础上发展而来的。–C语言产生背景第1章C语言概述–C语言发展过程•C的产生时间:1972~1973地点:美国贝尔实验室目的:UNIX操作系统设计人:Ken.Thompson和Dennis.M.Ritchie•C标准标准C:K&R合著《TheCProgrammingLanguage》ANSIC:1983年87ANSIC:1987年1990年国际标准的ANSIC本课程以ANSIC新标准来介绍。第1章C语言概述1.1.2C语言的特点1.它的语言简洁、紧凑,使用方便、灵活。2.C语言运算丰富,将括号、赋值、强制类型转换、取地址等都以运算实现。3.运算符多样。44个运算符4.函数是程序的主体。函数是程序的基本单位,是C语言的灵魂。5.C语言语法限制不太严格,程序书写自由度大,对程序员要求不高。第1章C语言概述第1章C语言概述6.C语言允许直接访问物理地址。能进行位运算,能实现汇编语言的大部分功能,能直接对硬件进行操作,它是高级语言中的低级语言。7.生成目标代码质量高。8.可移植性好。第1章C语言概述第1章C语言概述1.2C语言的关键字和语句形式1.关键字关键字又称为保留字,由系统提供,用以表示C特定的语法成份,是构成C语言的语法基础。常见关键字有32个。①程序控制语句关键字(12个)ifelsefordowhilecontinueswitchbreakcasedefaultgotoreturn②类型定义说明关键字(12个)intcharfloatdoublelongshortsignedunsignedenumstructunionvoid③存储类别定义说明关键字(4个)autoregisterstaticextern第1章C语言概述第1章C语言概述④常量、变量定义和自定义类型关键字(3个)constvolatiletypedef⑤字节测试关键字(1个)sizeof第1章C语言概述[注意]1)关键字有特定的语法含义,用户不允许重新定义。2)系统库函数的函数名不是关键字。第1章C语言概述2.语句形式C程序的执行部分是由语句组成的。程序的功能也是由执行语句实现的。第1章C语言概述C语句可分为以下五类:(1)控制语句;(2)函数调用语句;(3)表达式语句;(4)复合语句;(5)空语句。第1章C语言概述①控制语句if(~)~else~/*选择分支语句*/switch(~)case…;/*多分支语句*/for(~;~;~)~/*for循环语句*/while(~)~/*while循环语句*/do~;while(~);/*dowhile循环语句*/continue;/*无条件进行下一次循环语句*/break;/*无条件结束当前层循环或跳出switch语句*/goto~/*无条件跳转到程序指定处语句*/return~/*函数调用结束返回语句*/说明:其中“~”代表一个或多个表达式或语句,括号内为表达式,括号外为语句。第1章C语言概述②函数调用语句函数名(实参表达式表);③表达式语句表达式;④空语句;或{}/*不做任何操作*/⑤复合语句(分程序){~}※说明:C程序中可以使用注释注释方法是:/*说明文字*/注意:注释不是C语句,用来说明程序段的功能,注释的部分不参加程序编译和运行第1章C语言概述第1章C语言概述解析:①main是主函数的函数名,表示这是一个主函数。“{}”括起来的部分是main函数的函数体。②以“;”结尾的是一条C语句。printf函数是一个由系统定义的标准函数,可在程序中直接调用。printf函数的功能是把要输出的内容送到显示器去显示。/*Hello.c:ThefirstCProgram*/main(){printf(“Hello,World!”);}1.3C源程序的结构特点先看以下几个程序。从这些例子中了解到组成一个C源程序的基本部分和书写格式。【例1.1】在屏幕上显示一行信息①②注释主函数语句输出:Hello,World!第1章C语言概述【例1.2】给定半径,计算圆的面积。/*area.c*/#include“stdio.h”/*文件包含命令*/#definePI3.1415926/*宏定义命令*/main()/*主函数*/{floatarea(floatx);/*函数引用说明*/floatr,s;/*变量定义*/printf(“Inputradius:”);/*输出提示信息*/scanf(%f,&r);/*键盘输入半径值*/s=area(r);/*函数调用语句*/printf(Radius:%f\tArea:%f\n,r,s);/*显示输出结果*/}第1章C语言概述floatarea(floatx)/*计算面积函数*/{floaty;y=PI*x*x;returny;/*返回计算结果*/}必有且仅有一个主函数可以有用户自定义函数函数说明语句函数说明语句函数执行语句函数执行语句C的预处理命令第1章C语言概述〖运行结果〗:Inputradius:10↙Radius:10.000000Area:314.159271带下划线的信息表示用户从键盘输入的信息,“↙”表示回车。第1章C语言概述第1章C语言概述【例1.3】输入若干行字符,输出最长的字符串。将该程序分两个C程序文件和一个工程文件完成。/*C源程序文件FILE1.C中的内容为*/#includestdio.h#defineMAXLINE80intmax;charline[MAXLINE];charlongest[MAXLINE];externintgetline(void);voidcopy(void);main()/*主函数main()*/{intlen;max=0;第1章C语言概述while((len=getline())0)if(lenmax){max=len;copy();}if(max0)puts(longest);}voidcopy(void)/*复制最长串函数*/{inti;for(i=0;(longest[i]=line[i])!=0;i++);}第1章C语言概述/*C源程序文件FILE2.C中的内容为*/#defineMAXLINE80#includestdio.hexternintmax;/*全局变量引用说明,max在FILE1.C中定义*/intgetline(void)/*获取输入串函数*/{intc,i;externcharline[];for(i=0;iMAXLINE-1&&(c=getchar())!=’\n’;i++)line[i]=c;line[i]=’\0’;returni;/*返回串长值*/}第1章C语言概述/*工程文件F12.PRJ的内容为*/file1.cfile2.c该工程文件名要加在“Project”菜单中的“Projectname”菜单项上。〖运行结果〗:China↙Japan↙English↙American↙Italian↙German↙Korean↙American/*最长串被输出*/第1章C语言概述从上面的程序可以大概看出以下几点:①一个程序可以由多个文件构成,每个文件可以由多个函数构成。每个函数完成一个特定的功能,它由一组语句构成。函数是C程序的基本单位,是C语言的灵魂;语句是C程序的最小的语言单位。②一个C程序中有且仅有一个名为main()主函数,它是程序执行的入口。③程序中用到的各种各样的变量要先定义后使用,有时还要加上变量引用说明和函数声明。注意:函数体中的变量定义语句,必须在所有可执行语句之前。第1章C语言概述④所有语句都必须以分号“;”结束,函数的最后一个语句也不例外。例如:下面程序中变量定义语句“intmax;”的位置是非法的:main(){intx,y;/*变量定义语句:定义2个整型变量x、y*/x=3;/*可执行的赋值语句:将3赋值给变量x*/y=6;/*可执行的赋值语句:将6赋值给变量y*/intmax;/*非法!变量定义语句:出现在可执行的赋值语句“x=3;”和“y=6;”之后,*/max=xy?x:y;printf(“max=%d\n”,max);}第1章C语言概述⑤由“#”开头的行都是C语言中的编译预处理命令,末尾无分号。它们不是真正的语句。⑥C语句书写格式自由,既允许1行内写几条语句,也允许1条语句分写在几行上。⑦允许使用注释。C语言的注释格式为:/*……*/注意:“/*”和“*/”必须成对使用,且“/”和“*”、以及“*”和“/”之间不能有空格,否则都出错。注释的位置:可以单占1行;可以跟在语句的后面;;如果1行写不下,可另起1行继续写。注释中允许使用汉字。在非中文操作系统下,看到的是一串乱码,但不影响程序运行。注释不参加编译,不会被执行第1章C语言概述第1章C语言概述⑧C语言标识符区分大小写字母,系统关键字都是小写字母构成,用户起的变量名、函数名等标识符一般也用小写字母,宏名通常用大写字母表示,以区别于变量名。标识标的起名字符集是:大小写字母、数字、下划线;规则为:不能以数字开头(字母或下划线开头后接字母、数字、下划线),名称要尽量有一定意义,做到“见名知义”。第1章C语言概述1.4C程序的实现1.4.1实现步骤C程序在计算机上的实现一般要经过编辑、编译、连接、运行四个步骤,如图1.7所示。图1.7.obj.c.exe第1章C语言概述1.编辑是将C语言的源程序输入计算机,并以文本文件的形式存储在磁盘。编辑是建立C源程序文件的过程,源程序文件的扩展名为.c。编辑可以用任何文字处理软件完成,一般用编译器本身集成的编辑器进行编辑。第1章C语言概述2.C语言是以编译方式实现的高级语言,C程序的实现必须经过编译程序对源程序进行编译,生成目标代码程序。目标代码程序的扩展名为.obj。编译前先进行预处理。编译过程主要进行词法分析和语法分析。编译有错时,在屏幕上列出错误的位置和种类。此时,要返回到编辑步骤修改源程序,修改后,再进行编译。第1章C语言概述3.编译形成的目标代码程序机器可以识别,但还不能直接执行,还需要将目标代码程序与库文件进行连接处理,连接工作由连接程序完成。经过连接,生成可执行文件。可执行文件的扩展名为.exe。连接有错同样需返回到编辑步骤修改源程序,修改后,再进行编译、连接。第1章C语言概述4.一个C源程序经过编译、连接后生成了可执行文件。运行可执行文件,可通过编译系统下的运行功能,也可像执行DOS的外部命令一样,输入执行文件名运行。程序运行后,一般在屏幕上显示运行结果。根据运行结果可以判断程序是否还有算法方面的错误。编译时产生的错误是语法错误,运行时出现的错误是