




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程内容:课程内容:nC语言程序设计语言程序设计任课班级:电任课班级:电4-4、5课时安排:课时安排:n理论讲解理论讲解48学时学时n上机实验上机实验24学时学时教材:教材:C程序设计程序设计 谭浩强谭浩强 清华大学出版社清华大学出版社C程序设计题解与上机指导程序设计题解与上机指导第1章 算法第2章 C语言概述第3章 数据类型、运算符与表达式第4章 顺序程序设计第5章 选择结构程序设计第6章 循环控制 第10章 指针第7章 数组 第11章 结构体与共用体第8章 函数 第12章 位运算第9章 预处理命令 第13章 文件概念概念:为了解决一个问题而采取的方法和步为了解决一个问题而采取的方法和步骤。
2、(是解决一个问题方法的精确描述)骤。(是解决一个问题方法的精确描述)数据结构数据结构 + 算法算法 = 程序程序程序程序=算法算法 + 数据结构数据结构 + 设计方法设计方法 + 语言工具语言工具 数值运算数值运算计算机算法:计算机算法: 非数值运算非数值运算 例例11:有:有A A、B B两杯,分别盛有酒和醋,要求两杯,分别盛有酒和醋,要求它们互换(需借一空杯它们互换(需借一空杯C C) ABC酒酒醋醋酒酒 A-C A-C 酒酒 B-A B-A 醋醋 C-B C-B 酒酒这就是以后经常会用到的两变量值交换的算法这就是以后经常会用到的两变量值交换的算法例例2:从十个数中挑选出最大的数来。:从十
3、个数中挑选出最大的数来。 选任意一数放入选任意一数放入A中,设一计数器中,设一计数器N=0(表示比较的次数)表示比较的次数) 将下一数与将下一数与A相比,大者放在相比,大者放在A中,且中,且N=N+1 此时须判断此时须判断N是否是否n,则停则停止循环,此时止循环,此时S中值为中值为n!。 思考:如果题目改成奇数相乘,应如何改动程思考:如果题目改成奇数相乘,应如何改动程序?序?若将的终止条件改成若将的终止条件改成TC B=A C=B 结束结束开始开始输入数输入数AN=0输入数输入数BAB?B=AN=N+1NA N=N+1 直到直到N9为止为止 打印打印A五、N-S结构流程图结构流程图 A A B
4、 B成立成立 P P 不成立不成立 A BA B当当P1P1 A A A A直到直到P2P2顺序结构顺序结构选择结构选择结构当循环当循环直到循环直到循环 A=C B=A C=B 输入输入N 1=T 1=S ST=S T+1=T 直到直到TN 输出输出S C语言是当今国际上最流行的、最有发展前途语言是当今国际上最流行的、最有发展前途的计算机高级语言,它集计算与软件开发的计算机高级语言,它集计算与软件开发于一身,即有高级语言的可读性,又有低于一身,即有高级语言的可读性,又有低级汇编语言的软件开发功能,是一种编译级汇编语言的软件开发功能,是一种编译语言语言。尽管当初尽管当初C语言是为编写语言是为编写
5、UNIX操作系统而设操作系统而设计的,但却不依赖于计的,但却不依赖于UNIX操作系统,可操作系统,可在多种操作系统的环境下运行在多种操作系统的环境下运行 。C语言的发展语言的发展年代年代 语言名称语言名称 改进功能改进功能 设计人或国家地址设计人或国家地址1960ALGOL 面向问题(远离硬件)面向问题(远离硬件)1963CPL 部分驱动硬件部分驱动硬件 英国剑桥大学英国剑桥大学1967BCPL 直接驱动硬件,但太简单直接驱动硬件,但太简单 英国剑桥大学英国剑桥大学1970B 简单、接近硬件,简单、接近硬件, 写出了第一个写出了第一个UNIX 美国贝尔实验室美国贝尔实验室1972-1973 C
6、 直接驱动硬件,功能强大直接驱动硬件,功能强大 美国贝尔实验室美国贝尔实验室C+ 面向对象面向对象VC 可视化编程可视化编程C# 基于基于.net平台上快速开发大量应用程序平台上快速开发大量应用程序 1、语言简洁、紧凑、使用方便、灵活(、语言简洁、紧凑、使用方便、灵活(32个关键字、个关键字、9种控制语句)种控制语句)2、运算符十分丰富(、运算符十分丰富(34个)个)3、数据结构丰富、数据结构丰富4、有结构化控制语句、有结构化控制语句5、语法限止不太严格,程序设计自由度大语法限止不太严格,程序设计自由度大6、允许直接访问物理地址、位操作(位操作、可直、允许直接访问物理地址、位操作(位操作、可直
7、接写汇编语句,加接写汇编语句,加asm做前缀)做前缀)7 、 生 成 目 标 代 码 质 量 高 , 程 序 执 行 效 率 高、 生 成 目 标 代 码 质 量 高 , 程 序 执 行 效 率 高(.exe、.com效率高)效率高)8、可移植性好(对于机器型号、操作系统要求不高,、可移植性好(对于机器型号、操作系统要求不高,可转换成其它语言)可转换成其它语言) 例例1:输出一句话:输出一句话 main( ) printf(“this is a C program.n”); 例例2:计算:计算123+456的值,并输出的值,并输出 main( ) int a,b,sum; a=123;b=45
8、6; sum=a+b; printf(“sum is %dn”,sum);例例3:比较两个数的大小,输出大的值比较两个数的大小,输出大的值 mian( ) int a,b,c; scanf(“%d,%d”,&a,&b); c=max(a,b); printf(“max=%d”,c); int max(int x,int y) int z; if (xy) z=x; else z=y; return(z);对子函数对子函数max()()的调用的调用max()()函函数的定义数的定义C语言的规则语言的规则1、C程序由函数构成。程序由函数构成。其中至少有一个函数其中至少有一个函数ma
9、in( )可可使用库函数(使用库函数(printf、scanf)也可以自定义函数也可以自定义函数(max)2、函数的两个组成部分:说明部分、函数体、函数的两个组成部分:说明部分、函数体说明部分:包括函数类型、名字、属性、形参、形说明部分:包括函数类型、名字、属性、形参、形参类型参类型函数体:即函数体:即 中部分,包括变量定义、执行部分中部分,包括变量定义、执行部分3、C程序总是从程序总是从main函数开始执行,不论其位置函数开始执行,不论其位置4、书写格式自由,一行可写几个语句,一个语句可写、书写格式自由,一行可写几个语句,一个语句可写在几行上。在几行上。5、每个语句间用;分隔开,最后一句也须
10、写上;、每个语句间用;分隔开,最后一句也须写上;6、输入输出也用库函数、输入输出也用库函数printf( )、scanf( )7、/*/表示注释信息表示注释信息 一、步骤一、步骤1、输入与编辑源程序、输入与编辑源程序2、编译、编译3、连接库函数、连接库函数4、运行目标程序、运行目标程序二、二、Turbo C2.0主要工作文件主要工作文件Tc.exe 集成编译器集成编译器Tcconfig.tc环境设置文件环境设置文件*.H头文件头文件*.BGI图形显示驱动程序图形显示驱动程序*.LIB 库文件库文件*.OBJ模式启动代码文件模式启动代码文件具体步骤见实际操作具体步骤见实际操作 整型(整型(int
11、) 整型整型 短整型(短整型(short) 长整型(长整型(long) 基本数据类型基本数据类型 无符号整型(无符号整型(unsigned int) 字符型(字符型(char) 实型实型 单精度型(单精度型(float)数据类型数据类型 双精度型(双精度型(double) 枚举型枚举型 数组类型数组类型 构造类型构造类型 结构体类型结构体类型 共同体类型共同体类型 指针类型指针类型 空类型空类型一、常量:在程序运行的过程中,其值不能被改变一、常量:在程序运行的过程中,其值不能被改变的量称为常量。的量称为常量。 整型常量:整型常量:12、0、-8 实型常量:实型常量:4.6、1.23、-0.9
12、字符型常量:字符型常量:a、B、#、3、= 符号常量:符号常量:#define PRICE 30 例例3.1 一般情况下这种符号常量使用大写字母表示!一般情况下这种符号常量使用大写字母表示!二、变量:在程序运行过程中,其值能被改变的量。二、变量:在程序运行过程中,其值能被改变的量。 1、每个变量都有两个特点:任一变量都有一个名字;、每个变量都有两个特点:任一变量都有一个名字;任一变量都占据一块内存单元。任一变量都占据一块内存单元。 2、变量起名原则:、变量起名原则:变量所起的名字不可与变量所起的名字不可与32个保留字重名(个保留字重名(P375上上部)部)必须以字母或下划线开头,由字母、数字或
13、下划必须以字母或下划线开头,由字母、数字或下划线组成的长度不超过线组成的长度不超过32的字符串。的字符串。应本着见名知义的原则。应本着见名知义的原则。大写字母与小写字母意义不同,被认为是两个不大写字母与小写字母意义不同,被认为是两个不同的字符。一般变量名用小写字母表示。同的字符。一般变量名用小写字母表示。15学生 二教三阶二教三阶 a4121001H变量名变量名变量地址变量地址变量值变量值 存储单元存储单元判断以下变量名是否合法:判断以下变量名是否合法: year Day #123 .com a_12 $100 _abcdef 199Y a=b 1_2_3 u-n int 3、变量要先定义后使
14、用、变量要先定义后使用要用到的变量,必须先对其进行定义,才可以要用到的变量,必须先对其进行定义,才可以使用。如果是未经定义的变量,在编译时会检使用。如果是未经定义的变量,在编译时会检查出来。会给出提示信息:查出来。会给出提示信息: undefined symbol 变量名变量名 in function main.判断以下变量名是否合法:判断以下变量名是否合法: year Day #123 .com a_12 $100 _abcdef 199Y a=b 1_2_3 u-n int 一、整型常量一、整型常量1、十进制数:、十进制数:234、-123等。每数位都可以是等。每数位都可以是0-9。2、八
15、进制数:以、八进制数:以0开头,(开头,(128)10=0200。每数位都。每数位都可以是可以是0-7。3、十六进制数:以、十六进制数:以0 x开头,(开头,(128)16=0 x80。每数每数位都可以是位都可以是0-9、A-F。二、整型变量二、整型变量1、整型量在内存中的存放形式、整型量在内存中的存放形式例如例如10、-10:10在内存中的存放形式:在内存中的存放形式:2、整型变量的分类、整型变量的分类在在C中,为了更精确描述整型数据,又进一步分为中,为了更精确描述整型数据,又进一步分为六种类型,区别主要是在表示整数的范围不同六种类型,区别主要是在表示整数的范围不同。0 0 0 0 0 0
16、0 0 0 0 0 0 1 0 1 0原码原码0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0反码反码0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0补码补码1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0原码原码1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1反码反码1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0补码补码-10在内存中的存放形式:在内存中的存放形式:Signed int 基本整型基本整型 16 -32768+32767 216Short int 短整型短整型 16 -32768+32767 216Long
17、 int 长整型长整型 32 -21亿亿+21亿亿 232Unsinged int 无符号整型无符号整型16 065535 216Unsinged short int 无符号短整型无符号短整型 16 065535 216Unsinged long int 无符号长整型无符号长整型 32 042亿亿 2323、整型变量的定义、整型变量的定义格式应为:格式应为: 变量变量1,变量,变量2,变量,变量3; 例例3.2 注:一般在函数的开头就进行定义。注:一般在函数的开头就进行定义。4、整型数据的溢出整型数据的溢出在运算的过程中,若变量的值超过该类型的范围,则在运算的过程中,若变量的值超过该类型的范围
18、,则会产生溢出。会产生溢出。 例例3.3a: 32767b: -327680 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0三、如何判断整型常量的类型。三、如何判断整型常量的类型。 要根据给定的常量的大小,符合哪个类型的范围要根据给定的常量的大小,符合哪个类型的范围就赋给哪个类型的变量。例如就赋给哪个类型的变量。例如50000 如果该常量后面加了一个字母如果该常量后面加了一个字母l或或L,则一定要认则一定要认为是为是long int型的常量,即要赋给型的常量,即要赋给long int型的变量。型的变量。例如例如432L一
19、、实型常量一、实型常量1、十进制小数:由整数部分、小数点和小数部分组成。、十进制小数:由整数部分、小数点和小数部分组成。例如:例如:1.24 -0.345 .222 -234.0 333. 0.0等等2、指数形式:由实数部分、指数形式:由实数部分、E(e)和整数部分组成。和整数部分组成。用于表示一些比较大的数值。用于表示一些比较大的数值。例如:例如:123*1022-123E22注意:注意:E之前必须要有数字,之前必须要有数字,E之后数字必须为整数。之后数字必须为整数。e12 4.4e1.5 .e5都是不合法的。都是不合法的。二、实型变量二、实型变量1、实型数据在内存中的存放形式(按指数形式)
20、、实型数据在内存中的存放形式(按指数形式)314.15926+.3141592632、实型变量的分类、实型变量的分类float 单精度单精度 32 6-7 10-37-1038double 双精度双精度 64 15-16 10-307-10308long double 长双精度长双精度 128 18-19 10-4931-1049323、实型数据的舍入误差、实型数据的舍入误差 例例3.4三、实型常量的类型三、实型常量的类型 一个实型常量赋值给一个实型变量时,只根据实一个实型常量赋值给一个实型变量时,只根据实型变量表示的有效数字的位数,在实型常量中按型变量表示的有效数字的位数,在实型常量中按从左
21、向右的方向截取数据。从左向右的方向截取数据。 一、字符型常量一、字符型常量1、在、在C语言中字符型常量是用单引号括起来的一个字语言中字符型常量是用单引号括起来的一个字符。符。 如:如:a、A、3、?、 、$等。等。2、以、以“”开头的转义字符开头的转义字符n换行换行10t横向跳格横向跳格9v竖向跳格竖向跳格b退格退格8r回车回车13f走纸换页走纸换页12反斜杠字符反斜杠字符92单引号单引号39“双引号双引号34101(65)代表字母)代表字母A,012(10)代表代表换行,换行,x20(32)代表空格字符。代表空格字符。 例如:例如:main( ) printf(“abctderftgn”);
22、 printf(“htibbjk”);结果为:结果为:f a b c g d e h j kddd1至至3位八进制数所代表的字符位八进制数所代表的字符xhh1至至2位十六进制数所代表的字符位十六进制数所代表的字符二、字符变量二、字符变量 char c1,c2; c1=a;c2=b; 在内存中占一个字节的空间在内存中占一个字节的空间三、字符数据在内存中的存储形式三、字符数据在内存中的存储形式 字符的字符的ASCII码存入内存。在内存中所有的数据码存入内存。在内存中所有的数据又是以二进制的形式存放的。例如字符又是以二进制的形式存放的。例如字符a的的ASCII码为码为97,b的的ASCII码为码为9
23、8。 C1 C2 C1 C297980110000101100010 所以使得在所以使得在C C语言有效的范围中字符数据和整型语言有效的范围中字符数据和整型数据之间通用数据之间通用 (0127)例例3.6main( )char c=130; printf(“%d,%c”,c,c);结果为:结果为:-126, 因为(因为(130)10=(10000010)2=(-126)补补四、字符串常量四、字符串常量字符串常量是由双引号括起来的字符序列。字符串常量是由双引号括起来的字符序列。如:如:“how do you do”,“CHINA”,“a”,“134323.54”每 一 个 字 符 串 的 结 尾
24、 都 有 一 个 字 符 的 结 束 标每 一 个 字 符 串 的 结 尾 都 有 一 个 字 符 的 结 束 标志:志:0,它占一个字节的宽度。,它占一个字节的宽度。在在C语言中没有变量来存放字符串常量,须用字符数语言中没有变量来存放字符串常量,须用字符数组来存放。组来存放。“a”和和a是有本质的区别的,是有本质的区别的,a在内存中只在内存中只占一个字节的宽度,而占一个字节的宽度,而“a”在内存中占两字节的在内存中占两字节的宽度。宽度。 例:例:已知字母已知字母a a的的ASCIIASCII码为十进制数码为十进制数9797,且设,且设chch为字符型变量,则表达式为字符型变量,则表达式chc
25、h=a+8-3=a+8-3的值为(的值为( )。)。 f或或102一、什么是对变量赋初值一、什么是对变量赋初值变量赋初值就是在定义变量的同时,给变量赋一个值。变量赋初值就是在定义变量的同时,给变量赋一个值。二、如何进行赋初值二、如何进行赋初值 定义的同时赋值:定义的同时赋值:float y=4.6; char z=a; 定义之后赋值:定义之后赋值:int a,b,c; a=20;b=10;c=30;三、在赋初值过程中的问题三、在赋初值过程中的问题1、int x,y,z=3;x,yx,y没有初值,其初值也不是没有初值,其初值也不是0 0,而是一个不确定的值,而是一个不确定的值 2、int a=b
26、=c=3; ()应写成应写成int a=3,b=3,c=3; 或定义或定义abcabc之后再赋值!之后再赋值!原则:在运算过程中,不同的数据类型要先转换成原则:在运算过程中,不同的数据类型要先转换成同一类型后,才能进行运算同一类型后,才能进行运算 intchar,shortunsignedlongdoublefloat低低高高 1 1、在运算中,先进行、在运算中,先进行水平方向上的转换。水平方向上的转换。 2 2、在进行了水平方向上、在进行了水平方向上的转换后,如果仍然存在的转换后,如果仍然存在不同类型的数据,就要进不同类型的数据,就要进行纵向的类型转换。行纵向的类型转换。 例如:例如:3+1
27、+0.1/3-5.3/3L(运算结果的类型和本运算结果的类型和本式子中最高级别的类型是一样的)式子中最高级别的类型是一样的) 设有说明:设有说明:char w; char w; intint x; float y; double z; x; float y; double z;则表达式则表达式w w* *x+z-yx+z-y值的数据类型为(值的数据类型为( )double一、算术运算符一、算术运算符 (+ - * / %)使用使用“/”时注意:时注意: 1/5=0,而不是,而不是0.2,但是,但是1.0/5=0.2 使用使用“%”“%”时注意:该运算符的两边只能是整型数据时注意:该运算符的两边
28、只能是整型数据二、算术表达式和算符的优先级与结合性二、算术表达式和算符的优先级与结合性1 1、算术表达式定义:、算术表达式定义:用算术运算符号和括号将运算对象(也称操作数)连用算术运算符号和括号将运算对象(也称操作数)连接起来的、符合接起来的、符合C C语法规则的式子,称为算术表达语法规则的式子,称为算术表达式。运算对象包括常量、变量、函数等。式。运算对象包括常量、变量、函数等。例如例如3+4.53+4.5* *a-ba-b* *4/3+max(c,d)4/3+max(c,d) a a* *b/c-b/c-1.5+a1.5+a2 2、优先级和结合性、优先级和结合性+ -+ -的优先级是的优先级
29、是4 4级,级,* * / % / %的优先级是的优先级是3 3级,它们的结级,它们的结合性都是从左至右的,即左结合的。合性都是从左至右的,即左结合的。三、强制类型转换运算符(优先级三、强制类型转换运算符(优先级2级,右结合)级,右结合)功能:将一个表达式转换成所需类型,其格式为:功能:将一个表达式转换成所需类型,其格式为:(类型)(表达式)(类型)(表达式) 例如:(例如:(float)x (int)x+y (int)(x+y) (double)36(float)(5%3) 注意:在强制类型转换时,要产生的是一个临时数据,注意:在强制类型转换时,要产生的是一个临时数据,这个临时数据的类型是指
30、定的类型,而原始数据的这个临时数据的类型是指定的类型,而原始数据的类型不会发生改变。类型不会发生改变。例例3.8四、自增、自减运算符(四、自增、自减运算符(+、-)+是自增运算符。是自增运算符。+k或或k+都是让变量都是让变量k的值加的值加1。-是自减运算符。是自减运算符。 -k或或k-都是让变量都是让变量k的值减的值减1。+K K含义:先使用含义:先使用K K值加上值加上1 1,再使用,再使用K K值。值。K+K+含义:先使用含义:先使用K K值,然后再将值,然后再将K K值加上值加上1 1。例如:例如: k=1; k=1;k=1; k=1; j=+k; j=k+; j=+k; j=k+;
31、k=2 j=2 k=2 j=1使用时需注意:使用时需注意:1、这两种、运算符只能用于变量,而不能用于常量、这两种、运算符只能用于变量,而不能用于常量或表达式。或表达式。2、+、-运算符的优先相同,但比算术运算符优先级运算符的优先相同,但比算术运算符优先级要高。其结合性是要高。其结合性是“从右至左从右至左”的。的。i=3; j=-i+; i=3; j=+i;p r i n t f ( “ % d , % d ” , i , j ) ; printf(“%d,%d”,i,j);结果是:结果是:4,-3 结果是:结果是:4,43 3、要避免发生歧义、要避免发生歧义i=3;i=3; i=3; i=3;
32、j=(j=(i+)+(i+)+(ii+)+(i+)+(i+); k=(+); k=(+i)+(+i)+(+ii)+(+i)+(+i););在某些在某些C C中是中是i=6 j=12 k=15i=6 j=12 k=15而在而在TCTC、MSCMSC中中i=6 j=9 k=18i=6 j=9 k=184 4、如何组合多个运算符如何组合多个运算符i+ji+j应理解为:(应理解为:(i+i+)+j+j而不是而不是i+(+ji+(+j) )5 5、注意程序的写法注意程序的写法i=3;i=3; i=3;j=i+; i=3;j=i+;p r i n t f ( “ % d , % d ” , i , ip
33、r i n t f ( “ % d , % d ” , i , i + + ) ;+ + ) ;printf(“%d,%d”,j,iprintf(“%d,%d”,j,i););结果为:结果为:4 4,3 3结果为:结果为:3 3,4 4 练习:练习:i=3;p=3;求求3+5*8%2+10/5-i+p- -的值:的值:5一、赋值运算符(优先级一、赋值运算符(优先级1414,右结合),右结合)“=”“=”就是赋值运算符。就是赋值运算符。 格式:变量格式:变量= =表达式表达式二、赋值过程中遇到的问题二、赋值过程中遇到的问题1 1、实型、实型-整型整型 舍弃小数部分舍弃小数部分 intint i=
34、3.6; / i=3.6; /* *i i中只存放整数中只存放整数3 3* */ /2 2、整型、整型-实型实型 数值不变,补足有效位数数值不变,补足有效位数 float x=3; / float x=3; /* *x x中存放中存放3.0000003.000000* */ / double y=12345;/ double y=12345;/* *y y 中存放中存放12345.000000000012345.0000000000* */ /3 3、double-float double-float 截取前面截取前面7 7位有效数字,其余舍弃位有效数字,其余舍弃 float-double f
35、loat-double 数值不变,有效位扩展到数值不变,有效位扩展到1616位位4 4、字符型、字符型-整型整型 保持数值不变且进行保持数值不变且进行 intint x=0; / x=0; /* *x x中存放整数中存放整数4848* */ / intint y= y=xFExFE / /* * y y中存放整数中存放整数-2-2* */ / 原最高位若为原最高位若为0 0则高则高8 8位全补位全补0 0,是,是1 1则高则高8 8位全补位全补1 1。5 5、int,short,longint,short,long-char -char 只保留低只保留低8 8位,截断位,截断 intint i
36、=289; char c=i;/ i=289; char c=i;/* *c c的值为的值为3333,字符为,字符为!* */ /6 6、intint-long -long 保持数值不变且进行符号扩展保持数值不变且进行符号扩展 long- long-intint 只保留低只保留低1616位,截断位,截断7 7、unsigned unsigned intint-long -long 不需按符号扩展,将高位补不需按符号扩展,将高位补0 08 8、非、非unsigned-unsigned-同样长度的同样长度的unsignedunsigned 原样赋值,连同符号位也看作是数值一起传送。原样赋值,连同符
37、号位也看作是数值一起传送。三、复合的赋值运算符(优先级三、复合的赋值运算符(优先级1414,右结合),右结合)定义:在赋值运算符之前加上其它运算符。定义:在赋值运算符之前加上其它运算符。例如:例如:x+=3x+=3相当于相当于x=x+3x=x+3 x x* *=(=(y+zy+z) )相当于相当于x=xx=x* *( (y+zy+z) )所以所以A+=BA+=B解释为:将解释为:将“A+”A+”移到移到“=”“=”右侧得到右侧得到“=“=A+B”A+B”,然后然后在左侧填上在左侧填上“A”A”就得到了就得到了“A=A+B”A=A+B”。共有共有1010种复合运算符:种复合运算符:+=+=、-=
38、-=、* *= =、/=/=、%=%=、 = =、= =、&=&=、=、|=|=四、赋值表达式四、赋值表达式格式为:格式为: a=b=c=5 /a=b=c=5 /* *a=5,b=5,c=5a=5,b=5,c=5* */ /a=5+(c=6) a=5+(c=6) / /* *a=11,c=6a=11,c=6* */ /x=(y=4)+(z=3) /x=(y=4)+(z=3) /* *x=7,y=4,z=3x=7,y=4,z=3* */ /x=(y=4)/(z=3) /x=(y=4)/(z=3) /* *x=1,y=4,z=3x=1,y=4,z=3* */ /例例1 1:x=6x
39、=6; x+=x x+=x* *=x/=3=x/=3;例例2 2:a=12a=12; a+=a-=a a+=a-=a* *a a;例例3 3:b=3b=3; printf(“%d”,aprintf(“%d”,a=b)=b);x=8x=8a=-264a=-264 输出应为输出应为3一、逗号运算符一、逗号运算符 (优先级(优先级1515,左结合),左结合) “ “,”格式为:表达式格式为:表达式1 1,表达式,表达式2 2求解过程是:先求表达式求解过程是:先求表达式1 1,再求表达式,再求表达式2 2。整个表。整个表达式的值是表达式达式的值是表达式2 2的值。的值。如:如:3 3* *3 3,4
40、4* *4 4结果应为结果应为1616。 x=8 x=8* *2,x2,x* *4 4值为:值为:64 64 x=16x=16 x=(z=5,5 x=(z=5,5* *2)2)值为:值为:10 10 z=5z=5 (x=8 (x=8* *2,x2,x* *4),x4),x* *2 2值为:值为:32 32 x=16x=16程序中并不是所有的逗号都要看成逗号运算符,尤程序中并不是所有的逗号都要看成逗号运算符,尤其是在函数调用时,各个参数是用逗号隔开的,其是在函数调用时,各个参数是用逗号隔开的,这时逗号就不是逗号运算符。这时逗号就不是逗号运算符。 如:如:printf(%d,%d,%d,x,y,z
41、printf(%d,%d,%d,x,y,z); ); C C程序程序 源程序源程序1 1 源程序源程序i i 源程序源程序n n 预编译命令预编译命令 函数函数1 1函数函数n n 说明部分说明部分 执行部分(语句)执行部分(语句)1、复合语句:用大括号括起来的一些语句。这些语、复合语句:用大括号括起来的一些语句。这些语句被看成一个整体。句被看成一个整体。例如:例如:t=x;x=y;y=t;注意:复合语句的大括号后面没有分号,如果复合语注意:复合语句的大括号后面没有分号,如果复合语句中只有一条语句,那么大括号可以省略。句中只有一条语句,那么大括号可以省略。2、控制语句:用来规定语句的执行顺序。
42、、控制语句:用来规定语句的执行顺序。if (if (条件条件) ) else else 条件语句条件语句for (for (条件条件) 循环语句循环语句while (while (条件条件) 循环语句循环语句do do while; while;循环语句循环语句continue;continue;结束本次循环语句结束本次循环语句break;break; 结束循环语句或结束结束循环语句或结束switchswitch语语句句switch(switch(表达式表达式) 多分支选择语句多分支选择语句gotogoto 标号标号; ;转向语句转向语句return(return(表达式表达式););从函数返
43、回语句从函数返回语句其中其中 表示循环体或叫内嵌语句,可以用复合语句表示循环体或叫内嵌语句,可以用复合语句来表示。来表示。3 3、函数调用语句:由一个函数调用加一个分号构成、函数调用语句:由一个函数调用加一个分号构成函数调用语句。函数调用语句。例如:例如:printf(“maxprintf(“max=%=%d”,cd”,c);); c= c=max(a,bmax(a,b););4 4、表达式语句:在任何一个表达式后加一个分号就表达式语句:在任何一个表达式后加一个分号就构成一条表达式语句。构成一条表达式语句。 例如:例如:x=3;x=3;注意:赋值表达式可以放置在任何可以放置表达式注意:赋值表达
44、式可以放置在任何可以放置表达式的地方也就是说可以放在某些语句中,而赋值语的地方也就是说可以放在某些语句中,而赋值语句只能作为一条语句单独存在。句只能作为一条语句单独存在。如:如:if (x=y)6) y=6;if (x=y)6) y=6; 若是若是if (x=y;)6) y=6;if (x=y;)6) y=6;则是错误的。则是错误的。 5 5、空语句:仅由一个分号构成的语句。空语句:仅由一个分号构成的语句。 例如:例如: ;表示这里有一条什么也不做的语句;表示这里有一条什么也不做的语句。 C C语言本身不提供输入输出语句语言本身不提供输入输出语句输入和输出操作是由函数来实现的输入和输出操作是由
45、函数来实现的在在C C语言中没提供输入和输出语句的目的是使语言中没提供输入和输出语句的目的是使C C语言编语言编译系统更简单,因为译系统更简单,因为C C语言是翻译语言,没有输入输语言是翻译语言,没有输入输出语句就避免在编译时还需处理一些硬件的问题,出语句就避免在编译时还需处理一些硬件的问题,这样增强程序的通用性,可移植性。这样增强程序的通用性,可移植性。在在C C语言函数库中有一批语言函数库中有一批“标准输入输出函数标准输入输出函数”,在不,在不同的计算机系统内都可以被调用的。同的计算机系统内都可以被调用的。P381P381在使用到在使用到C C语言库函数时,要用预编译命令语言库函数时,要用
46、预编译命令“#“#include”include”将有关的将有关的“头文件头文件”包括到用户源文件中。包括到用户源文件中。 一、一、putcharputchar( )( )(原形在原形在stdio.hstdio.h中)中)这个函数的作用是将给定的一个字符常量或一个字符这个函数的作用是将给定的一个字符常量或一个字符变量输出到终端。变量输出到终端。例如:例如:putchar(A); putchar(33); putchar(x); 这里这里x x可以是整型或字符型变量。可以是整型或字符型变量。例例4.1putchar(n);输出一个换行回车输出一个换行回车putchar(101);Aputchar
47、();putchar(015);输出回车,不换行。输出回车,不换行。二、二、getchar( ) ( (原形在原形在stdio.hstdio.h中)中)从终端输入一个字符。该函数无参数。从终端输入一个字符。该函数无参数。例如:例如:#include main() char c; c=getchar(); putchar(c);输入输入A,输出也为输出也为A。注意:输入时需键入回车后,才可处理。注意:输入时需键入回车后,才可处理。printf(“%c”,getchar();putchar(getchar(); 一、一、printfprintf( (格式输出函数格式输出函数) ) ( (原形在原形
48、在stdio.hstdio.h中)中)作用是向终端输出任意类型的数据。作用是向终端输出任意类型的数据。格式为:格式为:printfprintf( (格式控制字符串,若干表达式格式控制字符串,若干表达式) );1 1、格式控制符:、格式控制符:是用双引号括起来的字符串,是用双引号括起来的字符串,包括两包括两种信息:种信息:1 1)普通字符进行原样输出:)普通字符进行原样输出:printf(“thisprintf(“this is my book!”); is my book!”);printf(“xprintf(“x= =% %d d,y,y= =% %d d”,x,y”,x,y););2)2)
49、起格式说明作用,用来控制对应表达式的输出格式起格式说明作用,用来控制对应表达式的输出格式(必须小写)(必须小写)% %d d、%f%f、%c%c、%o%o、%x%x、%s%s、%e%e、%g%g、%、%u%u2 2、格式字符具体说明:、格式字符具体说明:1 1)% %d d格式符格式符% %d d是按实际长度进行输出。是按实际长度进行输出。printf(“xprintf(“x=%=%d,yd,y=%d”,83,35);=%d”,83,35); 结果为:结果为:x=83,y=35x=83,y=35% %mdmd是按照是按照m m指定的宽度进行输出,且数据右靠齐。如指定的宽度进行输出,且数据右靠齐
50、。如果实际宽度要大于果实际宽度要大于m m,则按数据的实际宽度进行显示输则按数据的实际宽度进行显示输出。出。x=123;y=12345;printf(“%4d,%-4d,%4d”,x,x,y);x=123;y=12345;printf(“%4d,%-4d,%4d”,x,x,y);结果为:结果为:123,123123,123, ,1234512345% %ldld是将其对应的表达式的值按照长整数方式输出。是将其对应的表达式的值按照长整数方式输出。x=76543;printf(“x=%x=76543;printf(“x=%ld,xld,x=%=%d”,x,xd”,x,x););结果为:结果为:x=
51、76543,x=11007x=76543,x=11007注意:长整型数据一定要用注意:长整型数据一定要用% %ldld的形式输出。的形式输出。% %mldmldx=76543;printf(“x=%7ldx=76543;printf(“x=%7ld,x=%4ld”,x,x);x=%4ld”,x,x);结果:结果:x=x=76543,x=7654376543,x=765432)%o2)%o格式符:以八进制数形式输出整数。输出的数不格式符:以八进制数形式输出整数。输出的数不带符号。带符号。intint a=-1;printf(“%d,%o”,a,a); a=-1;printf(“%d,%o”,a,
52、a);结果为:结果为:-1-1,17777771777777因为因为-1-1的补码形式是:的补码形式是:1111 1111 1111 11111111 1111 1111 1111,所以是,所以是177777177777同样,也可以使用同样,也可以使用l l、m m作为说明符。作为说明符。3 3)% %x x格式符:以十六进制形式输出整数。也没有负数格式符:以十六进制形式输出整数。也没有负数形式。形式。x=-1;printf(“x=%x=-1;printf(“x=%x,xx,x=%=%d”,x,xd”,x,x););结果为:结果为:FFFF,-1FFFF,-1同样,同样,% %x x也可以使用
53、也可以使用l l、m m、-l-l作为说明符。作为说明符。4 4)% %u u格式符:用来以十进制形式输出无符号数格式符:用来以十进制形式输出无符号数intint a=-2;unsigned a=-2;unsigned intint b=65535; b=65535;printf(“aprintf(“a=%=%d,%o,%x,%un”,a,a,a,ad,%o,%x,%un”,a,a,a,a););printf(“bprintf(“b=%=%d,%o,%x,%un”,b,b,b,bd,%o,%x,%un”,b,b,b,b););结果为:结果为:a=-2,177776,FFFE,65534a=-2
54、,177776,FFFE,65534 b=-1,177777,FFFF,65535 b=-1,177777,FFFF,65535其中:(其中:(-2-2)补补= =(11111111111111101111111111111110) (6553565535)补补= =(11111111111111111111111111111111)同样,同样,% %u u也可以使用也可以使用l l、m m、-l-l作为说明符。作为说明符。5 5)% %c c格式符:用来输出一个字符。格式符:用来输出一个字符。Printf(“xPrintf(“x=%=%c,yc,y=%c”,A,66);=%c”,A,66);
55、结果为:结果为:x=x=A,yA,y=B=BPrintf(“xPrintf(“x=%5c”,66);=%5c”,66);结果为:结果为:x=x=B B同样,同样,% %c c也可以使用也可以使用m m作为说明符。作为说明符。6)%6)%s s格式符:用来输出一个字符串。格式符:用来输出一个字符串。% %s s printf(“%s”,”chinaprintf(“%s”,”china”); china”); china%ms printf(“%8s”,”china”); %ms printf(“%8s”,”china”); chianchian%-ms printf(“%-8s,%s”,”chi
56、na”,”is %-ms printf(“%-8s,%s”,”china”,”is good”);good”);chinachinaisisgoodgood%m.nsprintf(“%7.2s,%.4s”,”china”,”chin%m.nsprintf(“%7.2s,%.4s”,”china”,”china”);a”);ch,chinch,chin%-%-m.nsm.ns printf(“%-5.3s”,”china”); printf(“%-5.3s”,”china”);chichi7)%7)%f f格式符:用来输出实数,以小数形式输出。格式符:用来输出实数,以小数形式输出。% %f f整
57、数部分全部输出,小数部分保留整数部分全部输出,小数部分保留6 6位,需注意有位,需注意有效位数!效位数!float x=123456.123;double y=1234567890123.456789;printf(“%f,%f”,x,yprintf(“%f,%f”,x,y););结果为:结果为:123456.125001,1234567890123.456790123456.125001,1234567890123.456790% %m.nfm.nf指定输出的数据共占指定输出的数据共占m m位,小数为位,小数为n n位。位。float f=123.456;float f=123.456;pr
58、intf(“%f,%10f,%10.2f,%.2f,%-10.2fn”,f,f,f,f,f);123.456001,123.456001,123.46,123.46,123.468 8)e e格式符:以指数形式输出实数。格式符:以指数形式输出实数。% %e e固定小数部分占固定小数部分占5 5位,整数占位,整数占1 1位,小数点占位,小数点占1 1位,位,E E占占1 1位,指数占位,指数占2 2位,指数符号占位,指数符号占1 1位。整体只占位。整体只占1111位!位!printf(“%e”,123.456);printf(“%e”,123.456);结果为:结果为:1.234561.2345
59、6e+02e+02% %m.nem.ne指定输出的数据共占指定输出的数据共占m m位,小数为位,小数为n n位。位。printf(“%e,%10e,%10.2e,%.2e,%-10.2e”,f,f,f,f,f);1 . 2 3 4 5 6 e + 0 2 , 1 . 2 3 4 5 6 e + 0 2 , 1.2e+02,1.2e+02,1.2e+029)g9)g格式符:自动选择实数输出的格式符:自动选择实数输出的f f或或g g格式格式, ,且不输出且不输出无意义的零。无意义的零。f=123.456;f=123.456;printf(“%f,%e,%g”,f,f,fprintf(“%f,%e
60、,%g”,f,f,f););结果为:结果为:123.456001,1.23456123.456001,1.23456e+02,123,456e+02,123,4561010)%格式符:作用是输出一个格式符:作用是输出一个% %printfprintf(“(“这个月的出勤率是这个月的出勤率是96%”)96%”);注意:除了注意:除了xX,eE,gGxX,eE,gG以外,都不可以使用大写,只可以外,都不可以使用大写,只可以用小写表示。其中可以使用转义字符。以用小写表示。其中可以使用转义字符。二、二、scanfscanf( )( )函数函数( (原形在原形在stdio.hstdio.h中)中)其使用格式为:其使用格式为:scanfscanf( (格式控制符,地址表列格式控制符,地址表列) ) 例如:例如:scanf(“%d%d”,&x,&yscanf(“%d%d”,&x,&y););在这个程序中,在这个程序中,& &x,&yx,&y表示变量表示变量x,yx,y的地址。的地址。& &是取地址是取地址运算符。运算符。& &x x代表变量代表变量x x在内存中的地址。在内存中的地址。在输入时在两个数据之间要用一个或多个空格分隔:在输入时在两个数据之间要用一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑企业财务核算外包合作协议
- 餐饮行业股份投资风险控制协议
- 成都市二手房买卖合同中关于交易税费承担及减免规定
- 车辆股权转让与二手车鉴定评估及过户服务协议
- 车辆抵押权解除抵押合同
- 成都市二手房买卖交易房屋交易纠纷调解合同
- 矿山开采劳务环保监管合同
- 肯德基质量管理体系构建与实施
- 管路脱出的护理
- 国际禁毒日-禁毒知识宣传教育16
- 2025年湖北省武汉市高考数学模拟试卷(附答案解析)
- 备战中考物理真题《压轴挑战》分类汇编 挑战10 作图题(光学和力学综合46题)(解析版)
- 【MOOC】跨文化交际入门-华中师范大学 中国大学慕课MOOC答案
- 道口抓拍系统施工方案
- 食堂5S管理培训
- 三星堆-巴蜀与青铜文化的见证
- 详尽的施工方案
- DB3305T 323-2024政府储备粮绿色仓储技术规范
- 二级保密资格认定办法培训
- 门禁系统施工技术方案
- 小数计算六年级练习题
评论
0/150
提交评论