华东理工大学C程序设计(2014)_第1页
华东理工大学C程序设计(2014)_第2页
华东理工大学C程序设计(2014)_第3页
华东理工大学C程序设计(2014)_第4页
华东理工大学C程序设计(2014)_第5页
已阅读5页,还剩418页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2关于本课程的学习关于本课程的学习l 为什么要学本课程为什么要学本课程l 怎么来学习本课程怎么来学习本课程3关于本课程的学习关于本课程的学习l 为什么要学程序设计?为什么要学程序设计?4关于本课程的学习关于本课程的学习为什么要学为什么要学C C?l C C不实用?不实用?l C C落后了?落后了?l C C难学?难学?5关于本课程的学习关于本课程的学习l 怎么来学习本课程?怎么来学习本课程?6C程序设计程序设计第一章第一章C语言概述语言概述第二章第二章数据类型及基本运算数据类型及基本运算第三章第三章顺序结构程序设计顺序结构程序设计第四章第四章选择结构程序设计选择结构程序设计第五章第五章循环结构

2、程序设计循环结构程序设计第六章第六章数组数组第七章第七章函数函数第八章第八章指针指针第九章第九章结构与其他自定义类型结构与其他自定义类型第十章第十章文件文件7第一章第一章 C语言概述语言概述l 概述概述l C程序简介程序简介8概述概述l 程序设计与高级语言程序设计与高级语言l C语言的产生与发展语言的产生与发展l C语言的特点语言的特点9程序设计与高级语言程序设计与高级语言l 机器指令机器指令l 指令系统指令系统l 机器语言机器语言l 机器程序机器程序10程序设计与高级语言程序设计与高级语言l 汇编指令汇编指令l 汇编语言汇编语言l 汇编语言源程序汇编语言源程序l 汇编程序汇编程序例例11程序

3、设计与高级语言程序设计与高级语言l 程序设计语言程序设计语言l 低级语言和高级语言低级语言和高级语言l 高级语言源程序、编高级语言源程序、编译程序译程序l 集成环境集成环境例:例:TC、VC等等12C语言的产生与发展语言的产生与发展l C语言发明于语言发明于1972年年l C+发明于发明于1980年年13C语言的特点语言的特点l 语言描述简洁、灵活、高效语言描述简洁、灵活、高效l 有丰富的数据类型和运算符有丰富的数据类型和运算符l 提供了功能齐全的函数库提供了功能齐全的函数库l 具有结构化程序设计风格具有结构化程序设计风格l 具有汇编语言特征具有汇编语言特征l 具有良好的通用性和程序的可移埴性

4、具有良好的通用性和程序的可移埴性14C程序简介程序简介l C程序设计规则程序设计规则l C程序的编译与运行程序的编译与运行简单的简单的C C程序程序( (一一) )简单的简单的C C程序程序( (二二) )简单的简单的C C程序程序( (三三) )15C程序设计规则程序设计规则l 程序中使用到的一切数据都必须在程序中使用到的一切数据都必须在使用之前对其类型和存储属性加以使用之前对其类型和存储属性加以定义和说明定义和说明l 函数是函数是C程序的基本模块,它应该包程序的基本模块,它应该包括函数名、参数说明表和函数体三括函数名、参数说明表和函数体三个部分个部分16C程序设计规则程序设计规则l一行上允

5、许写多个语句,或一句语句分一行上允许写多个语句,或一句语句分写在多行上,但语句结束前必须加分号写在多行上,但语句结束前必须加分号l允许在程序中插入注释,注释行必须以允许在程序中插入注释,注释行必须以规定的符号规定的符号“/*”开头,以符号开头,以符号“*/”结结束束l书写格式自由,为提高程序的可读性,书写格式自由,为提高程序的可读性,可采用可采用“缩进缩进”方式书写方式书写17C程序的编译与运行程序的编译与运行l Cl C+l TCl VC18第第1章作业:章作业:l 利用利用printf函数打印自函数打印自己的姓名。己的姓名。将源文件将源文件hw1_1.c上上传传19第二章第二章 数据类型及

6、基本运算数据类型及基本运算l 数据的表示数据的表示l 基本数据类型及其表示基本数据类型及其表示l 算术运算符和算术表达式算术运算符和算术表达式20数据的表示数据的表示l 信息与数据的特征信息与数据的特征l 数据类型数据类型21信息与数据的特征信息与数据的特征l 信息信息l 数据数据l 数据处理数据处理22数据类型数据类型在在C语言中,数据总体上可分为语言中,数据总体上可分为l 基本类型基本类型l 构造类型构造类型l 指针类型指针类型23基本数据类型及其表示基本数据类型及其表示l 标识符、常量与变量标识符、常量与变量l 整型数据整型数据l 实型数据实型数据l 字符型数据字符型数据24标识符、常量

7、与变量标识符、常量与变量l 标识符标识符l 常量常量l 变量变量25标识符必须满足以下定义规则:标识符必须满足以下定义规则:l 必须由字母或下划线开始,由字必须由字母或下划线开始,由字母、数字和下划线组成的长度不母、数字和下划线组成的长度不超过超过32的字符串的字符串l 大、小写字母表示不同意义大、小写字母表示不同意义l 不能与不能与C关键字同名关键字同名标识符、常量与变量标识符、常量与变量有关标识符练习有关标识符练习26常量可分为:常量可分为:l 数值常量数值常量l 符号常量符号常量标识符、常量与变量标识符、常量与变量27l 符号常量符号常量l 符号常量的定义:符号常量的定义:#define

8、 l 例:例:#define PI 3.1415926#define N 50标识符、常量与变量标识符、常量与变量28l 变量变量l 规定变量在使用前必须说明规定变量在使用前必须说明l 变量的说明:变量的说明: l 例:例:int a,b,x;标识符、常量与变量标识符、常量与变量29l 在程序中,一个变量占据着一个在程序中,一个变量占据着一个实际的存储单元,变量名实际上实际的存储单元,变量名实际上是存储单元的标志,存储单元中是存储单元的标志,存储单元中的内容是变量的值。的内容是变量的值。l 允许在定义变量的同时对其赋初允许在定义变量的同时对其赋初值值标识符、常量与变量标识符、常量与变量30整型

9、数据整型数据int a,b;short c,d; long m=6;long n=j=8;unsigned long k;a=123;b=045;c=d=0 x3d8;k=0773L;简单的简单的C C程序程序( (二二) )31实型数据实型数据float a,b;double x,sum;a=29.56;b=6.8e-07;x=.33;sum=55.;错误的数据表示错误的数据表示简单的简单的C C程序程序( (三三) )32字符型数据字符型数据l 字符型常量字符型常量l 字符型常量中字母区分大小写字符型常量中字母区分大小写l 转义字符以转义字符以“”开头来标记开头来标记33字符型数据字符型数

10、据char c1,c2,c3=A;c1=98int a,b=49;c2=b; a=c1;34基本运算符和表达式基本运算符和表达式l 算术运算符和算术表达式算术运算符和算术表达式l 赋值运算符和赋值表达式赋值运算符和赋值表达式l 逗号运算符和逗号表达式逗号运算符和逗号表达式l 关系运算符和关系表达式关系运算符和关系表达式l 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式l 位运算符和位表达式位运算符和位表达式35算术运算符和算术表达式算术运算符和算术表达式l 算术运算符算术运算符简单的简单的C C程序程序( (四四) )36算术运算符和算术表达式算术运算符和算术表达式l 算术运算符的运算优先级算术

11、运算符的运算优先级和结合性和结合性37算术运算符和算术表达式算术运算符和算术表达式l 算术表达式算术表达式l 说明:说明:l 在算术表达式中没有上标和下标在算术表达式中没有上标和下标l 乘号必须用乘号必须用*表示,不能省略表示,不能省略l 括号一律使用圆括号括号一律使用圆括号38算术运算符和算术表达式算术运算符和算术表达式l 写出下列代数式的写出下列代数式的C表达式:表达式:l x是个三位数,写出取其各位数的是个三位数,写出取其各位数的表达式表达式xx212)1(loglog4xebbca101 x39算术运算符和算术表达式算术运算符和算术表达式l 自动类型转换:自动类型转换:main()fl

12、oat y,z=242.5; unsigned x=2; short s=4; y=10+b+5.7*x+z/a-s*12.5; printf(y=%f,y);40算术运算符和算术表达式算术运算符和算术表达式l 强制类型转换:强制类型转换:main()float x=4.55; printf(int)x=%d,x=%f,(int)x,x); x=8*(int)(1/2+5/(float)2);41算术运算符和算术表达式算术运算符和算术表达式例:设例:设float x,y,z;x=6/4;y=6./4;z=-6.8%4结果:结果:x的值为的值为1.0,y的值为的值为1.542算术运算符和算术表达

13、式算术运算符和算术表达式l 自增自增1、自减、自减1运算符为单目运算符运算符为单目运算符l 其有两种运算形式:前缀形式和后缀其有两种运算形式:前缀形式和后缀形式,功能不同形式,功能不同l 前缀形式的自增、自减前缀形式的自增、自减1运算的优运算的优先级高于算术运算符中的所有双目运先级高于算术运算符中的所有双目运算符算符l 其运算对象只能是变量其运算对象只能是变量(可以是实数可以是实数)43算术运算符和算术表达式算术运算符和算术表达式例:设例:设int x=5;则:则:y=+x;结果:结果:y=6,x=6y=x+;结果:结果:y=5,x=6x+;结果:结果:x=6y=x+*-x 结果:?结果:?4

14、4赋值运算符和赋值表达式赋值运算符和赋值表达式l 基本赋值运算符基本赋值运算符形式:形式:=功能:将赋值运算符右边的表达式功能:将赋值运算符右边的表达式的值赋给其左边的变量。的值赋给其左边的变量。45赋值运算符和赋值表达式赋值运算符和赋值表达式注意:注意:l 赋值号左边只能是变量赋值号左边只能是变量l 如果右边表达式类型与左边变量的如果右边表达式类型与左边变量的类型不一致,则先将右边表达式的类型不一致,则先将右边表达式的值自动转换成与左边变量相同的类值自动转换成与左边变量相同的类型,再进行赋值型,再进行赋值46赋值运算符和赋值表达式赋值运算符和赋值表达式l 复合赋值运算符复合赋值运算符形式:形

15、式:=功能:对赋值运算符左、右两边的功能:对赋值运算符左、右两边的运算对象进行指定的算术运算符运算对象进行指定的算术运算符的运算,再将运算结果赋予左边的运算,再将运算结果赋予左边的变量。的变量。47赋值运算符和赋值表达式赋值运算符和赋值表达式l a+=b;等价于等价于a=a+b;l a-=b; 等价于等价于a=a-b;l a*=b+1; 等价于等价于a=a*(b+1);l x+=3+x%(-3);设设x=1148赋值运算符和赋值表达式赋值运算符和赋值表达式l 赋值表达式赋值表达式l k=j=1;l int k,a=1,j=5;l a+=j+;l a=20+(j=7);l a=(j=9)+(k=

16、7);49逗号运算符和逗号表达式逗号运算符和逗号表达式l 逗号的用法有两种:分隔符;逗号的用法有两种:分隔符;运算符。运算符。l C允许用逗号连接表达式,双目允许用逗号连接表达式,双目运算符,运算优先级最低。运算符,运算优先级最低。a=2*6,a-4,a+15;50逗号运算符和逗号表达式逗号运算符和逗号表达式l 逗号表达式逗号表达式t=a;a=b;b=t;t=a,a=b,b=t;x=(5+5,10+10);x=?int j=5;a=(a=j+1,a+2,a+3);a=?51关系运算符和关系表达式关系运算符和关系表达式关系运算符关系运算符l 6种关系运算符:种关系运算符:、=、=(优先级高)、(

17、优先级高)、=、!=(优先级低)(优先级低)l 关系运算符优先级低于算术运算符,关系运算符优先级低于算术运算符,高于赋值运算符。高于赋值运算符。52关系运算符和关系表达式关系运算符和关系表达式l 关系表达式关系表达式fabs(x-y)y+xx!=y=z-2x=y=z-1若关系表达式成立,其值为非零,否则为零若关系表达式成立,其值为非零,否则为零53逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式逻辑运算符逻辑运算符l 3种逻辑运算符:!、种逻辑运算符:!、&、|l 运算规则运算规则l 优先级优先级54逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式l 逻辑表达式逻辑表达式例:设例:设a=1,b

18、=2,c=3(ab)&(c0)|a!a|(b=0)&(c=a)(!ab)&(c=b)&!a(a1)|(b+14)(ab)&(+c)c=?55逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式注意:注意:l 代数中的不等式代数中的不等式0 x2l 15+8l 1133|2l 1&3|3位运算实例位运算实例59运算符的优先级运算符的优先级+、-、*/、%+-=,、=!=& |!& |60第第2章作业:章作业:l 完成教材中第完成教材中第2章的全部章的全部习题,答案写在文本文件习题,答案写在文本文件hw2.txt中上传。中上传。61第三章第三

19、章 顺序结构程序设计顺序结构程序设计l 顺序结构的基本特点是构成顺序结构的基本特点是构成程序的语句都是按照其出现程序的语句都是按照其出现的顺序逐条执行的。的顺序逐条执行的。62第三章第三章 顺序结构程序设计顺序结构程序设计l 语句概述语句概述l 表达式语句表达式语句l 数据的输出数据的输出l 数据的输入数据的输入l 顺序结构程序设计举例顺序结构程序设计举例63语句概述语句概述说明:说明:l 每个语句都要用分号结尾,分号每个语句都要用分号结尾,分号是语句间的分隔符是语句间的分隔符l 声明部分的内容不是语句声明部分的内容不是语句64基本语句基本语句l 包括表达式语句、复合语句包括表达式语句、复合语

20、句和空语句和空语句65选择控制语句选择控制语句l 可以根据某个条件来控制和可以根据某个条件来控制和改变程序流向。改变程序流向。66重复控制语句重复控制语句l 这类语句可以根据某种条件这类语句可以根据某种条件控制一段程序被重复执行多控制一段程序被重复执行多次。次。67转移语句转移语句l 这类语句可以无条件地改变这类语句可以无条件地改变程序的流向。程序的流向。68表达式语句表达式语句x=y+z;x+y;i+;printf(“%d”,x);a=b=c=2;i+=5+j;69表达式语句表达式语句注意:注意:l 表达式语句和赋值语句、赋值表达表达式语句和赋值语句、赋值表达式的关系式的关系l 赋值表达式可

21、以出现在任何表达式赋值表达式可以出现在任何表达式允许出现的地方允许出现的地方l 声明变量时不能采用多重赋值形式声明变量时不能采用多重赋值形式70数据的输出数据的输出l C语言有输入、输出函数,而语言有输入、输出函数,而没有输入、输出语句。没有输入、输出语句。l include命令的格式:命令的格式:#include 或或#include “stdio.h”71putchar函数函数形式:形式:putchar ();功能:在显示器上输出功能:在显示器上输出一个一个字符字符参数:可以是字符型变量、整型变量参数:可以是字符型变量、整型变量或相应的常量或相应的常量72putchar函数函数例:使用库函

22、数例:使用库函数putchar()输出各种字符。输出各种字符。main()char ch1,ch2;int i; ch1=C;ch2=h; i=105; putchar(ch1);putchar(ch2); putchar(i);putchar(n); putchar(141);putchar(n);73printf函数函数形式:形式:printf(“”,);74printf函数函数功能:功能:l 将各输出项的值按指定的格式将各输出项的值按指定的格式显示在屏幕上显示在屏幕上printfprintf函数示例函数示例75printf函数函数参数:参数:l输出项可以是变量、常量和表达式输出项可以是变

23、量、常量和表达式l格式控制字符串中允许包含格式编辑符和原格式控制字符串中允许包含格式编辑符和原样输出的字符串样输出的字符串l格式编辑符形式:格式编辑符形式:%l格式修饰包括:标志、类型修饰、输出最小格式修饰包括:标志、类型修饰、输出最小宽度和精度等宽度和精度等76printf函数函数标志:标志:l 标志字符主要有标志字符主要有-、+等。等。77printf函数函数输出宽度:输出宽度:l 可以用十进制数限定输出数据可以用十进制数限定输出数据的位数的位数78printf函数函数精度:精度:l 对于对于float或或double类型的实型类型的实型数,可以用数,可以用“m.n”的形式指定的形式指定数

24、据的输出宽度和小数位数数据的输出宽度和小数位数79printf函数函数类型修饰:类型修饰:l 类型修饰符有类型修饰符有h和和l两种,两种,l表示输出表示输出项是长整型、无符号长整型或双精项是长整型、无符号长整型或双精度实型度实型80printf函数函数特殊字符的输出:特殊字符的输出:l 可以用可以用“”输出一个输出一个“”;用用“%”输出一个输出一个“%”81printf函数函数注意:注意:l 格式控制字符串中的格式说明格式控制字符串中的格式说明与输出项必须保持类型相同和与输出项必须保持类型相同和个数一致个数一致82数据的输入数据的输入83getchar函数函数形式:形式:getchar ()

25、;功能:从键盘上读取功能:从键盘上读取一个一个字符字符参数:不带任何参数,函数的返回值参数:不带任何参数,函数的返回值是输入字符的是输入字符的ASCII码码84getchar函数函数main()char c; c=getchar(); printf(%c:%dn,c,c);85scanf函数函数形式:形式:scanf (“”,输入项输入项1,输入项输入项2,);86scanf函数函数功能:功能:l 按指定的格式接收由键盘输入的按指定的格式接收由键盘输入的数据,并存入输入项变量所在的数据,并存入输入项变量所在的内存单元中内存单元中87scanf函数函数参数:参数:l 格式控制字符串与格式控制字符

26、串与printf函数函数类似,包含格式编辑符和原样类似,包含格式编辑符和原样输入字符输入字符l 输入项必须为地址引用,通常输入项必须为地址引用,通常由由“&”后面跟变量名组成后面跟变量名组成88scanf函数函数参数参数l 格式编辑符的形式:格式编辑符的形式:%89scanf函数函数常用的格式控制常用的格式控制l格式字符:用于规定相应输入项的输入格式格式字符:用于规定相应输入项的输入格式l输入数据宽度:输入数据宽度:scanf函数允许用十进制整函数允许用十进制整数设定输入数据的宽度,系统自动按此宽度数设定输入数据的宽度,系统自动按此宽度截取所需数据截取所需数据l类型修饰符:类型修饰符为

27、类型修饰符:类型修饰符为h和和l,分别表示,分别表示输入短整型和长整型数据(或双精度实型)输入短整型和长整型数据(或双精度实型)scanfscanf函数示例函数示例90scanf函数函数注意:注意:l对于基本类型变量,对于基本类型变量,scanf函数要求在函数要求在输入项中给出变量地址,但使用输入项中给出变量地址,但使用s格式格式输入字符串时除外输入字符串时除外l输入数据时,不允许规定精度输入数据时,不允许规定精度l输入数据时,数据与数据之间应使用分输入数据时,数据与数据之间应使用分隔符隔符91scanf函数函数注意:注意:l按原样输入的字符在键入时不能遗漏,按原样输入的字符在键入时不能遗漏,

28、否则将导致数据项与对应读入数据错位否则将导致数据项与对应读入数据错位l键入数据的类型、宽度应该与格式控制键入数据的类型、宽度应该与格式控制中给定的相一致中给定的相一致92顺序结构程序设计举例顺序结构程序设计举例l 将键盘输入的两个整数相互交换并将键盘输入的两个整数相互交换并输出交换前后的值输出交换前后的值l 将键盘输入的三位整数逆序并输出将键盘输入的三位整数逆序并输出93第第3章作业:章作业:l 完成教材中第完成教材中第3章习题章习题3.1(1) ,答案写在文,答案写在文本文件中上传。本文件中上传。l 完成教材中第完成教材中第3章习题章习题3.4 、3.7、3.8,上,上传源文件。传源文件。9

29、4第四章第四章 选择结构程序设计选择结构程序设计l C语言提供的选择结构语句语言提供的选择结构语句有有if语句和语句和switch语句语句l 由这类选择语句构成的程序由这类选择语句构成的程序称为选择结构程序。称为选择结构程序。95第四章第四章 选择结构程序设计选择结构程序设计l 条件条件l if语句语句l switch语句语句l 应用举例应用举例96条件条件l 条件就是一个表达式,若以非条件就是一个表达式,若以非零作为表达式成立,以零作为零作为表达式成立,以零作为表达式不成立,就会得到两种表达式不成立,就会得到两种可能,即可能,即“真真”或或“假假”,这,这就是条件判断。就是条件判断。“真真”

30、与与“假假”又称为逻辑值。又称为逻辑值。97关系运算关系运算关系运算符关系运算符l 6种关系运算符:种关系运算符:、=、=(优先级高)、(优先级高)、=、!=(优先级低)(优先级低)l 关系运算符优先级低于算术运算符,关系运算符优先级低于算术运算符,高于赋值运算符。高于赋值运算符。98逻辑运算逻辑运算逻辑运算符逻辑运算符l 3种逻辑运算符:!、种逻辑运算符:!、&、|l 运算规则运算规则l 优先级优先级99条件运算条件运算条件运算符条件运算符l 1个条件运算符:个条件运算符:?:l 优先级优先级100条件运算条件运算l 条件表达式条件表达式形式:形式:?:101条件运算条件运算语义:语

31、义:l 先计算表达式先计算表达式1的值,若结果为非的值,若结果为非0,则以表达式,则以表达式2的值作为整个条的值作为整个条件表达式的值;若为件表达式的值;若为0,则以表达,则以表达式式3的值作为整个表达式的值。的值作为整个表达式的值。102条件运算条件运算l 例:例:(x0)?1:-1x0?1:(xy)?x:y;103条件运算条件运算说明:说明:l 条件表达式中的表达式条件表达式中的表达式2和表达式和表达式3应该有确定的值,二者通常为同类应该有确定的值,二者通常为同类型型l 表达式表达式2和表达式和表达式3中有一个表达式中有一个表达式不会被计算。不会被计算。104if语句语句l if语句是用于

32、选择结构的控制语句是用于选择结构的控制语句,根据给定条件进行判断,语句,根据给定条件进行判断,以决定所要执行的操作。以决定所要执行的操作。105单边形式单边形式if语句语句形式:形式:if();语义:语义:l 先计算先计算“表达式表达式”的值,若结果为非的值,若结果为非0,就执行就执行“语句语句”,否则直接执行,否则直接执行if语句语句的后续语句的后续语句106单边形式单边形式if语句语句注意:注意:l if是是C语言的关键字语言的关键字l “表达式表达式”允许是任何表达式,其两允许是任何表达式,其两侧的圆括号不可少侧的圆括号不可少l “语句语句”为为if的执行块,如果其中包含的执行块,如果其

33、中包含多个语句,必须用多个语句,必须用将其括成复合语句将其括成复合语句107双边形式双边形式if语句语句形式:形式:if();else;语义:语义:l 先计算先计算“表达式表达式”的值,若结果为的值,若结果为非非0,则执行,则执行“语句语句1”;若为;若为0,则,则执行执行“语句语句2”。108双边形式双边形式if语句语句说明:说明:l else必须与必须与if语句配对使用语句配对使用l else前面的语句必须用分号结束前面的语句必须用分号结束l 虽然条件表达式和虽然条件表达式和if语句都能构语句都能构成选择结构,但条件表达式不能成选择结构,但条件表达式不能取代所有的取代所有的if语句语句10

34、9if语句的嵌套语句的嵌套l 当当if语句或语句或else语句的执行块语句的执行块中又出现中又出现if语句时,就形成了语句时,就形成了if语句的嵌套。语句的嵌套。110if语句的嵌套语句的嵌套说明:说明:l 在多层嵌套中,在多层嵌套中,C语句规定,语句规定,else总是与前面最近的没有配过对的总是与前面最近的没有配过对的if配对,与程序书写格式无关配对,与程序书写格式无关111应用举例应用举例l 编写程序,从键盘输入三个数,按编写程序,从键盘输入三个数,按从小到大的顺序依次输出。从小到大的顺序依次输出。l 编写程序,从键盘输入一个成绩,编写程序,从键盘输入一个成绩,输出其成绩等级。输出其成绩等

35、级。112switch语句语句形式:形式:switch() case :;break; case :;break; case :;break; default: ;switchswitch语句示例语句示例113switch语句语句语义:语义:l先计算先计算switch右边右边“表达式表达式”的值,并将其的值,并将其逐个与逐个与case行中的行中的“常量表达式常量表达式”的值相比的值相比较,若相等,则执行该较,若相等,则执行该case行给出的语句,行给出的语句,然后跳出然后跳出switch语句;若语句;若“表达式表达式”的值不的值不等于任何等于任何case行给出的行给出的“常量表达式常量表达式”

36、的值,的值,则转向并执行则转向并执行default行指引的语句;若没行指引的语句;若没有有default行,则直接跳出行,则直接跳出switch结构,转结构,转去执行后续语句。去执行后续语句。114switch语句语句说明:说明:lswitch是关键字,其后面用是关键字,其后面用括起来的括起来的部分是其语句体部分是其语句体lcase也是关键字,其后跟的也是关键字,其后跟的“常量表达常量表达式式”与冒号一起构成语句标号,与冒号一起构成语句标号,case与与“常量表达式常量表达式”之间必须有空格之间必须有空格115switch语句语句说明:说明:l在同一个在同一个switch语句中,语句中,“常量

37、表达式常量表达式”的值必须唯一的值必须唯一lswitch后面的后面的“表达式表达式”可以是整型、可以是整型、字符型和枚举型,但不能是实型,字符型和枚举型,但不能是实型,“表表达式达式”的值与的值与“常量表达式常量表达式”的值应保的值应保持类型一致持类型一致116switch语句语句说明:说明:ldefault行可以出现在行可以出现在switch语句体的任语句体的任何位置,也可以省略何位置,也可以省略lcase标号后面跟的语句允许是多个语句,标号后面跟的语句允许是多个语句,可以不加语句括号可以不加语句括号l一个语句也可以被多个一个语句也可以被多个case行共用行共用lbreak也是关键字,其可以

38、中止也是关键字,其可以中止switch语语句继续往下执行句继续往下执行117应用举例应用举例l 编写程序,从键盘输入编写程序,从键盘输入1到到7之间之间的一个整数,要求:输入正确则输的一个整数,要求:输入正确则输出相应的星期名称,否则输出错误出相应的星期名称,否则输出错误提示。提示。118第第4章作业:章作业:l 作业上传系统中作业上传系统中N4.doc中的习题。中的习题。l 完成教材中第完成教材中第4章习题章习题4.2 、4.4、4.7、4.9,上传源文件。上传源文件。119第五章第五章 循环结构程序设计循环结构程序设计l 循环结构是结构化程序设计的三种循环结构是结构化程序设计的三种基本结构

39、之一,它与顺序结构、选基本结构之一,它与顺序结构、选择结构一起,构成各种复杂的程序。择结构一起,构成各种复杂的程序。l 在在C语言中,用于循环结构程序设计语言中,用于循环结构程序设计的语句有:的语句有:while语句、语句、do-while语语句和句和for语句。语句。120第五章第五章 循环结构程序设计循环结构程序设计l while语句语句l do-while语句语句l for语句语句l 循环结构中的转移语句循环结构中的转移语句l 循环结构的嵌套循环结构的嵌套l 应用举例应用举例121while语句语句形式:形式:while();122while语句语句语义:语义:l 先计算圆括号中表达式的

40、值,判断先计算圆括号中表达式的值,判断其是否为其是否为0,若为非,若为非0,表示循环条,表示循环条件满足,执行循环体,如此重复,件满足,执行循环体,如此重复,直至表达式的值为直至表达式的值为0,退出,退出while循循环,执行后续语句。环,执行后续语句。123while语句语句k=4;while(k2)printf(“*”);k=k-1;printf(“k=%d”,k);124while语句语句说明:说明:l while是是C关键字,圆括号内的关键字,圆括号内的“表表达式达式”可以是任意合法的表达式可以是任意合法的表达式l 循环体只包含一句语句循环体只包含一句语句l 注意注意if语句和语句和w

41、hile语句的差别语句的差别l 循环体要有使循环结束的语句循环体要有使循环结束的语句125while语句语句实例:实例:l 求正整数求正整数n的阶乘的阶乘l 用字符打印图形用字符打印图形126do-while语句语句形式:形式:do ;while();127do-while语句语句语义:语义:l 先执行循环体一次,然后判断表先执行循环体一次,然后判断表达式是否成立,若为非达式是否成立,若为非0,表示,表示成立,就继续执行循环体,否则成立,就继续执行循环体,否则结束循环,执行结束循环,执行do-while语句的语句的后续语句。后续语句。128do-while语句语句int sum=0,i=1;d

42、o sum=sum+i;i+;while(i=5);129do-while语句语句说明:说明:l do和和while是是C关键字,圆括号内的关键字,圆括号内的“表达式表达式”可以是任意合法的表达可以是任意合法的表达式式l 循环体至少被执行一次循环体至少被执行一次l 循环体只包含一句语句循环体只包含一句语句l 循环体要有使循环结束的语句循环体要有使循环结束的语句130do-while语句语句实例:实例:l求正整数求正整数n的阶乘的阶乘l求求 或或的值的值975369753xxxxx31x73523152313112! 41! 31! 21! 111e9171513114131for语句语句形式:

43、形式:for(;) ;等价于:等价于:;while() ; ;132for语句语句语义:语义:l先计算表达式先计算表达式1的值;的值;l再计算表达式再计算表达式2的值,并判断其是否为的值,并判断其是否为0,若为,若为0,则跳出循环,执行,则跳出循环,执行for语句语句的后续语句;的后续语句;l表达式表达式2的值若为非的值若为非0,则执行循环体,则执行循环体一次,再计算表达式一次,再计算表达式3的值,转到步骤的值,转到步骤2重复执行。重复执行。133for语句语句product=1for(i=1;i5;i+) product=product*i;134for语句语句说明:说明:l for是是C关

44、键字,圆括号内的三个关键字,圆括号内的三个“表达式表达式”可以是任意合法的表可以是任意合法的表达式达式l 循环体只包含一句语句循环体只包含一句语句l 循环体要有使循环结束的语句循环体要有使循环结束的语句135for语句语句说明:说明:l for语句中的各表达式都可以省略,语句中的各表达式都可以省略,但分号间隔符不能少但分号间隔符不能少l 若表达式若表达式2省略,则循环体中必须省略,则循环体中必须有控制循环结束的有控制循环结束的break语句,否语句,否则将造成死循环则将造成死循环l 循环体可以是空语句循环体可以是空语句136for语句语句实例:实例:l求正整数求正整数n的阶乘的阶乘l求求 或或

45、的值的值975369753xxxxx31x73523152313112! 41! 31! 21! 111e9171513114137循环结构中的转移语句循环结构中的转移语句break语句语句l 形式:形式:break;l break语句只能用在语句只能用在switch语句或语句或循环语句中,当用在循环中时,其循环语句中,当用在循环中时,其功能是终止当前的循环,转向后续功能是终止当前的循环,转向后续语句执行。语句执行。138循环结构中的转移语句循环结构中的转移语句例:例:for(x=1,y=0;x5)break; printf(“y=%dn”,y);实例:实例:判断一个整数是否为素数判断一个整数

46、是否为素数139循环结构中的转移语句循环结构中的转移语句continue语句语句l 形式:形式:continue;l 该语句只能用在循环中,其功能是该语句只能用在循环中,其功能是结束本次循环,即跳过循环体中位结束本次循环,即跳过循环体中位于于continue语句后面的语句,转入语句后面的语句,转入下一次循环条件的判断与执行,并下一次循环条件的判断与执行,并不结束循环。不结束循环。140循环结构的嵌套循环结构的嵌套l 当一个循环语句的循环体中又当一个循环语句的循环体中又出现另一个循环语句时,就构出现另一个循环语句时,就构成了循环的嵌套。成了循环的嵌套。141循环结构的嵌套循环结构的嵌套注意:注意

47、:l 内循环是外循环的循环体,外内循环是外循环的循环体,外循环每执行一遍,内循环就执循环每执行一遍,内循环就执行一周行一周142应用举例应用举例l 用字符打印图形用字符打印图形(杨辉三角形杨辉三角形)l 求解百鸡问题求解百鸡问题l 输出输出2到到200之间的所有素数之间的所有素数l 求两个整数的最大公约数和最求两个整数的最大公约数和最小公倍数小公倍数143第第5章作业:章作业:l 作业上传系统中作业上传系统中N5.doc中的习题。中的习题。l 完成教材中第完成教材中第5章习题章习题5.1 、5.9,上传源文件。,上传源文件。144第六章第六章 数组数组l 例:求一个班级例:求一个班级50个学生

48、的平均个学生的平均成绩。成绩。l 如果还要找出高于平均成绩的学如果还要找出高于平均成绩的学生名单,如何实现?生名单,如何实现?145第六章第六章 数组数组l C语言支持两种构造数据类型:语言支持两种构造数据类型:数组类型和结构类型数组类型和结构类型l 构造类型的数据可分解为多个元构造类型的数据可分解为多个元素,其中每一个元素可以是基本素,其中每一个元素可以是基本类型或又是一个构造类型。作为类型或又是一个构造类型。作为构造类型的最低层元素只能是基构造类型的最低层元素只能是基本类型本类型146第六章第六章 数组数组l 数组概念的引入数组概念的引入l 数组的说明数组的说明l 数组的引用数组的引用l

49、数组的存储结构数组的存储结构l 数组的赋初值数组的赋初值l 数组应用举例数组应用举例l 字符数组与字符串处理字符数组与字符串处理147数组概念的引入数组概念的引入l 数组是个多值变量,一个数组数组是个多值变量,一个数组变量由一组同名但不同下标的变量由一组同名但不同下标的元素构成元素构成l 用数组来存储逻辑相关的数据用数组来存储逻辑相关的数据实体,程序可方便地按下标组实体,程序可方便地按下标组织循环织循环148数组概念的引入数组概念的引入l 数组包含的所有元素都具有数组包含的所有元素都具有相同名字和相同的数据类型相同名字和相同的数据类型l 用数组名和元素在数组中的用数组名和元素在数组中的序号可唯

50、一地确定某个数组序号可唯一地确定某个数组元素元素l 多维数组多维数组149数组的说明数组的说明形式:形式: 例:例:int a5,b45;float x4;150数组的说明数组的说明l 数组说明的作用是为数组预留数组说明的作用是为数组预留空间空间l 数据类型为数组的数据类型为数组的“基类型基类型”,整数整数表达式定义了数组中所含表达式定义了数组中所含元素的个数,元素的个数,运算符的个数运算符的个数决定了数组的维数。决定了数组的维数。151数组的说明数组的说明注意:注意:l 在在C语言中,数组元素的下标起语言中,数组元素的下标起始值为始值为0而不是而不是1l 下标运算符中的整数表达式代表下标运算

51、符中的整数表达式代表数组每一维的长度数组每一维的长度l 下标运算符中不允许使用变量定下标运算符中不允许使用变量定义数组长度,允许包含常量和义数组长度,允许包含常量和sizeof表达式表达式152数组的说明数组的说明#define N 50int a3+2;char cN;float dsizeof(double);double fsizeof(a);153数组的引用数组的引用形式:形式:其中:其中:“下标下标1”、“下标下标2”等为整等为整型表达式,代表了该元素在内存中型表达式,代表了该元素在内存中的排列位置。的排列位置。154数组的引用数组的引用说明:说明:l 引用下标变量时,所给出的下标引

52、用下标变量时,所给出的下标个数必须与所定义的数组维数相个数必须与所定义的数组维数相一致,而且每一个下标表达式的一致,而且每一个下标表达式的值不得超界值不得超界l 凡是数组基类型变量能使用的运凡是数组基类型变量能使用的运算,数组元素也能使用算,数组元素也能使用155一维数组遍历一维数组遍历for(i=0;in;i+)ai156二维数组遍历二维数组遍历for(i=0;in;i+) for(j=0;jm;j+) aij 157数组的赋初值数组的赋初值形式:形式: =;158数组的赋初值数组的赋初值float x4=-1.0,0.0,2.7,5.2E-8;int y32=0,1,2,3,4,5;int

53、 z32=0,1,2,3,4,5;char s6=H,e,l,l,o;或:或:char s6=“hello”;char s5=“hello”;char s4=“hello”;159数组的赋初值数组的赋初值注意:注意:l 对数组赋初值时,若初值表中常数对数组赋初值时,若初值表中常数个数少于数组元素的个数,这表示个数少于数组元素的个数,这表示仅对数组中排列靠前的元素赋初值,仅对数组中排列靠前的元素赋初值,后面元素的值自动赋后面元素的值自动赋0;若初值表;若初值表中给定的初值多于下标变量的个数,中给定的初值多于下标变量的个数,将出现编译错误将出现编译错误160数组的赋初值数组的赋初值注意:注意:l

54、C语言允许使用一维数组赋初值的语言允许使用一维数组赋初值的方法对多维数组赋初值方法对多维数组赋初值l C语言允许在数组定义时不指定维语言允许在数组定义时不指定维的长度(只能是第一维),由初值的长度(只能是第一维),由初值表中初值的个数来间接决定长度表中初值的个数来间接决定长度161数组的赋初值数组的赋初值float x=-1.0,0.0,2.7,5.2E-8;int y2=0,1,2,3,4,5;int z2=0,1,2,3,4,5;char s=“hello”162数组应用举例数组应用举例l 阅读程序写出结果:阅读程序写出结果:l 冒泡排序(选择排序)冒泡排序(选择排序)l 打印杨辉三角形打

55、印杨辉三角形数组应用数组应用163数组的存储结构数组的存储结构l 一维数组的存储结构一维数组的存储结构l 二维数组的存储结构二维数组的存储结构164数组的存储结构数组的存储结构l 数组第一个元素的存储数组第一个元素的存储地址就是整个数组的存地址就是整个数组的存储首地址,该地址放在储首地址,该地址放在数组名中数组名中l 一维数组的存储结构一维数组的存储结构165数组的存储结构数组的存储结构l 二维数组的存储结构为二维数组的存储结构为“按按行线性展开,顺序存放行线性展开,顺序存放”,即按:即按:a00,a01,a02,a10,a11,a12,l 二维数组的存储结构二维数组的存储结构166数组的存储

56、结构数组的存储结构l 比较两组程序段:比较两组程序段:for i=0 to 3 for j=0 to 4 aij=i*10+j和:和:for j=0 to 4 for i=0 to 3 aij=i*10+j167字符数组与字符串处理字符数组与字符串处理l 在在C语言中,没有标准的字符语言中,没有标准的字符串定义类型,字符串被当作字串定义类型,字符串被当作字符数组来处理。符数组来处理。168字符数组的定义字符数组的定义形式:形式:char 169字符数组的定义字符数组的定义说明说明l 字符数组中的元素只能存放一字符数组中的元素只能存放一个字符型数据个字符型数据l 与普通数组一样,字符数组也与普通

57、数组一样,字符数组也可以在定义时赋初值可以在定义时赋初值170字符数组的定义字符数组的定义char string100,cblock2020;string0=T;cblock25=h;char chr6=C,h,i,n,a;char line1100=“Shanghai”;或或char line1100=”Shanghai”;line1=“Shanghai”;171字符串的结束标记字符串的结束标记l 为了便于识别一个字符串的为了便于识别一个字符串的结尾,结尾,C语言约定,字符串语言约定,字符串的末尾以转义字符的末尾以转义字符0作为作为结束标记。结束标记。172字符串的输入与输出字符串的输入与输

58、出使用使用scanf和和printf函数输入与输出函数输入与输出main()char str80; scnaf(“%s”,str); printf(“%s”,str);173字符串的输入与输出字符串的输入与输出注意:注意:l用用%s格式输入输出字符串时,输出格式输入输出字符串时,输出项应该为项应该为字符数组名字符数组名,不能是数组,不能是数组元素名元素名l数组名是个不占实际内存的数组名是个不占实际内存的地址常地址常量量,它代表整个字符数组的存储首,它代表整个字符数组的存储首地址,本身已经是地址,不能再对地址,本身已经是地址,不能再对它加地址运算符它加地址运算符“&”174字符串的输入与

59、输出字符串的输入与输出注意:注意:l%s格式输入字符串时,遇空格字符、格式输入字符串时,遇空格字符、Tab键和回车符将自动结束输入键和回车符将自动结束输入l%s格式输出字符串,遇格式输出字符串,遇0就结束输就结束输出出l若输入字符串长度超过字符数组所定义若输入字符串长度超过字符数组所定义的长度时,将造成数组下标越界,但系的长度时,将造成数组下标越界,但系统对此不报错统对此不报错175字符串的输入与输出字符串的输入与输出使用使用gets和和puts函数输入与输出:函数输入与输出:gets函数调用形式:函数调用形式:gets();其中,其中,str_adr为字符数组名或字为字符数组名或字符指针名,

60、代表输入字符串的存储符指针名,代表输入字符串的存储起始地址。起始地址。176字符串的输入与输出字符串的输入与输出功能:功能:l 接受由键盘输入的字符串(包接受由键盘输入的字符串(包括空格符),并将它原样存储括空格符),并将它原样存储到由到由str_adr所指向的内存段所指向的内存段中,系统并不保存字符串末尾中,系统并不保存字符串末尾的换行符,而是自动将的换行符,而是自动将0作作为字符串的内容存放在串尾。为字符串的内容存放在串尾。177字符串的输入与输出字符串的输入与输出使用使用gets和和puts函数输入与输出:函数输入与输出:puts函数调用形式:函数调用形式:puts();其中,其中,str_adr为字符数组名或字为字符数组名或字符指针名,代表输出字符串的存储符指针名,代表输

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论