收藏 分享(赏)

河南农业大学C语言第1章.ppt

上传人:dreamzhangning 文档编号:3322879 上传时间:2018-10-13 格式:PPT 页数:70 大小:3.74MB
下载 相关 举报
河南农业大学C语言第1章.ppt_第1页
第1页 / 共70页
河南农业大学C语言第1章.ppt_第2页
第2页 / 共70页
河南农业大学C语言第1章.ppt_第3页
第3页 / 共70页
河南农业大学C语言第1章.ppt_第4页
第4页 / 共70页
河南农业大学C语言第1章.ppt_第5页
第5页 / 共70页
点击查看更多>>
资源描述

1、C程序设计教程,高等学校计算机基础教育教材精选 崔武子 赵重敏 李青 著,第1章 C语言基础知识,11 C语言概述 12 简单C程序与上机步骤 13 数据类型 14 常量与变量 15 运算符和表达式,1.1 C语言概述,1.1.1 C语言的发展 1.1.2 C语言的特点 1.1.3 C程序的执行 1.1.4 C程序形式和程序执行过程,1.1.1 C语言的发展,人和计算机交换信息用到的语言称为计算机语言。 为了解决某一特定问题用某一种计算机语言编写的指令序列称为程序。,1.1.1 C语言的发展,1.程序设计语言的发展: (1) 机器语言 (1GL) a. 形式特点:由 0,1序列组成的指令系统b

2、. 不需要任何翻译工作,执行效率高c. 难记、难认、难理解,程序开发效率底,易出错、 难调试d. 不同的计算机结构具有不同的指令系统 (不同的机器具有不同的语言),10000000 加 10010000 减,1.1.1 C语言的发展,(2) 汇编语言 (符号语言, 2GL)a. 形式特点:由一套简单的助记符来表示不同的机器指令b. 需要相应的翻译机制 (汇编系统)c. 抽象层次高一些,容易理解些,程序生产效率高 d. 不同的计算机结构具有不同的汇编系统,源程序 (汇编语言),汇编系统,目标程序 (机器语言),1.1.1 C语言的发展,(3) 面向过程的高级语言 (算法语言,3GL)a. 形式特

3、点:更接近于人们通常数学计算公式的描述b. 需要更高级的翻译系统 (编译系统 compler)c. 表达能力强,编程效率高d. 不依赖于具体的机器,依赖于不同机器上的编译系统 (不同机器上的编译系统是有差异的),1.1.1 C语言的发展,(4) 非过程化的高级语言 (4GL) * 过程化语言:用语言描述怎样做的过程 * 非过程化语言:只要告诉计算机做什么 * 其它方面的特点与面向过程的高级语言相同 * 非过程化的高级语言的几种类型:a. 4GL: VB,VCb. 逻辑性语言:PROLOGc. 面向对象语言:SmallTalk,1.1.1 C语言的发展,(5) (5GL)利用可视化或图形化接口编

4、程,从而生成一种原语言,这种原语言通常用3GL或4GL语言编译器来进行编译。,C语言的发展过程,C语言的出现是与UNIX OS紧密联系在一起的,随着UNIX OS的成功和在国际上的广泛流行,C语言在软件工程里越来越受到重视。C语言本身也有一个发展过程,目前仍处于发展和完善过程中。,语言的家谱如下图所示:,ALGOL 60 (1960, Algorithm language),由国际委员会设计,比Fortran出现的晚,但比Fortran精致和完善,由于它抽象,庞大而没有得到推广和流行起来,CPL (1963,Combined Programming Language),比ALGOL大,功能强,

5、难以学习,难以实现,BCPL (1967,Basic Combined Programming Language),剑桥大学的Martin Richards 研制,目的是把CPL加以浓缩, 使得既保持CPL的基本特性,又易于学习,实现,B (1970,取BCPL的第一个字母),由美国Bell实验室的Ken Thompson研制 对BCPL进一步简化,用B语言写出了第一个UNIX OS并在PDP-7机上实现。由于B语言采用按字编址,不适合PDP_11按字节编址进行存取的要求,B还缺乏一定的数据类型的表达能力,编译产生的是解释执行代码,速度慢,这是B发展的主要障碍,C语言的发展过程,C (1972

6、,取BCPL的第二个字母),Bell Lab 的D.Ritchie研制改进了B的数据结构。 追求的目标:保持了BCPL和B的精练性和接近机器硬件的优点,恢复其通用性,使其简洁、灵活、高效、可移植。,1973年,UNIX在C语言改写的环境下,加进了多道程序的功能。70年代中期,UNIX和C得到了广泛的应用,受到了越来越多的人的关注。UNIX公认为第一标准的操作系统,语言成为“近十年来对计算机程序设计实践最重要的贡献之一”,成为微机、小型机、超小型机、大形机、巨型机上共同使用的一种语言。1983年,D.Ritchie和Thompson获得ACM图灵奖,标准C (1978),以K&R合著的The C

7、 Programming Language一书中的C为基础,ANSI C (1983),美国国家标准化协会根据C语言问世以来各种版本对C的发展和扩充,制定了新的标准,称为ANSI C,比原来的标准C有了很大的发展,以标准C为基础,相应于不同的编译系统,产生了不同版本的C语言,如MSC TurboC UNIXC等,其基本语句相同,库函数不太相同,1.1.2 C语言的特点,人们从不同的角度总结出C语言的许多特点,这些特点都基本上反映了语言产生的环境,也体现了设计者所追求的目标。下面我们从语言的发展与UNIX系统的关系来讨论C语言的特点。,1. 简洁、高效、灵活和强功能,C语言反映了设计者追求简洁、

8、高效、灵活和强功能的程序设计思想,这设计目标体现在:,a. C语言程序以小写字母为基础,小写字母具有易读易写的特点。 b. 表达方式简洁、规整、C程序紧凑。 c. 表达方式灵活。,C语言的特点,人们从不同的角度总结出C语言的许多特点,这些特点都基本上反映了语言产生的环境,也体现了设计者所追求的目标。下面我们从语言的发展与UNIX系统的关系来讨论C语言的特点。,2.数据类型丰富,适应系统软件和应用软件开发的需要,在中,数据类型的特点体现在: 具有四种基本数据类型(整型、实型、字符型、枚举类型) 多种组合类型(数组、结构、联合) 指针类型 允许用户自定义类型,C语言的特点,3. C语言有丰富的运算

9、符(34种, 见附录),为了体现程序的结构化和模块化的现代软件工程思想,便于大型程序的设计、调试和维护,语言采取了如下措施:,4. C语言是一种结构化语言,适合于大型程序的模块化设计,丰富的数据类型和运算符的结合使用,可以得到运算对象的值和流程的控制,体现C表达灵活和高效率的优点。,C语言的特点, 提供结构化程序所需要的基本控制流结构语句ifelse, while, dowhile, for, switch 程序以函数的集合构成,函数具有独立的功能,并作为模块化设计的基本单位。 包含程序的源文件,一个程序可以分割成多个源文件,分别对各个源文件进行编译,然后通过链 接得到可执行的目标程序文件。,

10、C语言的特点,5. C语言生成的代码质量高,直到现在汇编语言仍是编写系统软件的主要工具。实践证明,针对同一问题,用C语言描述其代码的效率只比汇编语言低10%20%,语言成为人们描述系统软件和应用软件比较理想的工具。UNIX操作系统等软件都是用C语言写的。,C语言的特点,可移植性是指程序可以从一个环境不加或稍加改动就可以搬到另一个完全不 同的环境上运行。,由于语言的编译程序便于移植,使得在一个环境上用编写的许多程序可以很方便地移植到另一环境上。,6. 可移植性好,C语言的特点,7. C语言已逐步发展为通用程序设计语言,目前,语言已独立于UNIX系统而蓬勃发展,语言已广泛用于办公自动化数据库系统、

11、专家系统、知识工程等众多的领域中。,C语言的缺点, 运算符优先级太多,不便记忆 还没有一个一致公认的标准 C不是一个强类型的语言,类型检查太弱,转换 比较随便,不太安全,C语言的缺陷主要反映在:,1.1.3 C程序的执行 P2,C语言是由附录中列出的32个关键字再加上语法规则构成的。,1.1.3 C程序的执行 P2,C程序的执行过程:,e1.c,编辑,编译,e1.obj,连接,e1.exe,运行,输出结果,1.1.4 C程序形式和程序执行过程 P2,【例1.1】C语言程序示例 程序如下: #include #include int mysum( int m, int n );,main( )

12、int a,b,x;double c,y,z;c=4.0;y=sqrt(c);a=10; b=20; x=mysum(a,b);z=x+y;printf(“z=%lfn“,z);,int mysum( int m, int n ) int k;k=m+n;return k; 程序的运行结果是:z=32.000000, c=4.0; y=sqrt(c); a=10; b=20; x=mysum(a,b); z=x+y; ,main函数,本课程的目标,掌握解决简单问题的步骤 。 用C语言能够实现如下程度的功能。,演示 Yanshi.exe 执行时必须先选择创建菜单,1.2 简单C程序与上机步骤 P

13、3,1.2.1 简单C程序 1.2.2 上机步骤,1.2.1 简单C程序 P3,【例1.2】编写在屏幕上显示一个句子“Lets study the C language. ”的程序。 #include main( ) printf(“Lets study the C language. “) ; ,main是主函数名,有且仅有 一个主函数,函数体,本函数体有一条输出语句,运行结果如下: Lets study the C language.,不能丢,命令行,注意:区分大小写,【例1.3】编写输出两个句子“Lets study the C language. ”和 “Its interesting

14、.”的程序。 #include main( ) printf(“Lets study the C language. n“);/* 输出字符串后换行 */printf(“Its interesting.n“); ,运行结果如下: Lets study the C language. Its interesting.,注意:书写格式,1.2.2 上机步骤 P5,请按教材上机实践例1.2 例1.3,1.3 数据类型,数 据 类 型,基本类型,整型,整型 ( int )长整型 (long),实型(浮点型),单精度型 ( float ) 双精度型 (double),数值类型,字符类型 ( char )

15、 枚举类型 ( enum ),构造类型 (组合类型),数组类型 结构体类型 (struct) 共同体类型 (union) 文件类型 ( file ),指针类型,空类型 (void),不返回任何类型的数据,1.3 数据类型 P7,【例1.4】观察运行下面程序后sum和ave的值 #include main( ) int a, b, sum; float ave; a=5; b=6; sum=a+b; ave=sum/2; printf(“%d, %fn” , sum, ave); ,sum=,11,?,ave=,?,5.5?,5,运行结果:11,5.000000,说 明:,常用数据类型:整型、实

16、型、字符型、数组、结构体类型、指针类型等。 一定要选择合适的数据类型。 使用正确的输出格式说明。,1.4 常量与变量 P8,1.4.1 常量与变量的概念 1.4.2 整型常量与变量 1.4.3 实型常量与变量 1.4.4 字符型常量与变量,1.4.1 常量与变量的概念 P8,【例1.5】编写输出1000和100的和与差的程序。 #include #define FIRST 1000 main( ) int s; s= FIRST +100; printf(“s=%dn“ , s);s= FIRST -100; printf(“s=%dn“ , s); ,将用FIRST代替1000,变量,s=1

17、100,s=900,变量的命名规则,变量名由az、AZ、09、_ 组成。 变量名的第一个字符不能是数字。 C语言中关键字不能作为变量名。,注意:区分大小写,【例1.6】下面变量名中哪些是合法的,哪些是不合法的?Int float _123 9k qbasic printfa.b year business1 business2,(),(),(),(),(),(),(),(),(),(),(),变量名要 简单明了 见名知意,不提倡用函数名,变量必须先定义后使用,main( ) int a, b; a=5; b=6; int sum; sum=a+b; printf(“%dn” , sum); ,

18、下面程序是错误的。,定义变量,int a;,制造容器,变量的定义、多次赋值以及输出的全过程。,不定值,a=5;,5,a=6;,6,printf(“a=%d”,a);,输出 a=6,注意:a代表存储单元 6是存储单元中的内容,1.4.2 整型常量与变量 P10,1整型常量 整型常量不能带小数点。%d 十进制形式输出;%o 八进制形式输出; 0101%x 十六进制形式输出; 0x5a2,问:printf(”%d,%x”,17,17);的运行结果?,17,11,#include main( ) int a=0101,b=0x5a2;printf(“%d, % 0, %xn“,a,a,a);print

19、f(“%d, % 0, %xn“,b,b,b); 运行结果是:65,101,41 1442,2642,5a2,【例1.7】写出下面程序的运行结果。,整型常量的常用类型,2整型变量,整型变量中只能存放整型数据。 整型变量的常用类型:基本型 int (一般占2个字节)长整型 long (一般占4个字节) 定义变量时必须根据需要给出其类型。,【例1.8】写出下面程序的运行结果。,#include main( ) int a,b; long int c; a=32767;b=32768;c=32768; printf(“%d,%d,%ldn“,a,b,c); ,32767, -32768,32768,

20、注意:数据溢出,-32768,3变量初始化,在定义变量的同时给变量赋值,不能,b 没有定义,1.4.3 实型常量与变量 P11,1实型常量 【例1.9】写出下面程序的运行结果。 #include main( ) printf(“%fn“, 123451234512345.1 );printf(“%en“,12345.6788885); ,123451234512345.094000,按小数形式输出,1实型常量 【例1.9】写出下面程序的运行结果。 #include main( ) printf(“%fn“, 123451234512345.1 );printf(“%en“,12345.6788

21、885); ,123451234512345.094000,1.23457e+04,按指数形式输出,2实型变量,实型变量中只能存放实型数据。单精度型 float 占4个字节 有效位至少6双精度型 double 占8个字节 有效位至少15 实型变量无法精确地存放数据,会有误差 。,【例1.10】观察下面程序的运行结果。,#include main( ) float a,b; double c; a=12.3; b=12345.67; c=12345.67; printf(“%fn“,a);printf(“%fn“,b);printf(“%lfn“,c); ,12.300000,12345.669

22、922,12345.670000,按双精度形式输出,1.4.4 字符型常量与变量 P13,1字符型常量 常规字符 用单引号括起来的单个字符。转义字符 用开头的字符序列。 字符常量按其ASCII码值参加整数运算。,【例1.11】观察下面程序的运行结果。 #include main( ) printf(“%c,%dn“,a,a); printf(“%d,%cn“,A+1,A+1);printf(“%dn“,a-A);printf(“%c %cn“,1,x1);printf(“%c %cn“,25,x15);printf(“I am “OK“n“ ); ,I am “OK“,2字符型变量,字符型变量

23、 char 占一个字节 。 存放ASCII字符集中的任何一个字符。,【例1.12】观察下面程序的运行结果。,#include main( ) char c1,c2=A,c3; int sum;c1=65; c3=101; sum=c2+30;printf(“%c,%cn“,c1,c3);printf(“%d,%dn“,c1,c3);printf(“sum=%dn“,sum); ,sum=95,(=1 82+1=65),A,A,65,65,1.5 运算符和表达式 P15,1.5.1 算术运算符和表达式 1.5.2 赋值运算符和表达式 1.5.3 逗号运算符和表达式 1.5.4 自加、自减运算符,

24、1.5.1 算术运算符和表达式 P15,+(加) -(减) *(乘) /(除) %(求余) -(求负),表达式2+3.5的值?,5.5,表达式1/2的值?,0,0.5,表达式1/2.0的值?,表达式5%2的值?,1,表达式2%5的值?,2,说明:,“%”:两侧运算量必须是整型 。 其他:若运算量都是整型,则按整型计算结果为整型 若至少有一个为实型,则先转化为双精度型后计算 结果为双精度型 数据类型的转换规则如下:,float,int,long,double,char,转,换,方,向,char,float,2算术表达式,假设a的值为5 ,写出表达式a*(6+sqrt(9.0)/2) 的求解过程。

25、,注意:,数学中的“ ”、“ ”用多层“( )” 代替。printf(“%d”,32767+1); 的运行结果是-32768,而不是32768 。,超过数据范围,【例1.13】将代数式改写成C语言算术表达式。,3.14159 * ( r * r ) / ( a + b ),1.5.2 赋值运算符和表达式 P17,1赋值运算符 =+=-=*=/=%=,2赋值表达式,i = 3*2是赋值表达式,32=6,赋值表达式的一般形式是: 变量 = 表达式,赋值表达式的值:,b = 5,b = b + 2,5,得到7,7,赋值表达式的值:,当a的值为1,b的值为2时 赋值表达式a=b 的值是 多少?,2,当

26、a的值为1,b的值为2时 赋值表达式b=a 的值是 多少?,1,赋值表达式x=(y=8)+1的值是多少?,9,赋值表达式x=y=5的值是多少?,5,注意:,赋值运算符的两边数据类型不一致时:,例如,int a; a=(int)4.5;,4赋给a,例如,int a; a=4.5;,系统可自动转换:,可人为地转换:,4赋给a,1.5.3 逗号运算符和表达式 P19,1逗号运算符 在所有运算符中优先级最低 。,,,【例1.15】逗号表达式的示例。 #include main( ) int a,b,x,y;a=(x=8,x%5); b=x=8,x%5;printf(“%d,%d,%d“,a,b,(y=2,y*3); ,2逗号表达式,运行结果3,8,6,a的值变为3,b的值变为8,1.5.4 自加、自减运算符 P20,自加 (+),自减 (-),【例1.16】编写一个使用自加、自减运算符的程序。,#include main( ) int i,j,a,b; i=j=a=b=1;+i; j+; -a; b-; printf(“%d,%d,%d,%dn“,i,j,a,b); 运行结果如下: 2,2,0,0,运算的先后顺序,自加(减) 算术运算符 赋值运算符 逗号运算符,先,后,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报