《C程序设计》PPT课件_第1页
《C程序设计》PPT课件_第2页
《C程序设计》PPT课件_第3页
《C程序设计》PPT课件_第4页
《C程序设计》PPT课件_第5页
已阅读5页,还剩320页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言程序设计,约法五章,一. 衣帽不整不进课堂 二. 坐姿端正不打瞌睡 三. 关掉一切通讯工具 四. 认真听课做好笔记 五. 完成作业绝不拖欠,第1章 引言 1.1 概述 1.2 C语言的开发周期 1.3 使用Visual C+开发C语言程序的步骤,【内容摘要】 (1)知识点:程序的概念;程序设计语言发展过程;C程序的基本框架;C程序的开发周期;Visual C+开发C程序的步骤。 (2)难点:熟练掌握C程序的开发环境,1.1 概 述 1.1.1 理解程序 程序:用计算机命令实现某种算法的过程 【 例1.1】一个学生上课的行为描述 查课表准备上课工具去教室听课下课 这是一个:顺序的执行过程

2、【例1.2】图书馆借书 去图书馆上机索引需要图书有则选之、无则另选或干脆不借办理借阅手续离开图书馆 这是一个:条件执行过程,【例1.3】一个简单的C语言程序:求两个给定整数的和,#include main() int a,b,sum; a=2; b=3; sum=a+b; printf(“then sum of %d+%d is %dn” ;a,b,sum); return 0; ,/头文件 /函数开头语句,函数体,变量说明语句,执行语句,退出语句,C语言程序的基本格式规定: 1. 程序由函数组成,函数是具有特定功能的模块。 每个C程序都必须有一个且仅有一个起始函数main()。 2.函数由函

3、数头和函数体组成。 main() /*函数头*/ 变量说明; 语句; 3. 语句以“;”结束 4. 注释:/*/ 或:/ 5.预处理命令:#include包含有关头文件的信息 6.严格区分大小写,1.1.2 程序设计与程序设计语言 程序与程序设计 1. 冯.诺依曼计算机的特点 1)二进制; 2)存储程序和程序控制。 (1)指令(Instruction):能被计算机直接识别并执行的指示计算机进行某种操作的命令。 (2)程序(Program):为使计算机解决某个问题而写出的一系列指令的序列。 (A)程序设计(编程)(Programming):编写程序的过程 (B)程序设计语言(Program La

4、nguage):编写程序是所采用的语言,二.程序设计语言的发展阶段 1.机器语言: 采用计算机指令格式并以二进制编码表达各种操作的语言。 特点:无二异性、代码质量高、执行速度快、占存储空间少 缺点:难写难读难记难改交流;与机器相关不通用; 2. 汇编语言:用符号表达机器指令功能的语言 特点:具有机器语言的特点;易写易读易记易改易交流 缺点:与机器相关不通用;必须翻译 3.高级语言:接近于人类自然语言和数学表达式的编程语言 表达能力更强,易于处理更为复杂的问题 独立于机器,方便通用、易于推广 分类:面向过程、面向对象 4. 第四带语言4GL(the 4th Generation Language

5、)非过程化语言。如数据库查询语言SQL等,特点:一条语句一般可编译成3050条及其指令,编程效率高,适用于管理信息系统编码,程序更容易理解、维护。 1.1.3 C语言的发展历史 1.2 C语言程序的开发过程 1. 分析问题,确定解决方案(算法) 2. 用程序语言描述算法使用编辑器编写源代码。扩展名:.c 3. 使用编译器编译源程序,生成目标码.obj 4.使用连接器连接目标码生成可执行文件.exe 5.调试运行。 周而复始,分析问题,编写源程序,调试运行,连接程序,编译程序,结束,1.3 使用Visual C+语言开发C程序步骤 1. 3.1 VC+6.0的集成开发环境简介,1.3.2 创建一

6、个C程序步骤 1. 启动VC+ 2. 输入和编辑源程序 (1)创建新程序 S1:打开“新建”对话框:“文件”“新建” 或【Ctrl+N】 S2:“文件”“C+ Source File” S3: 设置源文件保存路径:在“位置”的文本框: 使用缺省路径:不用改变文本框内容; 使用指定路径:改变; 选择已有路径:使用【】 S4:设置文件名:使用“文件名”的文本框 注意事项: 文件名后一定要带扩展名:.c;缺省扩展名:.cpp,(2)打开老程序 S1:打开“打开”对话框:“文件”“打开” 或【Ctrl+O】; 或使用工具栏的【打开】 S2:打开文件 双击选定的源程序文件; 或单击源文件进行选定,【打开

7、】 (3)文件存盘 保存在原处:“文件”“保存” 或【Ctrl+S】; 或使用工具栏的【保存】 保存在别处:“文件”“另存为” 3. 编译源程序 方法1:“组建”“编译XXX.c项” 方法2:工具栏:【Compile】或【Ctrl+F7】,4. 连接目标程序 方法1:“组建”“组建XXX.exe” 方法2:工具栏:【Build】或【F7】 5. 执行程序 方法1:“组建”“执行XXX.exe” 方法2:工具栏:【BuildExecution】或【Ctrl+F5】 【例】课本【例1.3】的运行结果:,第2章 数据类型与表达式 2.1从数学上的“数”过渡到计算机中的“数” 2.2 数据类型概述 2

8、.3 常量和变量 2.4 整数类型 2.5 实数类型 2.6 字符类型 2.7 不同类型间的转换 2.8运算符与表达式 2.9 本章小结,【内容摘要】 (1)知识点:C的基本设计类型;数据类型与变量、常量的关系;常量的性质和定义;运算符的功能和特点;类型转换规则。 (2)难点:数据类型、常量定义、运算符和表达式,2.1 从数学上的“数”过渡到计算机中的“数” 一、用计算机编程需要解决好的问题:数据的存储 二、数学中的数与计算机中的数的区别 1.数学中的数:抽象、无类型、精确 2.计算机中的数:具体,有类型、精度有限 (1)类型不同,取值范围不同; (2)类型不同,表示形式不同; (3)合理选取

9、数据类型:节约内存,存下数据,提高速度。 3.计算机中的数的二进制存储 (1)内存按字节编号; (2)C语言中数据的八、十六进制表示 八进制:0+数码:07; 十六进制:0X+数码:09、AF。 (2)二十;二八;二十六进制的相互转化,4. DR进制的相互转换 (1)数的表示 (2)D转R进制 A、转换原则 整小两部分别转, 整部除以基取余, 小部乘以基取整, 整前小后点隔开。 B、转换技巧 以八进制作桥梁; D转B:D转O展B D转H:D转O展B收H,位权,基数,C、注意事项: 八展开二进制:一个八进制位展为3个二进制位; 二收缩为八(十六)进制: 以小数点为界,向前向后3(4)位一节分开;

10、 整数部分最前一节不足3(4)个二进制位不理睬;小数部分最后一节不足3(4)个二进制位时用0补齐 (3)RD A、使用数的表示形式 B、使用转换桥梁,2.2 数据类型概述 C语言的数据类型,数据类型,基本类型,字符型(char),数值型,整型(short、int、long、unsigned),实型,单精度(float),双精度(double),枚举型(enum),构造类型,共用体类型(union),结构体类型(struct),数组类型(),指针类型(*),空类型(void),本章主要介绍基本数据类型,2.3.1 标识符和关键字 一.标识符 1.标识符的概念:用来标识对象名字的有效字符序列 2.

11、C语言标识符的命名规则 (1)由字母或下划线开头,由字母、数字字符或下划线组成 (2)不能与关键字同名 3.几点说明 (1)关键字不能做普通的标识符使用; (2)标识符应言简意赅、名副其实; (3)关键字:组成编程语言本身的一些标识符,也称保留字 C中的保留字有32个,2.3 常量和变量 2.3.1 常量 1.常量的概念:直接书写在程序中,不能被修改的、固定不变的量。 2.常量书写形式分类:字面常量、符号常量 3.常量数据类型:数值常量、字符常量 3.符号常量:用#define语句预先定义的常量 (1)#define语句的格式 #define 常量标识符 常量数据 【例】#define PI

12、3.14159 (2)符号常量的释放语句格式 #undef 常量标识符 【例】 #undef PI,2.3.2 变量 1.变量的概念:用合法的标识符给出的在程序运行中可被修改的量。 2.变量的声明格式 =, =; 另一种写法: 类型说明符 变量1 =初值1,变量2 =初值2; 4.变量可声明时为变量赋初值 例: int i=1; float a,b,c=9.54;,2.3.3 变量的命名规则 一.变量的命名规则 1、变量的命名必须满足标识符命名的规则及注意事项; 2、C语言中,变量区分大小写; 二.变量的类型分类: 整型:short、int 、long、unsignel 实型:float、do

13、uble 字符型:char 布尔型(C无)。 2.3.4 变量的定义 一.C语言中变量必须贯彻“先声明,后使用”的原则 二.声明作用 1.为变量申请存储地址 2.可为变量赋初值 3.声明时未赋初值,对于自动变量其初值为一个随机数,【例】 int a,b,c; int d=3,e=4;f=5; /请改书上的变量名 float g=6.9; char h=A,i; 三.变量强制声明的目的 1. 申请存储空间; 2. 进行运算合法检查。 【例】下面的程序段 float a=4.5,b=8.9; float c; c=a%b; X,2.4 整型类型 2.4.1 整型常量 1.整型常量的概念:不带小数的

14、数值。 2.整数常量的三种书写形式 (1)十进制:不以0开头的由09的数字组成的数据 (2)八进制:以0开头的由07的数字组成的数据 (3)十六进制:以0X开头的由09的数字和AF的字符组成的数据 3.整型常量取值范围有限, 与进制无关 【例】 十进制 八进制 十六进制 0 00 0 x0 78 0116 0 x4e -123 -0173 -0 x7B,2.4.2 整型变量 一.计算机数据存储的三种基本码: 1.原码:正数输的原码是本身,负数的原码是正数的原码符号位取反。 【例】以16位机为例 5原码= 0000000000000101 -5原码=1000000000000101 2. 反码:

15、正数输的反码是本身,负数的反码是正数的反码逐位取反。 5反码= 0000000000000101 -5反码=1111111111111010 3. 补码:正数输的补码是本身,负数的补码是其反码末位加1。 5补码= 0000000000000101 -5补码=1111111111111011,二.C中整型变量的4种类型及取值范围 有符号整型:补码存储:-2n-1 2n-1-1 无符号: 0 2n-1 1. int类型(基本型) 1)VC+:4字节存储 2)取值范围: 最大正数 231-1 :01111111111111111111111111111111 最小负数- 231 :100000000

16、00000000000000000000000 2. short类型 1)VC+:2字节存储 2)取值范围: -215 215-1 3.long类型 1)VC+:4字节存储 2)取值范围: 最大正数 231-1 最小负数 231 4. unsigned,整型数的的取值范围列表,2.5 实数类型 2.5.1 实型常量 1.实型常量的概念:带小数的数据。 2.C语言中实型常量的两种书写形式 (1)十进制形式 (2)科学计数形式带E指数的形式 十进制小数+E(e)+阶符+指数 例: 0.0, 78.3, -123.475 0.345e-5 , 1.457E10 3.浮点数的机内存储形式:规范化的表示

17、形式 【例】987.654的机内存储形式 0.987654e3,2.5.2 实型变量 1.实型变量的2种形式 1)float型: 7位有效数字; 4字节存储: 符号位1位,阶符阶码8位,尾数23位 2)double型:15位有效数字; 8字节存储: 符号位1位,阶符阶码11位,尾数52位,2.注意事项 1)浮点数无无符号属性unsigned; 2)VC+中,浮点常量一律按double型处理; 【例】float a=3.14; truncation from const double to float,2.6 字符类型 2.6.1 字符型常量 1.字符常量的概念:由一对单引号括起来的单个字符 2

18、.字符常量的分类: 1)一般字符常量:C语言中计算机可打印输出的字符 2)转义字符常量:在C语言中的以“”开头的字符常量 3.标准ASCII字符: 单字节存储,查看附录B 0:空字符(Null); 131:各种控制字符; 32:空格,第一个可打印字符; 4857:09; 6590:AZ; 97122:az; 3347、5864、123126:其它字符 127:DEL(Delete键),常用转义字符列表,【例】 “105 :(105)oASCII Char E “012 :(012)oControl Char LF “000 :(0)oBlank Char Null “0 xd :(d)hCon

19、trol Char r 4.注意事项 1)字符常量区分大小写; 2)高位置1为扩展ASCII字符,256个; 3)一个汉字两个字节,双扩展; 4)0、0、0含义不同 0:字符0,ASCII码:48,机内二进制:0000110; 0:数值0,补码存储:机内二进制:32个0 0:空字符,ASCII码0,机内二进制:8个0,【例】体会下面两个输出语句: printf(“%c”,0+0); printf(“%d”,0+0);,为什么第一句的输出是一个单引号(ASCII码96)? 【例2.1】转义符的输出 #include void main() char ch; ch=141; printf(%cn%

20、cn,ch,ch-32); 运行,2.6.2 字符型变量 1. 字符型变量:用char类型标识符声明的变量 2.取值范围:一个字节,0255 2.6.3 字符型数据在内存中的存储形式及其使用 ASCII码机内存储;一定条件下,字符型与整型数据通用 【例2.2】字符数据的定义、赋值及存取 #include void main() char a,b; int i,j; a=A; i=66; b=i; j=a; printf(i=%d,j=%d,i=%c,j=%cn,i,j,i,j); printf(a=%d,b=%d,a=%c,b=%cn,a,b,a,b); ,2.7 不同数据类型间的转换 混合运

21、算的原则:先类型转换,再同类数据运算 2.7.1 C自动类型转换 1.转换法则:由低级向高级转换 2.数据级别次序:charintlongfloatdouble 3. 具体转换 1)整型转实型:其值不变,按实型格式存储 【例 】 55.0浮点存储 2)实型转整型:先取整,再按整型存储 【例】5.85补码存储 3)double转float:只取前7位有效数字,再按4字节存储 4)float转double:有效数字扩展为15位,再按8字节存储 5)将整型数赋给字符型数:高位丢失,仅拷贝低8位二进制 6)将字符型数据赋给整型数:将最低8位的ASCII值拷贝,【例】 char ch=A; int i=

22、28; float x=2.36; double y=6.258e6; 问表达式: i+ch+x*y的结果 步骤1:转换:double(28+asc(A)+(double(2.36)*6.258e6) 步骤2:运算:93.0+2.36*6.258e6 结果:double型,2.7.2 C强制类型转换 (1)适应范围:高级转低级 (2)转换格式:(类型)变量 【例】 若有:float x=2.36; double y=6.642; int I; i=(int)(x+y); 【例2.3】数据转换的例子(e2_3.c) #include void main() float x=3.5; int i;

23、 i=(int)x; printf(x=%fn,x); printf(i=%dn,i); 运行,2.8 运算符与表达式 2.7.1 算术运算符与算术表达式 1.适应范围:算术运算 2.操作数:数值型或字符型 3.算术运算符,4.说明: 1)+、-、*:同于数学运算; 2)/: (1)整型数相除:整型算子 (2 )实型数相除:实型算子 3)%取模:求余数,两操作数必须同为整型数 4)自增减运算符:仅用于整型变量 +a(-a):a先自增(减)1再引用; a+(a-):先引用a,在自增(减)1 【例】下面程序段中各变量的值 a=5; b=+a; c=a-;,5.算术表达式:利用算数运算符将常量、变量

24、、函数连在一起的式子,结果一定是数值型 6.算术运算符的优先级 数符,+、-,*、/、%,+、- 7.算术运算符的结合性:左结合性操作数先与左边的运算符优先结合 【例】a*b-1.5/c (a*b)-(1.5/c) 【例】:a*b/c-1.5+a+fabs(-5) S1: a*b/c-1.5+97.0+5.0 S2:作(a*b)/cv1 S3:v1-1.5+97.0+5.0,2.8.2 赋值运算符与赋值表达式 1.普通赋值运算符:= 2.赋值表达式格式:变量=表达式 3.复合赋值运算符,【例】 a=b=c=9 a=18+(c=27) (a*b)=c=9 X,a+=a-=a*a 设a初值为5 S

25、1:a=a-a*a=-20 S2: a=a+(-20)=-20-20=-40,2.8.3 关系运算符与关系表达式 1.适用范围:两个操作数比较大小 2.结果:1或0 1为true;0为false 3.关系运算符,4.关系运算符的优先级 (1)关系运算符:、=、=:同级,高于 =、!= (2)关系运算符低于算术运算符、高于赋值运算符和逗号运算符,【例2.4】关系表达式的运用(e2_4.c) #include void main() char ch=w; int a=2,b=3,c=1,d,x=10; printf(%d,ab=c); printf(%d,d=ab); printf(%d,cha+

26、1); printf(%d,d=a+bc); printf(%d, b-1=a!=c); printf(%dn,3=x=5); 运行:001111 分析表达式:3=x=5的弊病 3=x=5 =(3=x)=5 因不管x为何值,3=x始终非0即1,而0或0肯定小于5,所以此表达式达不到判断目的,2.8.4 逻辑运算符与逻辑表达式 1.适用范围:对关系表达式进行运算 2.结果:布尔逻辑值1或0 1为true;0为false 3.逻辑运算符(由低到高),4.逻辑运算真值表,5.逻辑运算符的优先级: (1)! int max; max=(ab)?a:b; max=(maxc)?max:c; printf

27、(max=%dn,max); ,【例2.9】将下列的条件转换为C语言的表达式 1) 2) 3),2.9.2 复杂表达式的分析 1.C程序书写的原则 1)尽量少用过于长的表达式; 2)多用(); 3)尽量一句写一行; 2.C语言的计算次序 1)()优先; 2)无()处,按运算符优先级次序确定; 3)运算符同级时,按规定的结合方向进行。 【例2.10】分析下面独立的4个表达式的值及变量的值 (初值:i=1,j=4,k=5) i=j=k-2 分析:运算符的优先级:-,-,= 分解:i=j=5-2;k=k-1; / j:3 ,i:3,k:4,(2) i=+j,j=+k 分析:运算符的优先级:+,= 分

28、解:j=j+1;i=j , k=k+1;j=k /i:5 j:6 k:6 表达式:j=6 (3) !i1 | (k=100) 分析:优先级: ! , , printf(%c %c %c %cn,l,i,j,k); /wt1: i=j=k-2; printf( %d %d %dn,i,j,k); /wt2: i=1,j=4,k=5; i=+j,j=+k; printf( %d %d %dn,i,j,k); /wt3: i=1,j=4,k=5; l=!i1|(k=100); printf(%d %d %d %dn,l,i,j,k); /wt4: i=1,j=4,k=5; l=!i1 ,1.数据一定

29、有类型,数据类型决定了数据的取值范围、存储形式、允许的操作。 2.标识符是是用来标识对象的有效字符序列。变量名必须符合标识符命名规则,且不得与关键字同名。 3.程序中的数据分为常量和变量两类。常量分为字面常量和符号常量两种形式。字符常量是一个字符串,用来代替一个预先定义的常量。 4. 在TC2.0中和VC+6.0中,除int型数据长度分别是16、32位外,其余类型均相同 5.注意运算符的优先级和结合规则,第3章 C语言程序的控制结构 3.1 算法 3.2 C语句的分类 3.3 输入输出语句 3.4 顺序程序控制结构 3.5 选择程序控制结构 3.6 循环语句控制结构 3.7 控制转移语句 3.

30、8 程序设计风格,【内容摘要】 (1)知识点: 算法描述方法; 数据输入输出函数的调用格式; if和switch语言; 3种循环结构、breack、continue、goto 语言。 常用算方法:递推法、穷举法等。 程序设计风格、程序设计的错误、调试。 (2)难点: 输入输出数据的格式控制; 累加和累乘问题的算法设计即寻找其构成规律; 3种循环的区别于联系; 基本结构的嵌套; breack、continue 语言的区别,3.1 算法 3.1.1 算法的概念 1. 计算机科学家N.沃思(Niklaus Wirth)对程序下的定义: 数据结构+算法=程序 数据结构:对数据的描述和组织形式; 算法:

31、对造作或行为的描述,即操作步骤。 2.算法: 1)广义的算法概念:做某件事的方法和步骤; 2)数学中的算法概念:主要研究计算机能实现的算法,即按照某种机械程序步骤一定可以得到结构的解决问题的程序。 3)计算机解题的算法分类:数值运算、非数值运算 3. 算法特性的衡量标准: (1)有穷性。步骤有限、每步时间有限 (2)确定性。每步有明确定义,不存在多义性,(3)有效性。每步操作均可有效执行 (4)没有输入或有多个输入 (5)至少一个输出,3.1.2 算法的表示方法 1. 自然语言 2.使用传统流程图 3. 使用N-S结构化流程图 【例】分别使用传统流程图和N-S图描述1+2+3+6 4.使用伪代

32、码(pseudocode):用介于自然语言和计算机语言见得符号和文字描述算法 【例】 begin 1=i, 0=s while i6, s+i=s, i+1=I print s end,3.2 C 语句的分类 1. 控制语句 1)作用:实现对程序流程的选择、循环、转向、返回等操作 2)控制语句的类型 (1)选择语句:ifelse、switch(含:case、default); (2)循环语句:for、while、dowhile; (3)转向语句:continue、break、goto; (4)返回语句:return。 2.函数调用语句的格式: 函数名(实参表); 3.表达式语句的格式: 表达式

33、;,4 .复合语句(语句块) (1)组成:由一对把两个或多个表达式语句括起来组成的语句。 (2)功能:在语法上作为一个整体对待,相当于一个语句。 (3)格式: 语句1;语句2;语句n; 【例】z=x+y;z+;u=z/100;printf(“%fn”,u); (4)使用场合:循环体、if、switch分支中的语句块 (5)语句块中可进行块内变量的类型声明 5.空语句:仅含“;”的语句 (1)功能 对于未完成的程序暂放上“;”,待以后细化补全 实现空循环 作为跳转目标点,【例】对于未完成的程序暂放上“;”,待以后细化补全 int max(int a,int b) ; 【例】只要从键盘输入的字符不

34、是回车键就从新在输入(使用空循环) while(getch()!=n); 【例】求从0开始的自然数的和,和不得大于100.(使用作为跳转目标点) int i=0;sum=0; ex: ; sum+=i+; if(sum100) goto ex; ,3.3 C 输入输出语句 1. 输入输出通过调用标准库函数本来实现 1)标准库函数在附录D中给出 2)标准库函数通过#include命令将有关的头文件包含到用户原程序中才能使用 【例】对于调用标准输入输出函数,文件开头要有预编译命令: #include 2.函数调用语句格式: 函数名(实参表); 3.常用的输入输出函数: 1)字符输入/输出函数:ge

35、tchar、putchar; 2)格式化输入/输出函数:scanf、printf; 3)字符串输入/输出函数:gets、puts,3.3.1 字符的输入和输出 1.getchar函数 1)函数格式:getchar() 2)功能:从键盘上输入一个字符,返回该字符的ASC码值 3)字符输入语句:变量=getchar(); 将getchar()的返回值赋给字符变量或整型变量,并自动将击键结果回显在屏幕上 2.putchar()函数 1)调用格式:putchar(字符变量); 2)功能:将字符变量的内容写到屏幕上 3)字符变量:可打印字符或转义符 【例】 putchar(x42); /输出字母B pu

36、tchar(0 x42); /直接用ASCII码值输出字母B,【例3.1】演示getchar、putchar 函数的应用(e3_1.c) #include void main() char c; c=getchar(); putchar(c); printf(n); ,3.3.2 格式化输入和输出 1. 格式化输入 【例3.2】从屏幕上输出一个整数(L3_2.c) #include void main() int a=10;b=20; printf(“输出变量a和b 的值:”); printf(“a=%d ,b=%d n”,a,b); 1)printf()函数 (1)格式:printf(格式控

37、制字符串,输出列表); (2)格式控制字符串所包含的数据 A、普通字符串:原样输出; B、格式转换说明符:以%开头,以一个格式字符结束的特殊字符串。 是输出表达式安所规定的格式输出。 【例】: printf(“a=%d ,b=%d n”,a,b);,printf()的格式转换说明符,(3)说明 A、输出列表可输出的数据:常量、变量、表达式,数据间以“,”隔开; B、格式说明符与输出项格式最好相同。 说明符大于输出项数:多余的项数会输出不定值; 说明符小于输出项数:多余的项不输出。 C、输出数据的数据类型与格式转换符必须匹配,否则引起错误。例:printf(“%d,%fn”,3.89,6);,【

38、例3.3】判断下面程序运行的结果 #include void main() int a=666,b=888; printf(“%dn”,a,b); 运行结果: A)错误信息 B)666 C)888 D)666,888,(4)格式转换符的完整形式 % - 0 # m.n l或h 格式字符 l:修饰d、u、o、x,输出long int 型; 修饰f、e、g,输出 double型. h:修饰d、u、o、x,输出short 型; m:最小输出域宽度。数据m,右对齐、前加空格;否则按实际宽度输出 .n:显示精度(小数位数) 对于实数:四舍五入; 对于字符串:从字符串左侧开始截取n个字符的子串 -:左对齐

39、; +:有符号数前加上”+“号 0:对于数值型数据,前面空格以0填充 #:对于八、十六进制数,前面显示先导符:0、0 x,【例3.4】printf()格式修饰符的使用实例(L3_4) #include void main() int a=123; float y=456.78; char ch=A; char s=programing; printf(%7d,%-4d,%04dn,a,a,a); printf(%f,%8f,%8.1f,%.2f,%.2en,y,y,y,y,y); printf(%3cn,ch); printf(%sn%12sn%8.5sn%2.5sn%.3sn,s,s,s,s

40、,s); 运行,注意:对于float型数据输出时,系统先自动将其转换为double型,再输出,因此用%f即可输出float型、也可输出double型,不必要使用lf型,但lf并不是错误。,2)scanf()函数 (1)格式:scanf(格式控制字符串,地址列表); (2)功能:从标准输入设备数日若干指定类型的数据 【例】 scanf(“%d,%f”, (3)格式控制字符串的组成:格式转换符、分隔符 (4)格式转换符的完整形式、格式转换符基本同于printf中的 (5)修饰符: l、h、m:同于printf *:忽略输入修饰符。拟制符。读入的数据不赋给对应的变量。,(6)分隔符 A、分隔符一般使

41、用:空格、Tab符 、 回车键 B、在变量间以其它字符做分隔符时,应输入该字符 【例3.5】格式输入输出的使用 #include void main() int a,b,k; float s,f; char c1,c2,m10; scanf(%d,%d,%f,%s, 运行,(7)注意的事项 A、最好输入数据的个数与变量个数相同。如不同,按以下原则处理 输入数据个数变量数:多余数据放入缓冲区供下次读操作使用 B、输入数据的结束情况 遇到空格、回车键(Tab键) 按指定的宽度输完 遇到非法输入,3.4 顺序程序控制结构 1.顺序结构的概念:最简单的结构,特点是完全按照语句出现的先后次序依次执行 【

42、例3.6】将任意的小写字母转换为大写字母后输出 #include void main() char c; c=getchar(); c=c-32; putchar(c); printf(n); ,【例3.7】将由键盘上输入的两个数交换后输出 #include void main() int x,y,temp; printf(请输入两个数x,y:); scanf(%d,%d, ,【例3.8】将由键盘上输入一个三位数,然后将该数逆序输出 #include void main() int x,y,b0,b1,b2; printf(请从键盘上输入一个整型数:); scanf(%d, ,3.5 选择程序

43、控制结构 概念:依照一定的条件,选择执行的路径。 3.5.1 if语句 1.单分支结构 1)格式:if (表达式) 语句; 表达式:合法的关系或逻辑表达式; 语句:单语句或复合语句 2)流程图:传统、N-S 【例3.9】写出下面程序执行的结果(L3_9.c) #include void main() int a=4;b=3;c=5,t=0; if(ab)t=a; a=b; b=t; if(ac)t=a; a=c; c=t; printf(“%d, %d, %dn”,a,b,c); ,【例3.10】计算并输出一个整数的绝对值 #include void main() int x,y; print

44、f(“请输入一个整数:”); scanf(“%d”, 2.双分支结构 1)格式: if (表达式) 语句1; else 语句2; 2)流程图,【例】用双路分支计算并输出一个整数的绝对值 #include void main() int x,y; printf(“请输入一个整数:”); scanf(“%d”, ,【例3.11】从键盘上输入一个英文字符,如大写输入则小写输出,反之亦然(L3_11.c)。 #include void main() char ch; printf(“请输入一个英文字符:”); ch=getchar(); if(ch=a ,3.多分支结构 1)格式: if (表达式1)

45、 语句1; else if (表达式2)语句2; else if (表达式n)语句n; else 语句n+1; 2)流程图 【例3.12】从键盘上输入x的值, 并通过如下关系求出相应的y值。,#include void main() int x,y; printf(“请输入x:”); scanf(“%d”, ,【例3.13】根据成绩等级打印评语,两者对应的关系如下。,#include void main() int grade; printf(“请输入成绩等级:”);,scanf(%d, ,4.if 语句的嵌套 (1)嵌套的概念 (2)嵌套结构的原则 A、ifelse就近配对; B、转出不转入

46、。 (3)内嵌if语句的一般格式 if(表达式1) if(表达式2)语句1 else 语句2 else if(表达式3)语句3 else 语句4,(4)分类 A、仅在if子句内嵌套 B、仅在else子句内嵌套 C、if、else子句内都嵌套 D、不断在if子句内嵌套从而形成多重嵌套 【例3.14】从键盘上输入三个数,输出其中的最大者,/例3.14 求三个数中的最大数 #include void main() int a,b,c,max; printf(输入三个数:); scanf(%d,%d,%d, ,(4) 如if和else个数不等,采用来限定内嵌的范围; 【例3.15】试分析下面的语句 的

47、含义。 if (ab) if(c=d) y=0; else y=1;,3.5.2 switch语句 (1)格式 switch (表达式) case 常量表达式1 : 语句1;break; case 常量表达式2 : 语句2;break; case 常量表达式n : 语句n;break; default : 语句n+1;break; (2)功能:当表达式的值与常量表达式i(i=1n)相等时,执行对应的语句;除此而外,则执行语句n+1 (3)break:有将控制转到switch语句之后; 无继续执行下一个case,【例3.16】如有:float x=1.5;int a=1,b=2,c=3,判断下面

48、正确的switch()语句 A)switch(x) X case 1.0 :printf(“*n”); case 2.0 :printf(“*n”); B)switch(int)x); X case 1 :printf(“*n”); case 2 :printf(“*n”); ,C)switch(a+b) case 1 :printf(“*n”); case 2+1 :printf(“*n”); D)switch(a+b) case 1 :printf(“*n”); case c :printf(“*n”); X 分析: A)x是实型量 B)switch后多了一个分号 D)case 中使用了变

49、量C C)正确,【例3.17】将例3.13用switch()语句语句来实现 #include void main() int grade; printf(请输入成绩等级:); scanf(%d, ,3.5.3 案例研究:个人所得税计算 【例3.18】2008年公布的纳税政策: 全月应纳所得税额:income=月收入-三险一金; 起征点:td=2000元/月; 全月应纳税所得额 与 税率对照表,#include #define TB 2000 void main() float income,tax,td,salary; float t1,t2,t3,t4,t5,t6,t7,t8; t1=500

50、*.05; t2=t1+(2000-500)*.1; t3=t2+(5000-2000)*.15; t4=t3+(20000-5000)*.2; t5=t4+(40000-20000)*.25; t6=t5+(60000-40000)*.3; t7=t6+(80000-60000)*.35; t8=t7+(100000-80000)*.35; printf(请输入您的月应纳税所得额(0):); scanf(%f,if (td0. ,3.6 循环程序控制结构 1. 循环结构的两种形式: 当循环:当循环条件成立时,做循环体;否则退出循环。 到循环:当循环条件不成立时,做循环体;否则退出循环。 当循

51、环和到循环的条件:正好相反 2.C语言只有当循环 3.C语言当循环的两种形式: 1)先判后干当循环:while、do while、for 2)先干后判当循环:dowhile 4.流程图 3.6.1 while循环 1. 格式: while(表达式) 循环体,2.说明 1)循环体内语句可是任意类型的语句 2)退出循环的其它情况:循环体内遇到:break、return、goto语句 3)可以构造无限循环 格式:while(1) 循环体,【例3.19】用while循环求100以内自然数的和 #include int i=1,sum=0; while (i=100) sum+=i+; printf(“

52、sum=%dn”,sum); ,【例3.20】求输入正整数的阶乘 #include int m,i=1; long p=1; printf(“请输入整数m:”); scanf(“%d”, 注意:Turbo C下阶乘应按长整型声明,2.说明 1)循环体内语句可是任意类型的语句 2)退出循环的其它情况:循环体内遇到:break、return、goto语句 3)可以构造无限循环 格式:while(1) 循环体,3.6.2 dowhile循环 1. 格式:do 循环体 while(表达式);,【例3.21】用dowhile循环求100以内自然数的和 #include int i=1,sum=0; do

53、 sum+=i; i+; while(i=100) printf(“sum=%dn”,sum); ,【例3.22】求由键盘上输入的任意一个正整数的位数。 #include int digits=0,n,temp; printf(“请输入正整数n:”); scanf(“%d”, ,【例3.22B】求由键盘上输入的任意一个正整数,将其按反向次序打印。 /将一个整型数按反序输出:L3_22b.c #include void main() long n,temp,r,v,invert=0; printf(请输入正整数n:); scanf(%ld, ,3.6.3 for循环 1. 一般格式:for(表达

54、式1;表达式2;表达式3) 循环体 2.说明: 1)表达式可缺省,但表达式之间的分号不得缺省 2)循环体可以是单语句,也可以是复合语句 3.执行过程: S1:执行表达式1; S2:判断表达式2是否为0:0则退出循环;非0则执行循环语句 S3:执行表达式3 4. for 基本与while 循环相等价: 表达式1; while(表达式2) 循环语句; 表达式3; ,【例3.23】用for循环求100以内自然数的和 #include int i,sum=0; for(i=1;i=100;i+) sum+=i; printf(“sum=%dn”,sum); ,5.for中表达式缺省的说明:(以求100

55、以内自然数何为例) 1)表达式1缺省时,应在for语句前为循环变量赋初值 i=1; for(;i=100;i+) sum+=I; 2)表达式2缺省:循环条件始终为真,应在循环体内有退出语句,for(i=1;i+) if(i100) break; sum+=i; 3)表达式3缺省:循环变量不自动更新,应在循环体内有更新语句。 for(i=1;i=100;) sum+=i; i+; 4)表达式1、表达式2同时缺省,i=1; for(;i100) break; sum+=i; i+; 4)空循环,【例3.24打印Fibonaci数列(L3_24.c) #include void main() lon

56、g a=1,b=1,c,n,i; printf(请输入要打印的数列项数n:); scanf(%d, 运行L3_24.c,3.6.4 循环的嵌套 原则:包含而不交叉;转出而不转入 执行:先内后外 例: 打印一个水平对角线有11个“*”的菱形(qiantao.c),#include void main() int i , j; /*打印上半部分 */ for (i=1;i=6;i+) printf(n); for ( j=1; j=100-i; j+) printf( ); j=1; while ( j=2*i-1) printf(*); j+; ,/*打印下半部分*/ for (i=5 ; i=

57、1 ; i-) printf(n); for ( j=1; j=100-i; j+) printf( ); j=1; do printf(*); j+; while ( j=2*i-1); printf(n); 运行qiantao.c,3.25 整元唤零钱问题。把1元兑换成1分、2分、5分的硬币,共有多少种换法。 /整元兑换分币:L3_25.c #include void main() int i,j,k=0; /分别代表5分、2分、1分 int m=0; /兑换的可能次数 for(i=0;i=0) m+; printf(%d,%d,%dt,i,j,k); if(m%10=0)printf(n); printf(共有%d种兑换办法n,m); ,运行L3_25.c 共有541种可能,而非451种。 课本上之所有是451,原因在于他排除了2分和5分不换或全换的可能,3.7 控制转移语句 3.7.1 break语句 1. 格式:break; 2.使用场合:循环、switch体中 【例3.26】从键盘上输入10个数,并求他们的和,如输入的数为负数,则提前结束。 程序段1使用for循环 for(n=0,s=0;n10;n+) scanf(“%d”, ,程序段2使用while循环 n=0

温馨提示

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

评论

0/150

提交评论