1、C C语言程序设计基础语言程序设计基础2自我介绍教师姓名教师姓名 郑小静郑小静电子邮箱:电子邮箱: 办公室:办公室: 知行楼知行楼207207电话:电话: 67391747-60767391747-6073课程简介课程名称:课程名称:C C语言程序设计基础语言程序设计基础总学时总学时484832 (32 (讲授讲授)+16()+16(上机上机) )上课地点上课地点知行楼微机教室知行楼微机教室(上课当天查看知行楼一层电子大屏)(上课当天查看知行楼一层电子大屏)4考核方式课程总评分(满分课程总评分(满分100100分)分)到课率及平时表现到课率及平时表现 平时作业及上机练习平时作业及上机练习 上机
2、考试上机考试 期末卷面期末卷面 要求要求: : 所有作业必须独立完成所有作业必须独立完成 作业必须经上机调试通过作业必须经上机调试通过5资源访问课件下载网址:课件下载网址:1.1. http:/172.18.16.216http:/172.18.16.216 用户名:学号用户名:学号 密码:密码:123456123456(默认)(默认) 6教材和参考书C语言程序设计,王全民,中国铁道出版社,ISBN:978-7-113-19930-2C C语言程序设计,高等教育出版社,何钦铭、颜晖,语言程序设计,高等教育出版社,何钦铭、颜晖, 20122012C C语言程序设计实验指导,高等教育出版社,颜晖等
3、,语言程序设计实验指导,高等教育出版社,颜晖等,20122012C C程序设计(第三版),潭浩强等,清华大学出版社程序设计(第三版),潭浩强等,清华大学出版社7教学要求与学习方法教学要求教学要求培养计算思维,注重计算机解决问题的方式和方法培养计算思维,注重计算机解决问题的方式和方法掌握编程技术和基本算法掌握编程技术和基本算法具备初步的程序设计能力具备初步的程序设计能力学习方法学习方法自主学习自主学习重视上机实践重视上机实践8四位同学中有一位做了好事,不留名。表扬信来了之后,老师四位同学中有一位做了好事,不留名。表扬信来了之后,老师问是谁做了好事。问是谁做了好事。A A说:不是我说:不是我B B
4、说:是说:是C CC C说:是说:是D DD D说:他胡说。(说:他胡说。(C C胡说,不是胡说,不是D D。)。)已知只有三个人说的是真话,一个人说的是假话已知只有三个人说的是真话,一个人说的是假话9如何尽快学会程序设计1.1.读程序,越多越好读程序,越多越好2.2.模仿、改写、编写模仿、改写、编写3.3.通过不断的编程实践,逐通过不断的编程实践,逐步领会和掌握程序设计的基步领会和掌握程序设计的基本思想和方法本思想和方法10计计算机系统算机系统硬件系统硬件系统软件系统软件系统主机主机外围外围设设备备 系统软件系统软件应用软件应用软件内存储器内存储器只读存储器只读存储器随机存储器随机存储器总线
5、与接口总线与接口外存储器(硬盘、光盘等)外存储器(硬盘、光盘等)输入输入设设备(键盘、鼠标等)备(键盘、鼠标等)输出输出设设备(显示器、打印机等)备(显示器、打印机等) 操作系统(操作系统(DOS、Windows、UNIX等)等) 程序设计处理软件(程序设计处理软件(C C语言等)等)语言等)等) 数据库管理软件(数据库管理软件(Oracle、SQL Server)等)等) 服务服务程序程序CPU控制器控制器通用应用软件通用应用软件专用应用软件专用应用软件运算器运算器程序设计语言程序设计语言在计算机系统中的位置在计算机系统中的位置11程序设计语言发展历史程序设计语言发展历史机器语言汇编语言高级
6、语言面向过程面向对象CPU指令系统,由0、1序列构成的指令码组成如:10000000 加 10010000 减用助记符号描述的指令系统如 ADD A, B面向机器的语言程序设计是数据被加工的过程客观世界可以分类,对象是类的实例对象是数据和方法的封装对象间通过发送和接受消息发生联系程序设计关键是定义类,并由类派生对象12C C语言:语言:A=15+10 A=15+10 : 15: 15与与1010相加的结果放入相加的结果放入A A中中13第1章 引 言1.1 1.1 程序与程序设计语言程序与程序设计语言1.2 C1.2 C语言的发展历史和特点语言的发展历史和特点1.3 C1.3 C程序的基本结构
7、程序的基本结构1.4 C1.4 C程序的运行过程程序的运行过程14本章要点结构化程序设计有哪些基本的控制结构?结构化程序设计有哪些基本的控制结构?C C语言有哪些特点?语言有哪些特点?C C语言程序的基本框架如何?语言程序的基本框架如何?形成一个可运行的形成一个可运行的C C语言程序需要经过哪些步骤?语言程序需要经过哪些步骤?151.1.1 程序与指令指令:计算机的一个最基本的功能指令:计算机的一个最基本的功能如实现一次加法运算或实现一次大小的判别如实现一次加法运算或实现一次大小的判别程序:一系列计算机指令的有序组合程序:一系列计算机指令的有序组合16所有大学理工科所有大学理工科必修课必修课名
8、企,外企,高薪名企,外企,高薪程序员面试必考程序员面试必考绝对重要的基绝对重要的基石语言,石语言,Unix,Linux,Windows,JAVA,C+,C#均为均为C语言语言编写编写学习数据结构,学习数据结构,C#,C+,java的基石的基石写辅助程序必写辅助程序必须掌握的语言须掌握的语言学会学会C/C+,走遍全球都不走遍全球都不怕怕C语言是有史以来最为重要的编程语言语言是有史以来最为重要的编程语言1.1.2为什么要学习C语言17C/C+市场份额为什么要学为什么要学C C语言呢?语言呢? C/C+C/C+是永不过时的贵族语言,请看世界计算机的权威排行榜是永不过时的贵族语言,请看世界计算机的权威
9、排行榜181.1.3 程序设计语言的功能数据表达数据表达:表达所要处理的数据:表达所要处理的数据流程控制流程控制:表达数据处理的流程:表达数据处理的流程19数据表达 数据类型数据类型: :对某些具有共同特点的数据集合的总称对某些具有共同特点的数据集合的总称代表的数据(数据类型的定义域)代表的数据(数据类型的定义域)在这些数据上做些什么(即操作或运算)在这些数据上做些什么(即操作或运算) C C语言提供的数据类型语言提供的数据类型基本数据类型:程序设计语言事先定义好,供程序员基本数据类型:程序设计语言事先定义好,供程序员直接使用,如整型、实型(浮点型)、字符型等。直接使用,如整型、实型(浮点型)
10、、字符型等。构造类型:由程序员构造,如数组、结构、文件、指构造类型:由程序员构造,如数组、结构、文件、指针等。针等。20流程控制 任何程序都可以将模块通过任何程序都可以将模块通过3 3种基本的控制结构种基本的控制结构进行组合来实现进行组合来实现顺序结构顺序结构循环结构循环结构分支结构分支结构21流程控制 语句级控制:语句级控制:3 3种基本的控制结构种基本的控制结构顺序顺序控制结构控制结构:自然顺序执行自然顺序执行分支分支控制结构控制结构(选择结构):根据不同的条件来选择所选择结构):根据不同的条件来选择所要执行的模块要执行的模块循环循环控制结构控制结构:重复执行某个模块重复执行某个模块 单位
11、级控制:函数的定义与调用单位级控制:函数的定义与调用处理复杂问题时处理复杂问题时, , 将程序分为若干个相对独立的子程序将程序分为若干个相对独立的子程序(函数)(函数) 22程序设计语言的语法(1 1)标识符标识符: : C C语言的标识符规定语言的标识符规定由字母、数字以及下划线由字母、数字以及下划线组成组成,且,且第一个字符必须是字母或下划线第一个字符必须是字母或下划线。(2 2)保留字保留字( (关键字关键字): ): 它们是它们是C C语言规定的、赋予它们以特语言规定的、赋予它们以特定含义、有专门用途的标识符。定含义、有专门用途的标识符。(3 3)常量常量: : 常量是有数据类型的,如
12、,常量是有数据类型的,如,123123、12.3412.34(4 4)运算符运算符。代表对各种数据类型实际数据对象的运算。代表对各种数据类型实际数据对象的运算。如,如,+ +(加)、(加)、- -(减)、(减)、* *(乘)、(乘)、/ /(除)、(除)、% %(求余)、(求余)、 (大于)(大于)231.2 C语言的发展历史与特点 C C语言发展过程语言发展过程产生背景产生背景产生过程产生过程 时间时间:19721973:19721973 地点地点: :美国贝尔实验室美国贝尔实验室 目的目的:UNIX:UNIX操作系统操作系统 设计人设计人: Ken.Thompson: Ken.Thomps
13、on和和Dennis.M.RitchieDennis.M.RitchieC C标准标准 标准标准C: K&RC: K&R合著合著The C Programming LanguageThe C Programming Language ANSI C: 1983ANSI C: 1983年年 87 ANSI C: 198787 ANSI C: 1987年年 19901990年国际标准的年国际标准的ANSI CANSI C24C语言的特点 uC C语言是一种结构化语言语言是一种结构化语言uC C语言语句简洁、紧凑,使用方便、灵活语言语句简洁、紧凑,使用方便、灵活3232个关键字个关键字,9 9种控制语
14、句种控制语句,程序书写形式自由。,程序书写形式自由。u3434种运算符种运算符,数据类型丰富数据类型丰富uC C语言程序易于移植语言程序易于移植将与硬件有关的因素从语言主体中分离出来,通过库函数或其他实将与硬件有关的因素从语言主体中分离出来,通过库函数或其他实用程序实现它们。用程序实现它们。 u目标代码质量高,运行效率高目标代码质量高,运行效率高u数据类型检查不严格,表达式出现二义性,不具备数据越数据类型检查不严格,表达式出现二义性,不具备数据越界自动检查功能,运算符的优先级与结合性对初学者难于界自动检查功能,运算符的优先级与结合性对初学者难于掌握掌握25 (auto break case c
15、har constcontinue default do double elseenum extern float for gotoif int long register returnshort signed sizeof static structswitch typedef unsigned union voidvolatile while32个关键字26if( )elsefor( )while( )dowhile( )continuebreakswitchgotoreturn 9种控制语句27算术运算算术运算符:符:+ - + - * * / % + - / % + -关系运算符:关系
16、运算符: = != = !=逻辑运算符:!逻辑运算符:! & |& |位运算符位运算符 : | & | &赋值运算符:赋值运算符:= = 及其扩展及其扩展条件运算符:条件运算符:?:?:逗号运算符:逗号运算符:, ,指针运算符:指针运算符:* * & &求字节数求字节数 :sizeofsizeof强制类型转换:强制类型转换:( (类型)类型)分量运算符:分量运算符:. -. -下标运算符:下标运算符:其它其它 :( ) -( ) - 34种运算符28C C数数据据类类型型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型void定义类型定义类型typedef数值类型数值类型字符类型字
17、符类型char枚举类型枚举类型enum整整 型型浮点型浮点型单精度型单精度型float双精度型双精度型double短整型短整型short长整型长整型long整型整型int数组数组结构体结构体struct共用体共用体union C语言数据类型29例1:输出文本行 Hello world!#include /*预处理命令预处理命令*/main( ) /*C语言程序的标志,主函数语言程序的标志,主函数*/ printf(“Hello world! n”);30#include main( ) int w,h,area; /* 定义变量定义变量 */ w=5; h=3; /* 赋值,将赋值号后面的数据
18、送到其赋值,将赋值号后面的数据送到其 前面的变量中前面的变量中 */ area=w*h; printf(“area=%d”,area); /* 格式化输出函数格式化输出函数 */例2:计算长方形面积31例3:通过键盘输入两个整数,输出其中较大的整数 # include int maxValue(int, int); /*函数声明函数声明*/main( ) int x, y, z; printf(Enter 2 integers:); scanf(%d%d, &x, &y); z = maxValue(x,y); printf(The larger value is %d.,z); int ma
19、xValue(int x, int y) int max; if (xy) max=x; else max=y; return max; 32C程序的基本结构由一个一个函数组成的,每一个函数实现一个特定的功能;有且仅有一个名为main的主函数;运行时,系统将率先自动调用主函数;33书写格式的特点习惯用小写英文字母习惯用小写英文字母一个说明或一个语句占一行一个说明或一个语句占一行每个语句以分号结束,可一句多行,多语句一行每个语句以分号结束,可一句多行,多语句一行用用/ /* * */ /作注释作注释除变量名、函数名、关键字外,可在程序的任何地除变量名、函数名、关键字外,可在程序的任何地方加入适量
20、的空格和空行方加入适量的空格和空行低一层次的语句或说明可比高一层次的语句或说明低一层次的语句或说明可比高一层次的语句或说明缩进若干个后书写缩进若干个后书写34实现问题求解的过程分析问题 确定思路,明确方法、步骤; 编辑 生成程序的源文件,C语言源文件的后缀为 .c / .cpp;编译连接 编译生成二进制代码表示的目标程序(.obj),与编程环境提供的库函数进行连接(Link)形成可执行的程序(.exe)。运行调试 在程序中查找错误并修改错误的过程35开始开始结果结果语法语法错误错误源程序源程序.c / .cpp目标程序目标程序.obj可执行程序可执行程序.exe编辑编辑编译编译连接连接运行运行连接连接错误错误运行运行错误错误C语言程序的调试、运行步骤