1、为什么要学习为什么要学习C语言?语言?(1)计算机相关专业:)计算机相关专业:其他高级语言的基础,与其他语言进行混合编程其他高级语言的基础,与其他语言进行混合编程(2)非计算机理工专业:)非计算机理工专业:乔布斯说过:每个人都应该学习编程,因为它教会乔布斯说过:每个人都应该学习编程,因为它教会你如何思考。你如何思考。C语言编程语言编程-教会编程思路、方法、设计模式教会编程思路、方法、设计模式IOS、Android底层开发底层开发-C语言语言小学生的编程小学生的编程编程语言受欢迎程度排行编程语言受欢迎程度排行20192019年年2 2月月TOP10TOP10语言语言C C语言的设计者语言的设计者
2、两个骨灰级游戏玩家两个骨灰级游戏玩家无心插柳柳成荫无心插柳柳成荫 19691969年,年,kenken梦想能遨游宇宙,梦想能遨游宇宙,设计了一款模拟在太阳系航行设计了一款模拟在太阳系航行 的电子游戏的电子游戏Space TravelSpace Travel,1971 1971年年dmrdmr加入加入 游戏在游戏在PDP-7PDP-7小型机上开发,因小型机上开发,因 为这台机器免费,但免费的机为这台机器免费,但免费的机 器没有操作系统器没有操作系统 玩游戏玩游戏前,先给前,先给PDP-7PDP-7做个操作做个操作系统,命名为系统,命名为UNIXUNIX无心插柳柳成荫无心插柳柳成荫 汇编编写汇编编
3、写UNIXUNIX太慢,而一般的太慢,而一般的高级语言难以实现汇编语言的高级语言难以实现汇编语言的某些功能某些功能 DmrDmr改造改造B B语言,设计了一种新语言,设计了一种新的高级语言,命名的高级语言,命名C C语言,把语言,把UNIXUNIX的的90%90%以上代码用以上代码用C C改写改写 19831983年,因为年,因为UNIXUNIX和和C C语言的巨语言的巨大成功,大成功,kenken和和dmrdmr共同获得当共同获得当年度计算机界最高奖年度计算机界最高奖图灵奖图灵奖C C语言适合做什么?语言适合做什么?选语言的标准选语言的标准适合的才是最好的!适合的才是最好的!(1 1)编写系
4、统软件(例如)编写系统软件(例如OSOS)和工具软件)和工具软件(2 2)运行效率要求较高的系统)运行效率要求较高的系统设备驱动程序,嵌入式系统(机器人、手机和设备驱动程序,嵌入式系统(机器人、手机和智能家电)智能家电)高性能、实时系统高性能、实时系统我能学好我能学好C语言吗?语言吗?C C语言枯燥不好学语言枯燥不好学 数学和英语不好能学好数学和英语不好能学好C C语言吗?语言吗?只要有小学四年级的水平和基础就能学好只要有小学四年级的水平和基础就能学好C C语言!语言!啊哈磊(全国信息学奥林匹克竞赛啊哈磊(全国信息学奥林匹克竞赛NOINOI金牌教练)金牌教练)C语言程序设计语言程序设计 课程目
5、标课程目标 熟记熟记C C语言的基本概念语言的基本概念 熟悉熟悉Visual C+Visual C+的上机操作环境的上机操作环境 会读、会编、会调试会读、会编、会调试C C程序程序 课程要求课程要求 多上机实践多上机实践 考核形式考核形式 机考(机考(50%50%)+平时(平时(50%50%)硬件系统硬件系统(Hardware)软件系统软件系统(Software)内存储器内存储器随机存储器随机存储器(RAMRAM)只读存储器(只读存储器(ROMROM)输入设备输入设备:键盘键盘 鼠标鼠标 扫描仪扫描仪输出设备:输出设备:显示器显示器 打印机打印机 绘图仪绘图仪中央处理器中央处理器(CPU)运算
6、器运算器控制器控制器系统软件系统软件应用软件应用软件高速缓存(高速缓存(CacheCache)主机主机外设外设外存:外存:软盘软盘 硬盘硬盘 光盘光盘 优盘优盘 网络设备:网络设备:网络适配器网络适配器 调制解调器调制解调器 集线器集线器操作系统:操作系统:Windows UNIX Linux DOS语言处理程序:语言处理程序:C Java VB VF 实用程序:实用程序:诊断程序诊断程序 排错程序等排错程序等通用应用软件:通用应用软件:办公软件包等办公软件包等专用应用软件:专用应用软件:各企业单位的管理信息系统各企业单位的管理信息系统 等等计计算算机机系系统统知识回顾知识回顾C语言与自然语言
7、的比较语言与自然语言的比较 自然语言自然语言 C C语言语言信息交流(地位平等)信息交流(地位平等)人人-机对话(命令方式)机对话(命令方式)(有思维、推理能力)(有思维、推理能力)(无思维、推理能力)(无思维、推理能力)语法规则、句法规则灵活语法规则、句法规则灵活 语法规则、句法规则固定语法规则、句法规则固定(可省略、颠倒)(可省略、颠倒)(一般不可省略、颠倒,必须按部就班)(一般不可省略、颠倒,必须按部就班)如:走,去晒太阳!如:走,去晒太阳!如:如:x=a+bx=a+b 去晒太阳,走!去晒太阳,走!scanf(scanf(“%d%d%d%d”,a,b);,a,b);表达方式多样表达方式多
8、样 算法多样算法多样scanf(“%d%d”,&a,&b);x=a+b;学习要点:学习要点:熟记熟记C C语言的语法、句法语言的语法、句法 学会算法分析与算法设计学会算法分析与算法设计 本课重点:本课重点:第二章第九章第二章第九章 本课难点:本课难点:第六章、第七章、第八章第六章、第七章、第八章第一章第一章C语言概述语言概述本章要点本章要点n C C语言的特点语言的特点n C C程序的结构程序的结构n C C程序的上机步骤程序的上机步骤1.1 语言出现的历史背景语言出现的历史背景 C C语言是国际上广泛流行的高级语言。语言是国际上广泛流行的高级语言。C C语言是在语言是在B B语言的基础上发展
9、起来的。语言的基础上发展起来的。19831983年年,美国国家标准化协会美国国家标准化协会(ANSI)(ANSI)制定了新的制定了新的标准标准ANSI C ANSI C,比标准,比标准C C有了很大的发展。有了很大的发展。19871987年年,ANSI,ANSI公布了新标准公布了新标准87 ANSI C87 ANSI C。19901990年,国际标准化组织接受了年,国际标准化组织接受了87 ANSI C87 ANSI C为为ISO ISO C C 的标准的标准(ISO9899(ISO98991990)1990)。19941994年,年,ISOISO又修订了又修订了C C语言标准。语言标准。目前
10、流行的目前流行的C C语言编译系统大多是以语言编译系统大多是以ANSI CANSI C为基础为基础进行开发的。进行开发的。1.2 语言的特点语言的特点(1 1)语言简洁、紧凑)语言简洁、紧凑,使用方便、灵活。使用方便、灵活。3232个关键字、个关键字、9 9种控制语句种控制语句,程序形式自由。程序形式自由。(2 2)运算符丰富。)运算符丰富。(3 3)数据类型丰富)数据类型丰富,具有现代语言的各种数据结构。具有现代语言的各种数据结构。(4 4)具有结构化的控制语句,是完全模块化和结构)具有结构化的控制语句,是完全模块化和结构化的语言。化的语言。(5 5)语法限制不太严格)语法限制不太严格,程序
11、设计自由度大。程序设计自由度大。(6 6)允许直接访问物理地址)允许直接访问物理地址,能进行位操作能进行位操作,能实现能实现汇编语言的大部分功能汇编语言的大部分功能,可直接对硬件进行操作。可直接对硬件进行操作。兼有高级和低级语言的特点。兼有高级和低级语言的特点。(7 7)目标代码质量高)目标代码质量高,程序执行效率高。只比汇编程程序执行效率高。只比汇编程序生成的目标代码效率低序生成的目标代码效率低1010-20%-20%。(8 8)程序可移植性好)程序可移植性好(与汇编语言比与汇编语言比)。基本上不做。基本上不做修改就能用于各种型号的计算机和各种操作系修改就能用于各种型号的计算机和各种操作系统
12、。统。1.3 简单的简单的C语言程序介绍语言程序介绍#include#include void void main()main()printf(This is a C program.n);printf(This is a C program.n);/*文件包含文件包含*/*主函数主函数 */*函数体开始函数体开始*/*输出语句输出语句*/*函数体结束函数体结束*/说明:说明:本程序的作用是输出一行信息本程序的作用是输出一行信息:This is a C program.This is a C program._ _说明:说明:mainmain-主函数名,主函数名,void void-函数类型函
13、数类型 每个每个C C程序必须有程序必须有一个一个主函数主函数mainmain 是函数开始和结束的标志是函数开始和结束的标志,不可省不可省 每个每个C C语句以语句以分号分号结束结束 使用标准库使用标准库函数时函数时应在程序开头一行写:应在程序开头一行写:#include#include 例例1.2 1.2 求两数之和求两数之和#include#include void main()void main()/*求两数之和求两数之和*/int a,b,sum;int a,b,sum;/*声明,定义变量为整型声明,定义变量为整型*/*以下以下3 3行为执行语句行为执行语句 */a=123;b=456
14、;a=123;b=456;/*赋值语句赋值语句*/sum=a+b;sum=a+b;printf(sum is%d printf(sum is%dn,sum);n,sum);说明:说明:/*/表示表示注释。注释只是给人注释。注释只是给人看的看的,对编译和运行对编译和运行不起作用。所以可以不起作用。所以可以用汉字或英文字符表用汉字或英文字符表示,可以出现在一行示,可以出现在一行中的最右侧,也可以中的最右侧,也可以单独成为一行。单独成为一行。scanf(scanf(“%d%d%d%d”,&a,&b);,&a,&b);说明:说明:输出一行信息输出一行信息:sum is 579:sum is 57912
15、 34 sum is 46absum例例1.3 1.3 求求2 2个数中较大者。个数中较大者。#include#include void main()void main()/*主函数主函数*/int max(int x,int y);int max(int x,int y);/*对被调用函数对被调用函数maxmax的声明的声明 */int a,b,c;int a,b,c;/*定义变量定义变量a a、b b、c c*/scanf(scanf(d,d,d,&a,&b);d,&a,&b);/*输入变量输入变量a a和和b b的值的值*/c=max(c=max(a a,b b););/*调用调用max
16、max函数函数,将得到的值赋给将得到的值赋给c c*/printf(max=printf(max=dn,c);dn,c);/*输出输出c c的值的值*/int int max(int max(int x x,int,int y y)/*子函数子函数*/int z;int z;if if(xy)z=x;xy)z=x;else else z=y;z=y;return(z);return(z);535abc53xy5z 说明:本程序包括说明:本程序包括mainmain和被调用函数和被调用函数maxmax两个函数。两个函数。maxmax函数的作用是将函数的作用是将x x和和y y中较大者的值赋给变量中
17、较大者的值赋给变量z z。returnreturn语句将语句将z z的值返回给主调函数的值返回给主调函数mainmain。程序运行情况如下程序运行情况如下:5,3 (5,3 (输入输入5 5和和3 3赋给赋给a a和和b)b)max=5 (max=5 (输出输出c c的值的值)1.3 简单的简单的C语言程序介绍语言程序介绍(1)C(1)C程序是由函数构成的。这使得程序容易实现程序是由函数构成的。这使得程序容易实现 模块化。模块化。(2)(2)一个函数由两部分组成一个函数由两部分组成:函数的首部:函数的首部:例例1.31.3中的中的maxmax函数首部函数首部 int max(int x,int
18、 y)int max(int x,int y)函数体:函数体:花括号内的部分。若一个函数有多个花花括号内的部分。若一个函数有多个花 括号括号,则最外层的一对花括号为函数体的范围。则最外层的一对花括号为函数体的范围。函数体包括两部分:函数体包括两部分:声明部分:如声明部分:如int a,b,c;int a,b,c;可缺省可缺省执行部分:由若干个语句组成。可缺省执行部分:由若干个语句组成。可缺省注意:注意:函数的声明部分和执行部分都可缺省,例如:函数的声明部分和执行部分都可缺省,例如:void dump()void dump()这是一个空函数这是一个空函数,什么也不做什么也不做,但是合法的函数。但
19、是合法的函数。(3)C(3)C程序总是从程序总是从mainmain函数开始执行的函数开始执行的,与与mainmain函数函数的位置无关。的位置无关。(4)C(4)C程序书写格式自由程序书写格式自由,一行内可以写几个语句一行内可以写几个语句,一个语句可以分写在多行上,一个语句可以分写在多行上,C C程序没有行号。程序没有行号。(5)(5)每个语句和数据声明的最后必须有一个分号。每个语句和数据声明的最后必须有一个分号。(6)(6)用用/*/做注释。做注释。(7)C(7)C语言本身没有输入输出语句。输入和输出的语言本身没有输入输出语句。输入和输出的操作是由库函数操作是由库函数scanfscanf和和
20、printfprintf等函数来完成的。等函数来完成的。C C对输入输出实行对输入输出实行“函数化函数化”。1.4 运行程序运行程序 的步骤和方法的步骤和方法 上机输入与编辑源程序上机输入与编辑源程序 对源程序进行编译对源程序进行编译 与库函数连接与库函数连接 运行目标程序运行目标程序上机上机运行程序的方法运行程序的方法 目前使用的大多数目前使用的大多数C C编译系统都是集成环境编译系统都是集成环境(IDE)(IDE)的。的。可以用不同的编译系统对可以用不同的编译系统对C C程序进行操作。程序进行操作。常用的编译环境:常用的编译环境:Visual C+6.0Visual C+6.0DEV-C+
21、DEV-C+Visual StudioVisual StudioCode:blocksCode:blocksGCCGCC例:例:Visual C+6.0的使用的使用(1)进入)进入visual C+6.0集成环境集成环境“开始开始”“所有程序所有程序”“Microsoft Visual Studio 6.0”“Microsoft C+6.0”(2)编辑源文件编辑源文件“File”“New”在在“File”选项卡中选择选项卡中选择“C+Source File”,输入文件名,选择存储路,输入文件名,选择存储路径。径。#include void main()printf(“*n”);printf(“very good!n”);printf(“*n”);习题习题1-4#include void main()int a,b,c,max2,max3;printf(“请输入三个数:请输入三个数:n”);scanf(“%d,%d,%d”,&a,&b,&c);if(ab)max2=a;else max2=b;if(max2c)max3=max2;else max3=c;printf(“最大值为最大值为%dn”,max3);习题习题1-5