《C语言1004.ppt》由会员分享,可在线阅读,更多相关《C语言1004.ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程地位对计算机科学技术及相关专业:最重要的专业基础课。对计算机科学技术及相关专业:最重要的专业基础课。第一学期:第一学期:C C语言程序设计基础语言程序设计基础第二学期:第二学期:C C语言程序设计进阶语言程序设计进阶第三学期:第三学期:C+C+面向对象程序设计面向对象程序设计第四学期:第四学期:数据结构数据结构(C C语言版)语言版)第五学期:操作系统(用第五学期:操作系统(用C C语言实现)语言实现)第六学期:编译原理、第六学期:编译原理、算法设计与分析算法设计与分析(C C语言实现)语言实现)是培养程序设计能力、训练计算思维的重要基础课,对后续是培养程序设计能力、训练计算思维的重要基础
2、课,对后续专业课的学习至关重要!专业课的学习至关重要!课程目标 理解计算机完成问题求解和进行信息处理的基本原理和方式。 掌握C语言的基础知识。 掌握用C语言进行程序设计的基本方法,训练计算思维能力。 最终目的:会熟练使用C语言编程解决实际问题如何学好本课程 本课程实践性很强,你不是看会的,也不是听会本课程实践性很强,你不是看会的,也不是听会的,而是动手动脑练会的,要求:的,而是动手动脑练会的,要求:(1 1)课前预习)课前预习(2 2)上机前写好程序清单)上机前写好程序清单(3 3)课余时间上机编程并提交在线判题系统)课余时间上机编程并提交在线判题系统(4 4)不能放弃任何一个没有调试成功的程
3、序)不能放弃任何一个没有调试成功的程序 平时成绩占平时成绩占30%30%,依据上课、实验和课下做题量。,依据上课、实验和课下做题量。 期末考试占期末考试占70%70%,机器判题,动态排名。,机器判题,动态排名。1 C语言概述 计算机与程序设计语言计算机与程序设计语言 C语言的发展简史语言的发展简史 第一个第一个C程序程序显示显示Hello World! 剖析一个简单的程序剖析一个简单的程序 人与计算机1997年5月,蝉联12年国际象棋世界冠军的卡斯帕罗夫与IBM公司研制的巨型计算机深蓝进行了一场6局的人机大战。看看卡斯帕罗夫的表情,你就知道比赛结果了。卡斯帕罗夫以2.5分比3.5分的总成绩败给
4、了深蓝。 人与计算机2011年年2月月, IBM举办有史举办有史以来第一次人机智力问答以来第一次人机智力问答对决。对决。IBM的超级电脑的超级电脑Watson,对决哥伦比亚,对决哥伦比亚广播公司的益智问答节目广播公司的益智问答节目“危险边缘危险边缘”的两名总冠的两名总冠军,奖金达军,奖金达100万美元。万美元。这这3个个“人人”抢答主持人提出的各种稀奇古怪的问题,抢答主持人提出的各种稀奇古怪的问题,历史、时事、科学、艺术、体育、地理、流行文化、文历史、时事、科学、艺术、体育、地理、流行文化、文学与语言、文字游戏等,结果学与语言、文字游戏等,结果Watson以大比分遥遥领以大比分遥遥领先。先。不
5、是人脑不聪明,而是电脑太疯狂。不是人脑不聪明,而是电脑太疯狂。人与计算机什么是程序?程序是如何产生的?我能成为程序员(猿)吗?本节课将给你一一解答。然而电脑的胜利在本质上是人脑的胜利,是无数人类专家集体智慧的结晶。(IBM研制小组将100年来所有国际特级大师开局和残局的下法存入存入“深蓝”、美国特级大师本杰明将他对象棋的理解编成程序程序教给“深蓝”。)计算机具有强大的存储存储能力;计算机能够按照既定的程序程序进行高速计算。1.1 计算机与程序设计语言 美籍匈牙利科学家冯诺依曼“计算机之父”。 二十世纪三十年代,人们被十进制这个人类习惯的计数方法所困扰。那时以研制模拟计算机的呼声更为响亮和有力。
6、 冯诺依曼主张抛弃十进制,采用二进制作为数字计算机的数制基础。 尤为重要的是,他提出了“存储程序”的思想,就是预先编制程序,将程序存储到计算机内部,计算机自动执行。 计算机发展史上的里程碑,标志着计算机时代的真正开始。 1.1.1 程序与指令什么是程序什么是程序 程序一词来自生活,通常指完成某些事务程序一词来自生活,通常指完成某些事务的一种既定方式和过程的一种既定方式和过程 在日常生活中,可以将程序看成对一系列在日常生活中,可以将程序看成对一系列动作的执行过程的描述动作的执行过程的描述 银行银行 带上存折去银行 3. 将存折和取款单递给银行职员 2.填写取款单并到相应窗口排队4.银行职员办理取
7、款事宜 日常生活中的程序5. 拿到钱并离开银行 做口述笔记键入信函的内容发送传真 口述2.信函_3.3.传真指令被逐条执行程序员老板秘书程序程序:为了让计算机执行某些操作或解决某:为了让计算机执行某些操作或解决某个问题而编写的一系列个问题而编写的一系列有序指令的集合有序指令的集合要执行的一组指令计算机中的程序程序与指令 输入输入3个数个数A, B和和C,求,求A+B+C的结果的结果Input A; 输入第输入第1个数据到存储单元个数据到存储单元A中中Input B; 输入第输入第2个数据到存储单元个数据到存储单元B中中Input C; 输入第输入第3个数据到存储单元个数据到存储单元C中中Add
8、 A B D; 将将A、B相加并将结果存在相加并将结果存在D中中Add C D D; 将将C、D相加并将结果存在相加并将结果存在D中中Output D; 输出输出D的内容的内容52+33+543=?如何让计算机求解任意三个整数的和?如何让计算机求解任意三个整数的和?用计算机计算三个整数的和,这么麻烦?这已经是加了用计算机计算三个整数的和,这么麻烦?这已经是加了intput、add等助记符的汇编语言,在此之前还有更麻烦等助记符的汇编语言,在此之前还有更麻烦的的最早时候的计算机专家是用最早时候的计算机专家是用01串(机器语言)编程串(机器语言)编程1.1.2 程序设计语言的发展程序设计语言的发展0
9、 0 1 0 0 0 1 11 1 1 0 1 1 0 10 1 1 0 0 0 0 10 1 1 1 0 1 1 0 int main( ) int a=300, b=18, c; c=a+b; printf(“a+b= %dn”, c);程序设计语言的发展程序设计语言的发展太多的程序设计语言*.NET *Pascal *ActionScript*APL、A+和J *Ada *汇编语言 *AWK *Basic QBasic *Java Visual Basic *VBScript *JavaScript*Brainfuck *C、C+ Objective-C*Clipper *COBOL *
10、dBase*DART *Delphi *Forth *Fortran *FoxPro *F# *Fava *IDL *C#1.2 C语言的发展与特点 起源C语言的传奇历史 标准化 基于C的语言 C C语言是语言是2020世纪世纪7070年代初期在贝尔实验室开发出年代初期在贝尔实验室开发出来的一种广为使用的编程语言来的一种广为使用的编程语言。1.2.1 关于C语言的传奇Ken ThompsonUnix时代的开创者时代的开创者C与与UNIX的诞生的诞生 贝尔实验室贝尔实验室20世纪,人类有四分之三的时间在为贝尔实验世纪,人类有四分之三的时间在为贝尔实验室的发明欢呼。室的发明欢呼。 1969年,年,
11、ken设计了一款电子游戏设计了一款电子游戏“Space Travel” 游戏在一台废弃的游戏在一台废弃的PDP-7小型机上开发小型机上开发 Ken决定先给决定先给PDP-7开发一个新的操作系统,命名为开发一个新的操作系统,命名为“UNIX” 在开发第一版在开发第一版Unix的过程中,的过程中,Ken还开发出一种新的语言,即还开发出一种新的语言,即C语言的前身语言的前身B语言,语言, Dennis M. Ritchie主动加入,在主动加入,在B语言的基础上设计出了语言的基础上设计出了“C语言语言”,重写了,重写了Unix。 旧版的旧版的Unix与与C语言完美结合在一起产生了新的可移植的语言完美结
12、合在一起产生了新的可移植的Unix系统。开启了轰轰烈烈的系统。开启了轰轰烈烈的C与与Unix的传奇时代。的传奇时代。1983年,因为UNIX和C语言的巨大成功, ken和dmr共同获得当年度的计算机界最高奖图灵奖Ken和和dmr被尊为黑客的鼻祖被尊为黑客的鼻祖 黑客故事:黑客故事:贝尔实验室的高手们发现贝尔实验室的高手们发现Ken总是很容总是很容易就取得了他们的帐户权限,为此郁闷的十几年,易就取得了他们的帐户权限,为此郁闷的十几年,无法破解。无法破解。 14年后,年后,Ken才道出其中的原委。才道出其中的原委。 他们未对他们未对UNIX和和C语言申请任何版权或专利语言申请任何版权或专利 UNI
13、X和和C语言是黑客世界里两大神器语言是黑客世界里两大神器 黑客精神黑客精神 做事情以兴趣为出发点,并不在乎未来会怎样做事情以兴趣为出发点,并不在乎未来会怎样 极富创造力和钻研精神,喜欢迎接挑战极富创造力和钻研精神,喜欢迎接挑战 乐于分享,不计回报乐于分享,不计回报1.2.2 C语言的发展 起源起源Unix的副产品的副产品 标准化标准化 C语言不断发展扩充,出现很多语言不断发展扩充,出现很多“方言方言”,美国,美国国家标准化协会开始制定了新的国家标准化协会开始制定了新的C语言标准。语言标准。 C89标准;标准;C99标准标准. 基于基于C的语言的语言 C语言对现代编程语言有着极大地影响力,许多语
14、言对现代编程语言有着极大地影响力,许多现代编程语言都借鉴了大量现代编程语言都借鉴了大量C语言的特性,如:语言的特性,如:C+、JAVA、C#、Perl等。等。2013年8月,TIOBE的编程语言排行情况1.2.3 C 语言的特点编程语言低级高级缺点缺点无限制的自由:无限制的自由:如程序员不自我约束,代码将是灾难:不如程序员不自我约束,代码将是灾难:不安全、不稳定、不易于维护安全、不稳定、不易于维护 优点优点高效:高效:高效性是高效性是C语言与生俱来的,因为发明语言与生俱来的,因为发明C语言就是语言就是为了编写以往由汇编语言编写的程序。为了编写以往由汇编语言编写的程序。信任程序员:信任程序员:C
15、语言对程序员限制较少,给程序员最大的语言对程序员限制较少,给程序员最大的发挥空间发挥空间优缺点经常是同源的。优缺点经常是同源的。C语言更是如此,其优缺点主要来自语言更是如此,其优缺点主要来自于与于与C语言与硬件的紧密结合及其赋予程序员的自由空间。语言与硬件的紧密结合及其赋予程序员的自由空间。C语言中那些容易导致人犯错误的特性,往往也正是编程老语言中那些容易导致人犯错误的特性,往往也正是编程老手们为之吸引的特性。手们为之吸引的特性。1.3 显示Hello World 例例1.1 编写程序,输出如下文字编写程序,输出如下文字: ”Hello World“C程序的创建有以下四个基本过程:程序的创建有
16、以下四个基本过程:编辑编辑编译编译链接链接执行执行#include int main(void) printf(Hello Worldn); return 0;以 # 开始的语句称为预处理器指令以.h为后缀的文件被称为头文件,可以是 C 程序中现成的标准库文件,也可以是自定义的库文件。stdio.h文件中包含了有关输入输出语句的函数 main() 函数是 C 程序处理的起点。 这个return语句结束main() 函数的执行并返回一个值,返回值为0表示程序正常结束在函数定义的后面有一个左大括号,即 它表示函数的开始,后面是函数的主体在函数定义的结尾处有一个右大括号,即 在屏幕上产生一行输出“H
17、ello world”,并换行(n) 函数主体中的每个语句都以分号结束。C 程序中的一个语句可以跨越多行,并且用分号通知编译器该语句已结束。 1.3.1 编辑在编辑器里输入以下源代码1.3.2 编译C语言源程序哎呀,我哎呀,我理解不了理解不了由编译器生成目标代码可以,我理解了可以,我理解了编译器可以将源代码编译器可以将源代码转换成机器语言,生转换成机器语言,生成目标文件,扩展名成目标文件,扩展名为为“.o”或或“.obj” 1.3.3 链接可执行程序C语言函数库连接器目标文件1目标文件2目标文件n一个一个C语言程序可能用到程序库中的函数,也可能包含语言程序可能用到程序库中的函数,也可能包含多个
18、源代码文件,所以在编译之后,需要链接器将它多个源代码文件,所以在编译之后,需要链接器将它们组合起来,生成可执行文件,扩展名为们组合起来,生成可执行文件,扩展名为“.exe”。 1.3.4 执行在这个阶段,计算机精确地执行指令。在这个阶段,计算机精确地执行指令。通过链接得到可执行文件之后,程序的运行首先需要通过链接得到可执行文件之后,程序的运行首先需要初始化系统相关资源,然后才运行初始化系统相关资源,然后才运行main函数。函数。运行结果可能是正确的,也能是错误的,甚至使计算运行结果可能是正确的,也能是错误的,甚至使计算机崩溃机崩溃。1.3.5 处理错误分析问题编制程序编译连接调试运行完成会发现
19、语法错误,转回修改源程序连接中发现错误,转回修改源程序调试运行中发现问题,可能是内存错误或逻辑错误编程是一件复杂的工作,因为是人做的编程是一件复杂的工作,因为是人做的事情,所以难免经常出错。你需要逐步事情,所以难免经常出错。你需要逐步处理错误,直到获得期望的结果为止。处理错误,直到获得期望的结果为止。 模仿练习模仿练习1.在屏幕上显示在屏幕上显示 “This is my first C program!”2.在屏幕上显示在屏幕上显示 * * * *3.在屏幕上显示在屏幕上显示 * * * #include int main(void) int a, b, sum; a = 3; b = 5;
20、sum = a+b; printf(“%dn, sum); return 0;1.4 剖析一个简单的程序例例1.2 计算两个数的和计算两个数的和1.4.1 注释#include int main(void) / 此程序用来此程序用来单行注释单行注释C 程序可以包含注释,以便向读者作一般说明程序可以包含注释,以便向读者作一般说明编译器并不处理这些注释编译器并不处理这些注释 /* 此程序由此程序由 编写编写 用来打印输出用来打印输出*/多行注释多行注释/* *作者:作者:创建日期:创建日期:描述:描述:* */#include int main() 在程序中添加注释是一个好的编程习惯,可以增强程序
21、的可读性。1.4.2 预处理 #include int main(void) int a,b,sum; a = 3; b = 5; sum = a+b; printf(“%dn, sum); return 0;#表示这是个预处理器指令,就是编译器在编译过程开始之前的预处理阶段处理这些指令该指令将该指令将stdio.hstdio.h文件的内容包含进来文件的内容包含进来以.h为后缀的文件被称为头文件,可以是 C 程序中现成的标准库文件,也可以是自定义的库文件。stdio.h文件中包含了编译器理解printf()以及其他输入输出函数所需要的信息。C语言的一个突出优点就是它具有标准库,包含了数百个用于
22、输入输出、字符串处理等实用操作的函数#include int main(void) int a,b,sum; a = 3; b = 5; sum = a+b; printf(“%dn, sum); return 0;1.4.3 main()函数 C语言由一个或多个函数组成,每个程序都必须有一个main()函数因为每个程序总是从这个函数开始执行 main() 函数可以返回一个值,返回值为0表示程序正常结束在函数定义的后面有一个左大括号,即 它表示函数的开始,后面是函数的主体在函数定义的结尾处有一个右大括号,即 1.4.4 语句 #include int main(void) int a,b,su
23、m; a = 3; b = 5; sum = a+b; printf(%dn, sum); return 0;函数主体中的每个语句都以分号结束。C 程序中的一个语句可以跨越多行,并且用分号通知编译器该语句已结束。 1.4.5 关键字 #include int main(void) int a, b, sum; scanf(%d%d, &a, &b); sum = a + b; printf(%dn, sum); return 0;C语言中的关键字是具有特殊意义的字,如int用于定义整数类型,return用于函数的返回。程序中不能将关键字用于其它目的。C语言有32个关键字 1.4.6 输入输出
24、#include int main(void) int a, b, sum; a = 3; b = 5; sum = a + b; printf(%dn, sum); return 0;在屏幕上输出“8”,并换行(n) 如何计算任意两个整数的和?如何计算任意两个整数的和?从键盘读入数给从键盘读入数给a和和b1.4.7 标识符 由由字母字母、下划线下划线和和数字数字组成的字符序列,组成的字符序列,且不能以数字开头。分类如下:且不能以数字开头。分类如下:1 1关键字关键字 必须用小写字母,具有特殊意义。如必须用小写字母,具有特殊意义。如intint、floatfloat、returnreturn、
25、ifif等。等。2 2预定义标识符预定义标识符编译预备处理命令,如编译预备处理命令,如includeinclude、definedefine等;等;系统标准库函数,如系统标准库函数,如scanfscanf、printfprintf、putcharputchar、getchargetchar、strcpystrcpy、strcmpstrcmp、sqrtsqrt等。等。3.3.用户自定义标识符用户自定义标识符 用于对用户使用的变量、数组、函用于对用户使用的变量、数组、函数等操作对象进行命名。数等操作对象进行命名。用户自定义标示符不能与关键字重名;用户自定义标示符不能与关键字重名;最好不要与预定义标
26、示符重名,否则会改变其原有含义。最好不要与预定义标示符重名,否则会改变其原有含义。正确区分标识符 正确区分哪些是合法标识符,哪些是不合正确区分哪些是合法标识符,哪些是不合法标识符。法标识符。 其中哪些是合法的用户自定义标识符。其中哪些是合法的用户自定义标识符。Abc define 2x double studentm+y a# b-4 _1 Whileint let x%y name do w tm Ctrl swicth include #include int main(void) int a,b; a=5; b=a*a; printf(b=%dn,b); 【例1.3】计算并输出一个数的平
27、方【例1.4】输入两个数,输出其中的大数#include int main(void) /* 主函数主函数 */ int a, b, c; scanf(%d%d,&a,&b); if (ab) c = a; /*如果如果ab,则把,则把a赋给赋给c*/ else c = b; /*否则否则 把把b赋给赋给c*/ printf(“最大值为最大值为 %dn, c);程序设计 程序程序设计设计(Programming)(Programming)是给出解决特定问是给出解决特定问题程序的过程,是题程序的过程,是软件软件构造活动中的重要构造活动中的重要组成部分。程序设计往往以某种组成部分。程序设计往往以某
28、种程序设计程序设计语言语言为工具,编写这种语言下的程序。程为工具,编写这种语言下的程序。程序设计过程应当包括分析、设计、序设计过程应当包括分析、设计、编码编码、测试、排错等不同阶段。专业的程序设计测试、排错等不同阶段。专业的程序设计人员常被称为人员常被称为程序员程序员。软件 软件软件= =程序?程序? 软件软件= =程序程序+ +数据数据+ +说明文档说明文档程序员(猿) 程序猿:是一种近几十年来出现的新物种,是工业革命的产物,在行为和物种归类上也可称为码码字猴字猴。 特点:人类在科技研究上的一种新兴进化,拥有无与伦比的耐力、超越时代的智商、横穿社会的苦逼相和低于人类平均寿命的显著特点。 着装
29、:初级装:衬衣+牛仔裤+休闲鞋。中级装:T恤+宽松短裤+拖鞋。高级装:背心+宽松大花裤衩+人字拖。小 结 程序是为让计算机完成某项任务而编写的逐条执程序是为让计算机完成某项任务而编写的逐条执行的指令序列行的指令序列 C C程序编写完成后,首先需要通过编译转换成目标程序编写完成后,首先需要通过编译转换成目标文件,然后通过连接创建可执行程序,最后才可文件,然后通过连接创建可执行程序,最后才可以执行该程序以执行该程序 C C程序的基本结构包括:预处理语句、程序的基本结构包括:预处理语句、mainmain函数,函数,mainmain函数中的内容使用函数中的内容使用 括起来,每条语句必须括起来,每条语句必须用分号结束用分号结束课后作业课后作业1.1.编程,输入两个整数编程,输入两个整数a,b,a,b,输出输出a+ba+b的和。的和。2.2.输入三角形的底和高,输出三角形面积。输入三角形的底和高,输出三角形面积。3.3.编程,输入等比数列的首项、等差和总项编程,输入等比数列的首项、等差和总项数,输出等差数列的和。数,输出等差数列的和。4.4.从键盘输入从键盘输入2 2个整数,输出其中最大值。个整数,输出其中最大值。NoImage结束结束
限制150内