《(精品)第1章C语言概述.ppt》由会员分享,可在线阅读,更多相关《(精品)第1章C语言概述.ppt(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 1C语言程序设计语言程序设计普措才仁普措才仁 Email: Email:Tel:13893420740Tel:13893420740教师简介:普措才仁教师简介:普措才仁 西北民族大学数学与西北民族大学数学与计算机科学学院算机科学学院 教教授,授,软件工程件工程硕士生士生导师.1990年年6月月毕业于青海于青海师范大学数学系,理学学士。范大学数学系,理学学士。2000年年 12 月月毕业于西于西北工北工业大学大学软件学院,件学院,软件工程件工程硕士。近几年来士。近几年来发表相关表相关论文二十多篇。主持国家民委科研文二十多篇。主持国家民委科研项目目1个并且被部个并且被部级科技成果科技成果鉴定通
2、定通过。主持校。主持校级科研科研项目目2个并且被校个并且被校级科技成果科技成果鉴定通定通过。目前在科。目前在科研的有教育部人文社会科学研究一般研的有教育部人文社会科学研究一般项目一目一项。作作为主主编出版教材出版教材1部,目前我学院本科生部,目前我学院本科生选用教用教材。参材。参编专著著2部,参部,参编翻翻译计算机算机类教材教材1部部 3 3主要内容lC语言概述l算法l数据类型,运算符与表达式l顺序程序设计l选择结构程序设计(if,switch)l循环控制(while,do-while,for,break和continue)l数组(一维,二维,字符数组)l函数l指针(重点和难点)l结构体l文件
3、4 4目目 录录C语言出言出现的的历史背景史背景C语言的特点言的特点简单的的C程序介程序介绍C程序的上机步程序的上机步骤5 5高高级级程序程序设计语设计语言的概念言的概念 高高级程序程序设计语言又言又简称称为高高级语言,是相言,是相对低低级语言而言的。言而言的。低低级语言言是是计算机能直接算机能直接识别的的语言言(机器机器语言言)或符号化的机器或符号化的机器语言言(汇编语言言),高高级语言言是一种通用的是一种通用的,面向用面向用户的各的各类需要需要,与特定的机器相分离与特定的机器相分离,并遵循一定的并遵循一定的严格格规定与形式的定与形式的语言言,其其语言格式言格式接近于自然接近于自然语言或接近
4、言或接近于数学函数形式于数学函数形式。1.1 C语言出现的历史背景语言出现的历史背景机器语言机器语言汇编语言汇编语言高级语言高级语言6 6常用的高级语言 BASIC、QUICK BASIC、FORTRAN、COBOL、PASCAL、C、LISP、PROLOG、ADA、PL/1、VISUAL BASIC、C+、VISUAL C+过程式语言和非过程化语言过程式语言和非过程化语言 面向解题过程,告诉计算机“怎么做”,这种语言称为过程式语言,又称之为结构化语言。面向处理对象,告诉计算机“做什么”而不必指出“怎么做”,计算机就能完成所要求的任务.这种语言称为非过程式语言.BASIC,QUICK BASI
5、C,FORTRAN,PASCAL,C等均为过程式语言,SQL查询语言,SMALLTALK等为非过程式语言7 7解释型与编译型语言解释型与编译型语言 计算机不能直接识别高级语言,要让计算机能执行高级语言,需要将高级语言翻译成等价的机器语言,这种翻译有两种形式:(1)边翻译边执行;(2)全部翻译完成后才执行。前一种方式称为解释方式,后一种称为编译方式.C,FORTRAN,PASCAL等为编译型语言BASIC,java等为解释型语言QUICK BASIC 有解释和编译两种方式.用高级语言写成的程序称为源程序(或源代码)翻译成的机器语言称为目标程序(目标代码)8 8CPLBCPL B CCPL(Com
6、bined programming Language),1963,英国英国剑桥;规模比模比较大,大,难以以实现BCPL(Basic Combined programming),),1967,英,英国国剑桥;Matin Richards,简化的化的CPLB,1970,美国,美国贝尔(Ken Thompson 对CPL的的进一一步步简化)化)C,1972,美国,美国贝尔(D.Ritchie)1973年,年,K.Thompson和和D.Ritchie合作,将合作,将UNIX(汇编)重写一遍,从此奠定了操作系)重写一遍,从此奠定了操作系统的基的基础。1978年以后,年以后,C语言先后移植到大、中、小、
7、微机言先后移植到大、中、小、微机上。上。C语言的发展历史语言的发展历史9 9C语言在语言体系中的地位语言在语言体系中的地位 真真实会会话语言言 人工智能会人工智能会话语言言命令命令语言言面向面向问题的的语言言C语言言面向机器面向机器 的的语言言汇编语言言机器机器语言言硬件硬件1010标准准C 以以1978年年发表的表的UNIX第第7版中的版中的C编译程序程序为基基础,Brian W.Kernighan和和Dennis M.Ritchie(合称合称K&R)合著了影响深合著了影响深远的名著的名著The C Programming Language,这本本书中介中介绍的的C语言成言成为后来广泛使用的
8、后来广泛使用的C语言版本的基言版本的基础ANSI C 1983年,美国国家年,美国国家标准化准化协会会(ANSI)根据根据C语言言问世以来各种版本世以来各种版本对C的的发展和展和扩充,制定了充,制定了新的新的标准,称准,称为ANSI C11111.2 C语言的特点语言的特点语言言简捷、捷、紧凑,使用方便、灵活凑,使用方便、灵活运算符丰富运算符丰富数据数据结构丰富构丰富具有具有结构化的控制构化的控制语句句语法限制不太法限制不太严格,程序格,程序设计自由度大自由度大能能实现较底底层的功能的功能生成目生成目标代代码质量高,程序量高,程序执行效率高行效率高程序可移植性好程序可移植性好12121 1、语
9、言言简单、紧凑、使用方便、灵活。凑、使用方便、灵活。C C语言一共只有言一共只有3232个个C C语言的关言的关键词,9 9种控制种控制语句,大小写区句,大小写区别;2 2、运算符丰富、运算符丰富 共有共有3434种运算符,表达式种运算符,表达式类型多型多样化,使用化,使用灵活;灵活;C C把括号、把括号、赋值、强制制类型型转换等都作等都作为运算符运算符处理,从而使理,从而使C C的运算的运算类型极其丰富,表达式型极其丰富,表达式类型多型多样化。化。3 3、数据、数据结构丰富,具有构丰富,具有现代化的代化的语言的各种言的各种结构;构;整型、整型、实型、字符型、数型、字符型、数组类型、指型、指针
10、类型、型、结构体构体类型、型、共用体共用体类型等。型等。4 4、具有、具有结构化的控制构化的控制语句,用函数作句,用函数作为程序模程序模块。以。以实现程程序的模序的模块化,是化,是结构化的理想构化的理想语言,符合言,符合现代代编程程风格的格的要求;要求;13135 5、语法限制不太法限制不太严格,程序格,程序设计自由度大。自由度大。这对C C语言的初言的初始者增加了学始者增加了学习上的上的难度。例如,度。例如,对数数组下下标越界在越界在编译时不作不作检查;对变量的量的类型使用比型使用比较灵活,如整型量与字灵活,如整型量与字符型数据及符型数据及逻辑型数据可通用。例:型数据可通用。例:39+39+
11、A A 等价于:等价于:39+656 6、C C语言允言允许直接直接访问物理地址,能物理地址,能进行位(行位(bitbit)操作,可)操作,可以直接以直接对硬件硬件进行操作,能行操作,能实现汇编语言的大部分功能;言的大部分功能;7 7、生成的目生成的目标代代码质量高,一般只比量高,一般只比汇编语言生成的目言生成的目标代代码效率低效率低10%20%10%20%;8 8、用用C C语言言编写的程序可移植性好(与写的程序可移植性好(与汇编语言相比)。言相比)。14141.3 简单的简单的C程序介绍程序介绍例例1.11.1 最最简单的的C C程序,程序,这也是世界上第一个也是世界上第一个C C程序。源
12、程程序。源程序中只有一个函数序中只有一个函数 主函数主函数。/*源程序文件名源程序文件名 qh101.c */*输出一个字符串常量于屏幕上*/#include main()printf(“Hello,world!n”);头文件说明头文件说明主函数主函数C的注释的注释函函数数体体运行结果 Hello,World!1515语言程序结构语言程序结构语言程序的总体结构 语言源程序,由函数言源程序,由函数组成。成。可以可以只有一个只有一个main()函数函数(又称主函数)(又称主函数)组成。成。也可以由也可以由一个一个main()函数和若干个其它函数函数和若干个其它函数(自定(自定义函数或函数或库函数)
13、函数)结合而成的。合而成的。主函数的名称是固定的,只能是主函数的名称是固定的,只能是main()()。程序的程序的执行行总是从主函数开始和是从主函数开始和结束。束。1616源文件结构源文件结构1 1 一个源文件(模一个源文件(模块)由一个或几个函数)由一个或几个函数组成,一个源文件成,一个源文件是一个是一个编译单位位,即以源文件,即以源文件为编译单位。位。2 2 一个一个C C程序由一个或多个源文件程序由一个或多个源文件组成,并将有关函数的定成,并将有关函数的定义、宏、全局宏、全局变量等放到一个源文件中,而其它的代量等放到一个源文件中,而其它的代码放在几放在几个文件中,以提高个文件中,以提高调
14、试效率。效率。3 C3 C程序从程序从mainmain函数开始,最后在函数开始,最后在mainmain函数中函数中结束,束,mainmain是是系系统定定义的。的。4 4 所有的函数都是平行的,即在定所有的函数都是平行的,即在定义函数函数时是相互独立的。是相互独立的。函数不能嵌套定函数不能嵌套定义,但可相互,但可相互调用,要遵循用,要遵循调用用规则,也,也可自己可自己调用自己(用自己(递归调用),其它函数不能用),其它函数不能调用用mainmain函函数。数。1717例例 1.2main()/*求两数之和求两数之和*/int a,b,sum;/*这是定是定义变量量*/a=123;b=456;/
15、*以下以下3行行为C语句句*/sum=a+b;printf(sum is%dn,sum);变量声明变量声明变量赋值变量赋值格式字符串格式字符串输出变量输出变量1818例例 1.3main()/*主函数主函数*/int a,b,c;/*声明部分,定声明部分,定义变量量*/scanf(%d,%d,&a,&b);/*输入入变量量a和和b的的值*/c=max(a,b);/*调用用max函数,将得到的函数,将得到的值赋给c*/printf(max=%d,c);/*输出出c的的值*/int max(int x,int y)/*定定义max函数函数,函数函数值为int,形参形参x,y为int*/int z;
16、/*max函数中的声明部分,定函数中的声明部分,定义变量量z为整型整型*/if(xy)z=x;else z=y;return(z);/*将将z的的值返回,通返回,通过max带回回调用用处*/1919 通通过以上几个例子,可以看到以上几个例子,可以看到:(1)C程序是由函数构成的。程序是由函数构成的。程序中的全部工作都是由各个函数分程序中的全部工作都是由各个函数分别完成的。完成的。编写写C程序程序就是就是编写一个个函数。写一个个函数。ANSI C建建议的的标准准库函数中包括函数中包括100多个函数,多个函数,Turbo C和和MS C 4.0提供提供300多个多个库函数。函数。C的的这种特点使得
17、容易种特点使得容易实现程序的模程序的模块化。化。2020(2)一个函数由两部分一个函数由两部分组成成:函数的首部,即函数的第一行。包括函数名、函数函数的首部,即函数的第一行。包括函数名、函数类型、型、函数属性、函数参数函数属性、函数参数(形参形参)名、参数名、参数类型。型。例如,例例如,例1.3中的中的max函数的首部函数的首部为int max (int x,int y)函数函数类型型 函数名函数名 函数参数函数参数类型型 函数参数名函数参数名 函数参数函数参数类型型 函数参数函数参数名名 一个函数名后面必一个函数名后面必须跟一跟一对圆括弧,括弧,函数参数可以没有,函数参数可以没有,如如mai
18、n()。2121 函数体,即函数首部下面的大括弧函数体,即函数首部下面的大括弧内的部分。如内的部分。如果一个函数内有多个大括弧,果一个函数内有多个大括弧,则最外最外层的一的一对 为函数体函数体的范的范围。函数体一般包括函数体一般包括:声明部分声明部分:在:在这部分中定部分中定义所用到的所用到的变量,如例量,如例1.3中中main函数中的函数中的“int a,b,c;”。执行部分行部分:由若干个:由若干个语句句组成。当然,在某些情况下也可成。当然,在某些情况下也可以没有声明部分以没有声明部分(例如,例例如,例1.1)。甚至可以既无声明部分,。甚至可以既无声明部分,也无也无执行部分。如行部分。如:
19、dump()它是一个空函数,什么也不干,但它是一个空函数,什么也不干,但这是合法的。是合法的。2222(3)一个一个C程序程序总是从是从main函数开始函数开始执行的,而不行的,而不论main函函数在整个程序中的位置如何数在整个程序中的位置如何(4)C程序程序书写格式自由,一行内可以写几个写格式自由,一行内可以写几个语句,句,一个一个语句可以分写在多行上。句可以分写在多行上。C程序没有行号,也不像程序没有行号,也不像FORTRAN或或COBOL那那样严格格规定定书写格式写格式(语句必句必须从某一列开始从某一列开始书写写)。2323(5)每个每个语句和数据定句和数据定义的最后必的最后必须有一个分
20、号。分号是有一个分号。分号是C语句的必要句的必要组成部分。例如成部分。例如:c=a+b;(6)C语言本身没有言本身没有输入入输出出语句。句。输入和入和输出的操作是由出的操作是由库函数函数scanf和和printf等函数来完成的。等函数来完成的。(7)可以用可以用/*/对C程序中的任何部分作注程序中的任何部分作注释。一个好的、。一个好的、有使用价有使用价值的源程序都的源程序都应当加上必要的注当加上必要的注释,以增加程序,以增加程序的可的可读性性2424运行一个语言程序的一般过程:(1)启)启动TC,进入入TC集成集成环境。境。(2)编辑(或修改)源程序,并存(或修改)源程序,并存盘。(3)编译。
21、如如果果编译成成功功,则可可进行行下下一一步步操操作作;否否则,返返回回(2)修修改改源源程程序序,再再重重新新编译,直直至至编译成功。成功。(4)连接接。如如果果连接接成成功功,则可可进行行下下一一步步操操作作;否否则,根根据据系系统的的错误提提示示,进行行相相应修修改改,再再重新重新连接,直至接,直至连接成功。接成功。1.4 C程序的上机步骤2525(5)运运行行。通通过观察察程程序序运运行行结果果,验证程程序序的的正正确确性性。如如果果出出现逻辑错误,则必必须返返回回(2)修修改改源源程程序序,再再重重新新编译、连接接和和运运行行,直直至至程程序序正正确。确。(6)退出)退出TC集成集成
22、环境,境,结束本次程序运行。束本次程序运行。2626编辑、运行一个语言程序的一般过程编辑、运行一个语言程序的一般过程2727用用Turbo C 运行运行C程序的步骤程序的步骤Turbo C是在微机上广泛使用的是在微机上广泛使用的编译程序。它具有方便、直程序。它具有方便、直观、易用的界面和丰富的、易用的界面和丰富的库函数。它向用函数。它向用户提供一个集成提供一个集成环境,把程序的境,把程序的编辑、编译、连接和运行等操作全部集中接和运行等操作全部集中在一个界面上在一个界面上进行,使用十分方便。行,使用十分方便。为了能使用了能使用Turbo C,必,必须先将先将Turbo C编译程序装入磁程序装入磁
23、盘的的某一目某一目录下,例如放在下,例如放在C盘根目根目录下一下一级TC子目子目录下。下。2828 调用调用 Turbo C程序。程序。启动Turbo C有多种方法:有多种方法:1)进入)进入DOS窗体,窗体,进入进入TC的安装目录:的安装目录:tc 2)利用快捷方式启动)利用快捷方式启动TC;3)利用文件关联方式,打开)利用文件关联方式,打开.C源文件时启动源文件时启动TC;2929TC窗口组成窗口组成菜菜单包括下面包括下面8个菜个菜单项:File Edit Run Compile Project Option Debug break/watchEdit(编辑)窗口和)窗口和Message(
24、消息)窗口(消息)窗口Line Line 1 1 Col Col 1 1:显示示光光标所所在在的的行行号号和和列列号号,即即光光标位置。位置。InsertInsert:表表示示编辑状状态处于于“插插入入”。当当处于于“改改写写”状状态时,此,此处为空白。空白。d:d:NONAME.CNONAME.C:显示示当当前前正正在在编辑的的文文件件名名。显示示为“NONAME.CNONAME.C”时,表示用,表示用户尚未尚未给文件命名。文件命名。7 7个功能个功能键的的说明明 F1-HelpF1-Help,F5-Zoom,F6-Switch,F5-Zoom,F6-Switch,F7-TraceF7-Tr
25、ace,F8-Step,F8-Step,F9-Make,F10-ManuF9-Make,F10-Manu3030Turbo C Turbo C 的退出的退出退出Turbo C有多种方法:有多种方法:1 1)菜菜单法法:在在编辑窗窗口口中中,File File|QuitQuit(先先选择FileFile主主项,再,再选择并并执行行QuitQuit子子项)2 2)快快捷捷键法法:Alt+Alt+“X X”(先先按按下下AltAlt键并并保保持持,再再按字母按字母键,然后同,然后同时放开)。放开)。3 3)在)在编辑窗口中,通窗口中,通过主窗体的主窗体的“关关闭”按按钮3131命令菜单的使用1)按按
26、下下功功能能键F10,激激活活主主菜菜单。如如果果主主菜菜单已已经被激活,被激活,则直接直接转下一步。下一步。2)用用左左、右右方方向向键移移动光光带,定定位位于于需需要要的的主主项上上,然后再按回然后再按回车键,打开其子菜,打开其子菜单(纵向排列)。向排列)。3)用用上上、下下方方向向键移移动光光带,定定位位于于需需要要的的子子项上上,回回车即即可可。执行行完完选定定的的功功能能后后,系系统自自动关关闭菜菜单。注意:菜菜单激激活活后后,又又不不使使用用,可可再再按按F10Esc键关关闭,返返回原来状回原来状态。3232编辑并保存一个语言源程序编辑并保存一个语言源程序激活主菜激活主菜单,选择并
27、并执行行File|Load项(键键:F3)。)。在在“Load File Name”窗口,窗口,输入源程序文件名。入源程序文件名。文件名的文件名的输入有两种方法:直接入有两种方法:直接输入和入和选择输入。入。1)直接)直接输入:入:输入文件名(包括路径名和入文件名(包括路径名和盘符。符。)如果是已如果是已经存在的文件,系存在的文件,系统就在就在编辑窗口窗口显示示该文件的内容,可供文件的内容,可供编辑、修改。、修改。如果是新文件,如果是新文件,则给出一个空白出一个空白编辑窗口,可供窗口,可供输入新的源程序。入新的源程序。33332 2)选择文件(文件(仅适用于已适用于已经存在的源程序文件)存在的
28、源程序文件)空空回回车,打打开开当当前前目目录下下、后后缀为.的的所所有有文文件的文件名窗口。件的文件名窗口。用用上上、下下、左左、右右方方向向键,将将光光带定定位位于于所所需需的的文件名上。文件名上。按回按回车键。3434常用编辑操作常用编辑操作存存盘操作:操作:在在编辑源源程程序序过程程中中,随随时都都可可以以按按F2键(或或File|Save),将当前将当前编辑的文件存的文件存盘,然后,然后继续编辑。块操作:操作:1)块首定首定义KB和和块尾的定尾的定义KK。2)块复制复制KC和和块移移动KV。(先移先移动光光标到指定点到指定点)3)块定定义的取消的取消KH。光光标移移动与与删除操作除操
29、作:1)删除一整行除一整行Y。2)快速移)快速移动光光标到行首按到行首按home键。3)快速移)快速移动光光标到行末按到行末按end键。翻屏:翻屏:下一下一页PageDown,返回上一,返回上一页PageUp3535在线帮助在在线帮助屏帮助屏Alt+F1Alt+F1(无(无论在在线帮助是否被激活)帮助是否被激活)关于在关于在线帮助:帮助:在在任任何何窗窗口口(或或状状态)下下,按按F1F1键激激活活活活动窗窗口口(或或状状态)的的在在线帮帮助助,关关闭在在线帮帮助助、返返回回原原窗口(或状窗口(或状态)EscEsc。3636在线帮助返返回回在在线帮帮助助索索引引F1F1:激激活活在在线帮帮助助
30、后后,再再按按F1F1,则返返回回在在线帮帮助助索索引引,以以便便查询其其它它类别在在线帮助信息。帮助信息。查询库函函数数的的在在线帮帮助助信信息息F1F1:将将光光标移移到到需需要要查询函函数数名名的的首首字字符符上上,然然后后键入入F1F1,即即可可获得得该库函数的在函数的在线帮助信息。帮助信息。注:为简化化描描述述,用用“”代代表表“CtrlCtrl”键。FnFn就就是是Ctrl+FnCtrl+Fn,下同。,下同。3737单个源程序文件编译、连接单个源程序文件编译、连接编译的目的:的目的:高高级语言的源程序不能被言的源程序不能被计算机直接算机直接识别。要通。要通过编译程程序的序的编译成二
31、成二进制目制目标程序(程序(.obj 文件),再文件),再连接接库文件文件 生成可生成可执行的二行的二进制目制目标程序(程序(.exe 文件)。文件)。编译的方法:的方法:选择并并执行行Compile|Make EXE File项(快捷(快捷键:F9),),则TC将自将自动完成完成对当前正在当前正在编辑的源程序文件的的源程序文件的编译、连接,接,并生成可并生成可执行文件。行文件。如果源程序中无主函数如果源程序中无主函数则只能生成二只能生成二进制目制目标程序(程序(.obj 文件),即无主函数文件),即无主函数时仍然可以仍然可以编译。3838如如 果果 源源 程程 序序 有有 语 法法 错 误,
32、系系 统 将将 在在 屏屏 幕幕 中中 央央 的的“Compiling”(编译)窗口底端提示)窗口底端提示:“Error:Press any key”(错误:按任意:按任意键)。)。此此时,按按空空格格键,屏屏幕幕下下端端的的“Message”(消消息息)窗窗口口被被激激活活,显示示出出错(或或警警告告)信信息息,光光带停停在在第第一一条条消消息息上上。这时“Edit”(编辑)窗窗口口中中也也有有一一条条光光带,它它总是是停在停在编译错误在源代在源代码中的相中的相应位置。位置。注意:当当用用上上、下下键移移动消消息息窗窗口口中中的的光光带时,编辑窗窗口中的光口中的光带也跟随移也跟随移动3939
33、运行与查看结果运行与查看结果选择并并执行行Run|Run项(快捷(快捷键:F9),程序运行),程序运行结束后,束后,仍返回到仍返回到编辑窗口。窗口。当你当你认为自己的源程序不会有自己的源程序不会有编译、连接接错误时,也可直接,也可直接运行(即跳运行(即跳过对源程序的源程序的编译、连接步接步骤)。)。这时,TC将将一次完成从一次完成从编译、连接到运行的全接到运行的全过程。程。这种方法不是太种方法不是太好,只是比好,只是比较简便。便。查看运行看运行结果果:选择并并执行行Run|User Screen项(快捷(快捷键:Alt+F5)查看运看运行行结果,完果,完毕后,按任一后,按任一键返回返回编辑窗口窗口4040课后作业课后作业1.参照例参照例题,编写一个程序写一个程序,输出以下信息:出以下信息:*Very good!*2.编写一个写一个C程序,程序,输入入a,b,c 3个个值,输出其中最大出其中最大者。者。3.上机运行上机运行3个例个例题4.上机运行上机运行1,2题4141结束结束The EndThe End
限制150内