1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,大学c语言教程(最有用),教材、参考书与课时安排,教材,C程序设计(第二版),谭浩强编著 清华大学出版社,参考书,C,语言程序设计教程 谭浩强 高等教育出版社,C高级实用程序设计 王士元 清华大学出版社,C程序设计试题汇编 谭浩强 清华大学出版社,课时安排,64学时,熟记C语言的基本概念,熟悉Turbo C的上机操作环境,会读、会编、会调试C程序,学习要点,熟记C语言的语法,学会算法分析与算法设计,课程目的,课程要求,课前请做好预习,保持课堂安静,头脑清醒,思维活跃,认真、独立、按时完成并提交作业,重视上机实践
2、有效利用宝贵的上机时间,第1章,C,语言概述,第2章,程序的灵魂算法,第3章,数据类型、运算符与表达式,第4章,最简单的C程序设计顺序,程序设计,第5章,选择结构,程序设计,第6章,循环控制,第7章,数组,第8章,函数,第9章,预处理命令,第10章,指针,第11章,结构体与共用体,第12章 位运算,第13章,文件,目 录,C,语言发展历史,C,语言的特点,简单的C,程序介绍,C,程序的上机步骤,第1章 C语言概述,C语言程序设计,第一章 C语言概述,1.1,C语言发展历史,程序设计语言的发展,机器语言,汇编语言,高级语言,面向过程,面向对象,CPU,指令系统,由0、1序列构成的指令码组成,如
3、10000000 加,10010000 减,用助记符号描述的指令系统,可进行地址、位操作,如 ADD A,B,编写系统软件,直接对硬件操作,可读性,移植性差,面向机器的语言,C语言程序设计,第一章 C语言概述,可读性,移植性好,编写应用程序,一般较难实现汇编语言的某些功能,如:地址和位的操作,C语言兼有高级和低级语言的功能,适合写系统软件和应用软件,又称中级语言,C,语言发展过程,产生背景,ALGOL 60CPL语言BCPLB语言,写UNIX系统,产生过程,时间:19721973,地点:美国贝尔实验室,目的:UNIX操作系统,设计人:Ken.Thompson,和Dennis.M.Ritchi
4、e,C,标准,标准C:1978年,K&R合著The C Programming Language,ANSI C:1983年,87 ANSI C:1987年,1990年国际标准的ANSI C,1994年再次修订。,C,版本,Microsoft C,或称,MS-C,Turbo C,或称,TC,C语言程序设计,第一章 C语言概述,1.2,C,语言的特点,语言简洁、紧凑、灵活,运算符丰富,数据结构、数据类型丰富,链表、树、栈,程序设计结构化、模块化,结构化控制语句:ifelse、while、switch、for,函数作为模块单位,语法不严格、程序设计自由度大,可以访问内存地址、进行位运算,生成目标代码
5、质量高,可移植性好,C语言程序设计,第一章 C语言概述,32个关键字,:,(,由系统定义,不能重作其它定义),auto break case char const,continue default do double else,enum extern float for goto,if int long register return,short signed sizeof static struct,switch typedef unsigned union void,volatile while,Turbo C扩充了11个关键字:,asm_cs_ds_es_sscdeclfar,hugei
6、nterruptnearpascal,注意:在C语言中,关键字都是小写的。,C语言程序设计,第一章 C语言概述,C语言简洁、紧凑,使用方便、灵活。,ANSI C一共只有32个关键字,见365页 附录B,9种控制语句,:,if()else,for(),while(),dowhile(),continue,break,switch,goto,return,C语言程序设计,第一章 C语言概述,C语言有 9 种控制语句,程序书写形式自由,主要用小写字母表示,压缩了一切不必要的成分。,=!=,逻辑运算符:!&|,位运算符 :|&,赋值运算符:=及其扩展,条件运算符:?:,逗号运算符:,指针运算符:*&,
7、求字节数 :sizeof,强制类型转换:(类型),分量运算符:.-,下标运算符:,其它 :()-,注意:各种运算符混合使用,其优先级与结,合方法是难点,可先预习。,C语言程序设计,第一章 C语言概述,C语言,运算符丰富(附录C),C,数,据,类,型,基本类型,构造类型,指针类型,空类型void,定义类型typedef,数值类型,字符类型char,枚举类型enum,整 型,浮点型,单精度型float,双精度型double,短整型short,长整型long,整型int,数组,结构体struct,共用体union,注释,编译预处理,主函数,语句,输出:,This is a c program.,例,
8、1.1,第一个程序,This is a c program.,y)z=x;,else z=y;,return(z);,scanf,语句中“,&a,”的含义是“,取地址,”,输入:,10,20,输出:,max=20,声明部分,定义变量,调用max函数,返回值赋给c,定义max子函数,函数值、形参x、y为整型,通过max函数将z值带回调用处,C语言格式特点,习惯用,小写,字母,大小写敏感,不使用行号,,无程序行,概念,可使用空行和空格,常用,锯齿形,书写格式,C语言程序设计,第一章 C语言概述,main(),.,.,.,.,.,.,.,main(),int i,j,sum;,sum=0;,for(
9、i=1;i10;i+),for(j=1;j10;j+),sum+=i*j;,printf(“%dn”,sum);,优秀程序员的素质之一:,使用,TAB,缩进,对齐,有足够的注释,有合适的空行,C语言结构特点,函数与主函数,程序由一个或多个函数组成,必须有且只能有一个主函数,main,(),,可以放在程序中任一位置,程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。,程序语句,C,程序由语句组成,用“,;,”作为语句终止符,注释,/*/,为注释,不能嵌套,不产生编译代码,例:/*This is the main /*of example1.1*/*/,非法,编译预处理命令,
10、C语言程序设计,第一章 C语言概述,编辑,链接,编译,执行,1.4,C,程序的上机步骤,C,程序开发步骤,file.exe,C语言程序设计,第一章 C语言概述,程序代码的录入,生成源程序,*.c,语法分析查错,翻译,生成目标程序,*.obj,与其它目标程序或库,链接装配,生成可执行,程序,*.exe,Turbo C集成开发环境,配置要求,UNIX,PC-DOS,MS-DOS,UCDOS,操作系统,硬盘容量约2M,448K RAM运行空间,安装Turbo C,创建子目录,Install,若不是可安装盘,将文件拷贝到对应的目录下,TC,*.*,INCLUDE,LIB,*.*,SYS,*.*,C语言
11、程序设计,第一章 C语言概述,进入Turbo C,D:TC,TC,.exe,主控菜单,文件操作FILE:,New,Load,Save,Write to,编辑操作EDIT:,插入/修改,块,查找/替换,编译链接,COMPILE,LINK,MAKE,执行,RUN,退出Turbo C,Alt +x,Alt+F ,Q,帮助Help,F1,Ctrl+F1,C语言程序设计,第一章 C语言概述,基本操作:,F10,-,调用主菜单,F2,-,存盘,F3,-,打开,F1,-帮助信息,Alt+F9,-Compile,Ctrl+F9,-Run,Alt+F5,-User Screen,Alt+X,-退出Tc,常用热键
12、文本编辑:,-,移动光标,PgUp,PgDn-上下翻页,Ctrl+PgUp,Ctrl+PgDn-文件首尾,Home行首 End行尾,Ddelete Insert,Bkspace,块操作,:,Ctrl+KB,-,块开始标记,Ctrl+KK,-,块结束标记,Ctrl+KC,-,块拷贝,Ctrl+KV,-,块移动,Ctrl+KY,-,块删除,Ctrl+KH,-,块隐藏,程序调试:,F8,-Step over,F7,-Trace into,F4,-Goto Cursor,Ctrl+F7,-Add Watch,Ctrl+F8,-Toggle Breakpoint,Ctrl+F2,-Program Re
13、set,窗口操作:,F5,-,窗口缩放,F6,-,窗口切换,C语言程序设计,第一章 C语言概述,课后作业,预习“题解与上机指导”一书中,P181199页的14.314.10节,P236页实验1,教材,P12:1.5、1.6、1.7、1.8,题,。,注意:有关设计程序的作业,必须经过上机调试!,C语言程序设计,第一章 C语言概述,算法的概念,简单算法举例,算法的特性,怎样表示一个算法,第2章 程序的灵魂算法,C语言程序设计,第二章 程序的灵魂算法,结构化程序设计方法,C语言程序设计,第二章 程序的灵魂算法,程序包括的内容:,数据结构:数据的类型和组织形式,算法:操作步骤的描述,Nikiklaus
14、 Wirth提出,:,程序,=,数据结构,+,算法,教材认为:,程序,=,算法,+,数据结构,+,程序设计方法,+,语言工具和环境,灵魂,加工对象,工具,C语言程序设计,第二章 程序的灵魂算法,2.1,算法的概念,为解决一个问题而采取的方法和步骤,就成为算法。例如:歌曲的乐谱,建造房子等。,算法核心是解决“做什么”和“怎么做”的问题。,P15页的例2.1,求15之积。,可以有多种方法,一般采用简单和运算步骤少的。,准确、高效,计算机算法类别,数值运算算法,非数值运算算法,C语言程序设计,第二章 程序的灵魂算法,2.2,简单算法举例,例2.1,方法1:累乘,方法2:用循环结构解决,灵活、通用。,
15、例2.2,通过循环选择打印,例2.3,判断闰年,例2.4,累加求级数的和,循环改变正负号和分母加1。,例2.5,判断素数,课后认真思考,加深什么是算法的概念,C语言程序设计,第二章 程序的灵魂算法,2.3,算法的特性,有穷性在合理范围内可完成,确定性无歧义性,有零个或多个输入从外界得到信息,有一个或多个输出问题的答案,有效性每步有确定的结果,C语言程序设计,第二章 程序的灵魂算法,2.4,怎样表示一个算法,自然语言表示,2.2节例。易懂,文字冗长,易歧义性,流程图表示,用流程图符号构成,直观,易懂,N-S,流程图表示,伪代码表示,计算机语言表示,顺序结构,选择结构,循环结构,C语言程序设计,第
16、二章 程序的灵魂算法,传统流程图流向混乱、可读性差,所以应该采用结构化流程图。,结构化程序设计,基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(,goto,),结构化程序:由三种基本结构反复嵌套构成的程序,优点:结构清晰,易读,提高程序设计质量和效率,三种基本结构,顺序结构,A,B,A,B,流程图,N-S,图,C语言程序设计,第二章 程序的灵魂算法,P,A,B,真,假,P,B,A,真,假,选择结构,A1,A2,Ai,An,k=k2,k=k1,k=kn,k=ki,.,.,二分支选择结构,多分支选择结构,C语言程序设计,第二章 程序的灵魂算法,循环结构,当型循环结构,直到型循环
17、结构,P,A,假,真,当P,为真,A,A,P,真,假,A,直到P,为真,注:A,B,A1.An,可以是一个简单语句,也可以是一个基本结构,C语言程序设计,第二章 程序的灵魂算法,三种基本结构的共同特点:,只有一个入口;,只有一个出口;,结构内的每一部分都有机会被执行到;,结构内不存在“死循环”。,C语言程序设计,第二章 程序的灵魂算法,2.5,结构化程序设计方法,结构化程序:用三种基本结构组成的程序,基本设计思路:,复杂问题分解成 几个最基本问题,再分别处理。,采用的方法:,自顶向下;,逐步细化;,模块化设计:复杂问题按功能分成多个子模块,结构化编码:正确采用三种基本结构实现,C语言程序设计,
18、第二章 程序的灵魂算法,课后作业,P36页习题:,2.4、2.8,(结合实验指导读懂答案),用,N-S,图表示,2.4,题中,用传统流程图求解以下问题:将一个,16,进制数转化为,10,进制数,复习二进制的基本概念,“计算机文化基础”一书中P2733页,第3章 数据类型、运算符与表达式,C语言程序设计,第三章 程序的灵魂算法,C的数据类型,常量与变量,整型数据,实型数据,字符型数据,变量赋初值,各种数值型数据间的混合运算,算术运算符和算术表达式,赋值运算符和赋值表达式,逗号运算符和逗号表达式,C语言程序设计,第三章 程序的灵魂算法,3.1,C,的数据类型,C,数,据,类,型,基本类型,构造类型
19、指针类型,空类型 void,字符型 char,整 型,实 型(浮点型),单精度型 float,双精度型 double,数组类型,结构体类型,共用体类型,短整型 short,长整型 long,整型 int,枚举类型 enum,数据类型决定:,1.数据占内存字节数,2.数据取值范围,3.可以进行的操作,C语言程序设计,第三章 程序的灵魂算法,常量和符号常量,定义:程序运行过程中,其值不能被改变的量(常数),分类:直接常量、,符号常量,3.2,常量与变量,类型,示例,整型常量,12、0、-3,实型常量,4.6、-1.23,字符常量,a、b,符号常量,PRICE、PAI,C语言程序设计,第三章 程序
20、的灵魂算法,符号常量:用,标识符,代表常量,一般用大写字母:,PRICE、PI,定义格式:,#define,符号常量 常量,其值在作用域内不能改变和再赋值。,例3.1 符号常量举例,#define PRICE 30,#include,void main(),int num,total;,num=10;,total=num*PRICE;,printf(total=%dn,total);,total=300,运行结果:,符号常量的优点是:,见名知意、一改全改,C语言程序设计,第三章 程序的灵魂算法,变量,定义:其值可以改变的量。,定义格式:,数据类型 变量名;,变量应该有名字,并在内存中占据一定的
21、存储单元。,变量名和变量值有不同的含义,变量名实为一个符号地址,a,3,例 变量的使用,main(),int a;,a=3;,printf(“a=%d,a);,变量名,变量值,存储单元,C语言程序设计,第三章 程序的灵魂算法,标识符,定义:标识变量名、符号常量名、函数名、数组名、,文件名的字符串序列,名字,。,命名规则:,只能由,字母、数字、下划线,组成,且,第一个字符必须是字母或下划线,大小写字母含义不同,一般用,小写,不能使用,关键字,TC,允许最长,32,个字符,建议长度不超过,8,个字符,使用:,先定义、后使用,标识符应该,“,见名知意,”,如 total,max,标识符应该,“,不宜
22、混淆,”,如 l与1,O与0,这些标识符合法吗?,1A、M.D.John、¥123、#33、,Tatol、int、max,C语言程序设计,第三章 程序的灵魂算法,3.3,整型数据,整型常量(整常数)的三种表示方法,十进制整数:由数字,09,和正负号表示.,如 123,-456,0,八进制整数:由数字,0,开头,后跟数字,07,表示.,如,0,123,0,11,十六进制整数:由,0 x,开头,后跟,09,af,AF,表示.,如,0 x,123,0 x,ff,C语言程序设计,第三章 程序的灵魂算法,补充知识:,字节和位,内存以字节为单元组成,每个字节有一个地址,一个字节一般由,8,个二进制位组成,
23、每个二进位的值是,0,或,1,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,8,9,10,.,7,6,4,3,2,5,1,C语言程序设计,第三章 程序的灵魂算法,数值的表示方法,原码、反码和补码,原码:最高位为符号位,其余各位为数值本身的绝对值,反码:,正数:反码与原码相同,负数:符号位为,1,,其余位对原码取反,补码:,正数:原码、反码、补码相同,负数:最高位为,1,,其余位为原码取反,再对整个数加,1,3,12,6,9,1,2,4,5,7,8,10,11,9-5=4,9+7=16=(14),12,C语言程序设计,第三章 程序的灵魂算法,原码,反码,补码,+7,000001
24、11,00000111,00000111,-7,1,0000111,1,1111000,1,1111001,+0,00000000,00000000,00000000,-0,10000000,11111111,00000000,数的范围,01111111,11111111,(-127+127),01111111,10000000,(-127+127),01111111,10000000,(-128+127),(用一字节表示数),负数补码转换成十进制数:最高位不动,其余位取反加1,例 补码:11111001,取反:10000110,加1:10000111=-7,C语言程序设计,第三章 程序的灵魂
25、算法,整型变量,整型数据在内存中的存放形式,数据在内存中以二进制补码形式存放,每一个整型变量在内存中占2个字节,10,的原码,反码,补码,-10,的原码,取绝对值,反码,补码,0,0 00 00 00 00 00 10 10,0,0 00 00 00 00 00 10 10,0,0 00 00 00 00 00 10 10,1,0 00 00 00 00 00 10 10,0,0 00 00 00 00 00 10 10,1,1 11 11 11 11 11 01 01,1,1 11 11 11 11 11 01 10,整数的最左二进制位是符号位,0正、1负,C语言程序设计,第三章 程序的灵魂
26、算法,整型变量的分类,三类整型变量,有符号,无符号,基本型(简称整型),int,unsigned int,短整型,short,或,short int,unsigned short,长整型,long,或,long int,unsigned long,整数类型和取值范围,TURBO C,所占位数,最小取值范围,int,16,-32768+32767,short,16,-32768+32767,long,32,-,2147483648+2147483647,unsigned int,16,065535,unsigned short,16,065535,unsigned long,32,0429496
27、7295,C语言程序设计,第三章 程序的灵魂算法,整型变量的定义,先定义后使用强制类型定义,int a,b;(指定变量a、b为整型),unsigned short c,d;(指定变量c、d为无符号短整型),long e,f;(指定变量e、f为长整型),0,0 00 00 00 00 00 11 01,00 00 00 00 00 00 00 00,00 00 00 00 00 00 11 01,0,0 00 00 00 00 00 11 01,0,0 00 00 00 00 00 00 00,00 00 00 00 00 00 11 01,00 00 00 00 00 00 11 01,00
28、00 00 00 00 00 11 01,int 型,short 型,long 型,unsigned int 型,unsigned int 型,unsigned long 型,符号位,例3.2,整型变量的定义与使用,#include,void main(),int a,b,c,d;,unsigned u;,a=12;b=-24;u=10;,c=a+u;d=b+u;,printf(“a+u=%d,b+u=%dn,c,d);,指定abcd为整型变量,指定u为无符号整型变量,定义放在函数开头的声明部分,作用域,不同类型混合运算,类型自动转换,结果:,a+u=22,b+u=-14,定义与赋值同时进行:
29、int a=12;,C语言程序设计,第三章 程序的灵魂算法,整型数据的溢出,此情况称为“,溢出,”,运行时不报错,,编程时要注意,0,1 11 11 11 11 11 11 11,整型变量最大值32767,1,0 00 00 00 00 00 00 00,加1后是 32768的补码形式,例3.3,整型数据的溢出,#include,void main(),int a,b;,a=32767;,b=a+1;,printf(%d,%d n,a,b);,32767,-32768,运行结果:,改为:long b;,结果是什么?,C语言程序设计,第三章 程序的灵魂算法,整型常量的类型,整型常量的值在-32
30、768+32767范围内,编译器认为是int类型,整型常量的值超过上述范围,而在2147483648 +2147483647范围内,编译器认为是long类型,当系统定义short int与int占内存长度相同,则两种类型常量均可以赋给 int和short int型变量,在整型常量后面加大写L或小写l,则告诉编译器,把该整型常量作为long类型处理。例:123L、0L,在整型常量后面加u,则按无符号整型方式存放,负数转换成补码再按无符号整型方式存放。,C语言程序设计,第三章 程序的灵魂算法,3.4,浮点型数据,浮点型常量的表示方法,浮点数(,float,)又称为实数(,real,),两种表示方法
31、十进制小数形式:,必须有小数点,如 0.123、.123、123.0、0.0、123.,指数形式:,e,或E之前后必须有数字;指数必须为整数,如 123.456e0、12.3456e1、1.23456e2、,0.123456e3、0.0123456e4 等,规范化指数形式,只有一位非零整数的指数形式,是指数的输出形式,6.28e-2,表示,6.28,10,-2,-3.0824e4,表示,3.0824,10,4,C语言程序设计,第三章 程序的灵魂算法,浮点型变量,浮点型数据在内存中的存放形式,浮点型数据在内存中占4个字节(32位),在内存中分成3部分,指数为2的幂次,+,.314159 1,
32、数符,小数部分,指数,浮点型变量的分类,单精度,float,32,位,67,双精度,double,型,64,位,1516,长双精度long double型,128,位,1819,类,型,位数,有效数字,float x,y;(指定x、y为单精度浮点型变量),double z;(指定z为双精度浮点型变量),long double t;,(指定t为长双精度浮点型变量),C语言程序设计,第三章 程序的灵魂算法,浮点型数据的舍入误差,数据超过有效位数,则产生误差,要避免一个很大的数与一个很小的数加减,例3.4,浮点型数据的舍入误差,#include,void main(),float a,b;,a=12
33、3456.789e5;,b=a+20;,printf(%f n,b);,舍入误差使1.0/3*3,的结果并不等于,1!,12345678848.000000,运行结果:,浮点型常量的类型,浮点型常量一般按双精度64位处理,数后加F或f按单精度,浮点型常量不分,float和double,C语言程序设计,第三章 程序的灵魂算法,3.5,字符型数据,字符常量,定义:用,单引号,括起来的,单个,字符,或,转义字符,字符常量的,值,:该字符的,ASCII,码值,定义格式:,char 变量名=值,转义字符,:反斜线后面跟一个字符或一个代码值表示,如 a A n t,如 a97,A65,n10,t9,cha
34、r ch=65 与 char ch=,A 与char=101是等效的,C语言程序设计,第三章 程序的灵魂算法,表3.3 转义字符及其含义,转义字符,含义,n,v,r,a,ddd,t,b,f,“,xhh,转义字符,含义,换行,垂直制表,回车(不换行),响铃,单引号,3位8进制数代表的字符,水平制表(右移8格),退格,换页,反斜线,双引号,2位16进制数代表的字符,例3.5 转义字符的使用,#include,void main(),printf(“ab c,t,de,r,f,t,g,n,”);,printf(“h,t,i,bb,j k”);,f gde,h j k,显示结果:,打印结果:,fab
35、gde,h jik,C语言程序设计,第三章 程序的灵魂算法,字符变量,存放字符常量,占用一个字节,存放,一个,字符,定义形式:赋值:,char c1,c2;c1=a;c2=b;,字符数据在内存中的存储形式及其使用方法,以二进制存放字符的ASCII码值(0255整数),与整数的存储形式类似,以字符或整数形式输出,例3.6,向字符变量赋整数,#include,void main(),char c1,c2;,c1=97;,c2=98;,printf(“%c%c n,c1,c2);,printf(“%d%d n,c1,c2);,a b,97 98,运行结果:,输出形式取决于,printf,函数中的格式
36、符,格式符为,“,%c,”,时输出的变量值为,字符,格式符为,“,%d,时输出的变量值为,整数,C语言程序设计,第三章 程序的灵魂算法,对字符数据进行算术运算,实质是对其ASCII值进行算术运算,例3.7 大小写字母的转换,#include,void main(),char c1,c2;,c1=a;,c2=b;,c1=c1-32;,c2=c2-32;,printf(“%c%c,c1,c2);,A B,运行结果:,字符型与整型间互相赋值,例:互相赋值,#include,void main(),int c1;,char c2;,c1=a;,c2=98;,c1=c1-32;,c2=c2-32;,pr
37、intf(“%c%c,c1,c2);,小写字母比大写字母的ASCII码大(32),10,C语言程序设计,第三章 程序的灵魂算法,字符串常量,定义:用双引号(,“”,)括起来的字符序列,“How do you do”,“CHINA”,“a”,“$123.45”,存储:,每个字符串尾,自动,加一个,0,作为字符串结束标志,h e l l o,0,例 字符串“hello”,在内存中,例,空串 “”,0,字符常量与字符串常量不同,a,a 0,例,a,“a”,例:char ch;,ch=“A”;,例:char ch;,ch=A;,没有字符串变量,,只能用字符数组存放,C语言程序设计,第三章 程序的灵魂算
38、法,3.6,变量赋初值,变量的使用:,先定义,后使用,变量定义位置:,一般,放在函数开头,变量初始化:可以在定义时赋初值,例:,int a=1,b=-3,c;,float data=3.67;,char ch=A;,int x=1,y=1,z=1;,int x=y=1;(,),编译程序根据变量定义为其,分配指定字节的内存单元,.,地址,int a=1,b=-3,c;,a,b,c,2字节,2字节,2字节,地址,地址,.,内存,1,-3,随机数,错!,int a=b=c=3,C语言程序设计,第三章 程序的灵魂算法,3.7,各类数值型数据间的混合运算,整型、实型、字符型数据间可以混合运算,自动转换,
39、什么情况下发生,运算转换,-不同类型数据混合运算时,赋值转换,-把一个值赋给与其类型不同的变量时,输出转换,-输出时转换成指定的输出格式,函数调用转换,-实参与形参类型不一致时转换,运算转换规则:,不同类型数据运算时先,自动,转换成同一类型,C语言程序设计,第三章 程序的灵魂算法,double,float,long,unsigned,int,char,short,低,高,说明:,必定的转换,运算对象类型不同时转换,例,char ch;,int i;,float f;,double d;,ch/i +f*d -(f+i),int,int,double,double,double,double,d
40、ouble,double,int,int,double,double,double,double,double,double,10+a +i*f -d/l,例,int i;,float f;,double d;,long l;,C语言程序设计,第三章 程序的灵魂算法,强制转换(见P56强制类型转换运算符部分),一般形式:,(,类型名,),(,表达式),例:(int)(x+y),(int)x+y,(double)(3/2),(int)3.6,说明:强制转换得到,所需类型的中间变量,,原变量类型不变,例3.8,#include,main(),float x;,int i;,x=3.6;,i=(in
41、t)x;,printf(“x=%f,i=%d”,x,i);,结果:x=3.600000,i=3,精度损失问题,较高类型向较低类型转换时可能发生,强制类型转换运算符,表达式仅一个变量时,括号可以省略,C语言程序设计,第三章 程序的灵魂算法,3.8 算术,运算符和算术表达式,C,运,算,符,算术运算符:(+-*/%+-),关系运算符:(=!=),逻辑运算符:(!&|),位运算符 :(|&),赋值运算符:(=及其扩展),条件运算符:(?:),逗号运算符:(,),指针运算符:(*&),求字节数 :(sizeof),强制类型转换:(类型),分量运算符:(.-),下标运算符:(),其它 :(()-),学习
42、运算符应注意:,运算符功能,与运算量关系,要求运算量个数,要求运算量类型,运算符优先级别,结合方向,结果的类型,C语言程序设计,第三章 程序的灵魂算法,算术运算符和算术表达式,基本算术运算符:,+,-,*/%,结合方向:从左向右,优先级:,-,-,*/%,-,+-,(2)(3)(4),说明:,“-”可为,单目,运算符时,右结合性,两整数相除,结果为整数,%要求两侧均为整型数据,+-*/运算的两个数中有一个数为实数,结果是double型,例 5/2 =,-5/2.0 =,例 5%2 =,-5%2 =,1%10 =,5%1 =,5.5%2,例 5/2 =,2,-5/2.0=,-2.5,例 5%2
43、1,-5%2 =,-1,1%10 =,1,5%1 =,0,5.5%2,(,),C语言程序设计,第三章 程序的灵魂算法,自增、自减运算符,+,作用:使变量值加1或减1,种类:,前置 +i,-i (,先执行i,+1,或i-1,,,再使用i值),后置 i+,i-(先使用i值,再执行i,+1,或i-1,),例j=3;k=+j;,j=3;k=j+;,j=3;printf(“%d”,+j);,j=3;printf(“%d”,j+);,a=3;b=5;c=(+a)*b;,a=3;b=5;c=(a+)*b;,/k=4,j=4,/k=3,j=4,/4,j=4,/3,j=4,/c=20,a=4,/c=15,a
44、4,C语言程序设计,第三章 程序的灵魂算法,几点说明:,例,-i+,i=3;printf(“%d”,-i+);,-(i+),/-3,+-不能用于常量和表达式,如,5+,(a+b)+,+-,结合方向:,自右向左,优先级:,-+-*/%-+-,(2)(3)(4),该运算符常用于循环语句中,使循环变量加减1,有关表达式使用中的问题说明,不同系统对运算符和表达式的处理次序不同,尽可能写通用性强的语句,不要写有歧义和不知系统如何执行的程序,C语言程序设计,第三章 程序的灵魂算法,3.9,赋值运算符和赋值表达式,简单赋值运算符,符号:=,格式:,变量标识符=表达式,作用:将一个数据(常量或表达式)赋给一
45、个变量,左侧必须是变量,不能是常量或表达式,例 a=3;d=func();c=d+2;,例,3=x-2*y;a+b=3;,(),C语言程序设计,第三章 程序的灵魂算法,赋值表达式,形式:,赋值表达式的值与变量值相等,且可嵌套,例:a=b=c=5,a=(b=5),a=5+(c=6),a=(b=4)+(c=6),a=(b=10)/(c=2),/,表达式值为5,a,b,c值为5,/b=5;a=5,/,表达式值11,c=6,a=11,/,表达式值,10,,a=10,b=4,c=6,/,表达式值,5,,a=5,b=10,c=2,C语言程序设计,第三章 程序的灵魂算法,3.10,逗号运算符和逗号表达式,形
46、式:,表达式1,表达式2,表达式n,结合性:从左向右,优先级:,15,,级别最低,逗号表达式,的值:等于表达式n的值,用途:常用于循环for语句中,例 a=3*5,a*4,a=3*5,a*4,a+5,例 x=(a=3,6*3),x=a=3,6*a,例 a=1;b=2;c=3;,printf(“%d,%d,%d”,a,b,c);,printf(“%d,%d,%d”,(a,b,c),b,c);,/a=15,表达式值60,/a=15,表达式值20,/,赋值表达式,表达式值18,x=18,/,逗号表达式,表达式值18,x=3,/1,2,3,/3,2,3,C语言程序设计,第三章 程序的灵魂算法,例:逗号
47、表达式使用,main(),int x,y=7;,float z=4;,x=(y=y+6,y/z);,printf(x=%dn,x);,X=3,运行结果:,本章的内容散乱而复杂,但却是程序设计的基础,要认真看书,通过编程序才可以深入理解。,C语言程序设计,第三章 程序的灵魂算法,课后作业,P6668,页习题:,3.2,3.5,(思考),3.3,3.4,3.9,3.12,(写出答案),3.6,3.10,(上机验证),上机:实验教材:实验2(做好上机准备),预习第四、第五章,第4章 最简单的C程序设计顺序程序设计,C语言程序设计,第四章 顺序程序设计,C语言概述,赋值语句,数据输入输出的概念及在C语
48、言中的实现,字符数据的输入输出,格式输入与输出,顺序结构程序设计举例,4.1,C,语句概述,C程序结构:,一个C程序可以由多个源程序文件构成,一个源程序文件由若干函数、预编译命令及全局变量声明部分构成,函数包括数据定义部分和执行部分,执行部分是C语言语句,完成对数据的操作,C语言程序设计,第四章 顺序程序设计,C语句分为5类,控制语句:共9种,完成一定的控制功能,这些语句能够根据一定的测试条件决定某些语句是否被执行,如分支、循环、跳转等语句。,C语言程序设计,第四章 顺序程序设计,if()else,(条件语句),for(),while(),(循环语句),dowhile(),continue,(
49、结束本次循环语句),switch,(多分支选择语句),break,(终止switch或循环语句),goto,(转向语句),return,(从函数返回语句),C语言程序设计,第四章 顺序程序设计,空语句:只有一个“,;,”,什么也不做,表达式语句:由表达式加“,;,”组成,典型的是赋值语句,由赋值表达式加分号构成,如:y=x+1是表达式,而y=x+1;则是赋值语句。实际上函数调用语句也属于表达式语句。,函数调用语句:由函数加“,;,”组成,printf(“This is a C program”);,a=3;,i+;,for(i=0;i100;i+),;,复合语句:,用 括起来的一组语句,也称作
50、程序块。,一般形式:,C语言程序设计,第四章 顺序程序设计,int i=0,sum=0;,while(i=100),sum=sum+i;,i=i+1;,说明,复合语句“,”后不加分号,语法上和其它语句相同,复合语句可嵌套,4.2,赋值语句,基本格式:,赋值表达式+;,赋值表达式可以包含在其它表达式中,而赋值语句不可以。,C语言程序设计,第四章 顺序程序设计,例:if(a=b)0)t=a;,不可写为:if(a=b;)0)t=a;,C语言程序设计,第四章 顺序程序设计,表达式中允许出现运算符号、变量、数值、函数,序号,语句,含义,右侧表达式包括,1,a=5,常量,5,i=0 x30+255,十进制






