中等职业学校c语言教案


    XXX中等职业学校备课用纸 授课年级 一年级 授课班级 高技8、9 授课日期 授课节次 教学课题 C语言概述 教 学 目 标 了解C语言出现的历史背景 正确理解C语言特点 熟悉简单C程序结构、特点、执行过程 掌握运行C程序步骤与方法 重 点 难 点 正确理解C语言特点 熟悉简单C程序结构、特点、执行过程 教 学 资 源 准 备 教案、实例 教 学 活 动 流 程 设 计 旁 注 第1章 C语言概述 §1.1 C语言出现的历史背景 1、 程序设计语言的发展 (1) 机器语言:计算机能直接识别的语言。 (2) 汇编语言:助记符编写的语言。 (3) 高级语言:面向对象程序设计语言(如VB程序设计语言、JAVA程序设计语言)和面向过程程序设计语言。 2、C语言出现历史背景 (1)时间:1972 –1973 (2)地点:美国贝尔实验室 (3)目的:开发UNIX操作系统 §1.2 C语言特点 1、 语言简洁、紧凑、灵活 2、 运算符和数据类型丰富 3、 程序设计结构化、模块化 4、 生成目标代码质量高 5、 可移植性好 §1.3 简单C程序介绍 例1.1 第一个程序 Hello,World! 教 学 活 动 流 程 设 计 旁 注 #include <stdio.h> main() { printf(“Hello,World!”); } 说明: 1、#include <stdio.h>是文件包含编译预处理命令, stdio.h是标准输入输出头文件 1、 main为主函数,每个C程序有且必须有一个主函数,无论其位置在哪,程序总是从main函数开始执行 2、 printf是C语言中的输出函数,双引号中的字符串原样输出 3、 ;分号是C语言中的语句结束标志 例1.2 求两数之和 #include <stdio.h> main() { int a, b,sum; /* Definate three variables*/ a=123; b=456; sum=a+b; printf(“Sum is %d”,sum); } 说明: 1、%d是输出格式字符,控制输出时的数据类型和格式,表示十进制整数 2、/* */为注释 例1.3 求任意两数之和 #include <stdio.h> main() { int a,b,sum; scanf(“%d,%d”,&a,&b); sum=add(a,b); printf(“Sum= %d”,sum); } int add(int x, int y) { int z; z=x+y; return(z); } 说明: 1、scanf是C语言中的输入函数,从键盘读入两个十进制整数,分别放入变量a和b对应的 地址单元中 2、调用函数add,定义函数add,函数返回值为整型,形参x和y为整型 3、return将z值返回,赋给sum C语言的格式特点: v 习惯用小写字母,大小写敏感 v 不使用行号,无程序行概念 v 可使用空行和空格 结构特点: Ø C程序由函数构成 Ø C程序由语句组成 Ø /* */为注释,不产生编译代码 教 学 活 动 流 程 设 计 旁 注 § 1.4 C程序的上机步骤 1、 C程序开发步骤 (1) 编辑源程序:扩展名为.c (2) 编译目标程序:扩展名为.obj (3) 连接成可执行程序:扩展名为.exe 2、VC++6.0集成开发环境的使用方法 (1)启动VC++6.0,建立一工作区 (2)在此工作区中建立一工程 (3)在此工程中建立一文件(注意扩展名为.c)编辑后执行程序 作业 1、简述C程序的特点; 2、编写一个简单的C程序,在屏幕上显示“I Study C Programming” 板 书 设 计 第一章 C语言设计概述 1、 C语言的历史背景 2、 C语言的特点 3、 简单C程序介绍 4、 C程序的组成 5、 C程序的上机步骤 6、 作业 教 学 后 记 XXX中等职业学校备课用纸 授课年级 一年级 授课班级 高技8、9 授课日期 授课节次 教学课题 算法1 教 学 目 标 算法的表示形式-----流程图 C中数据类型的分类 常量与变量 整型数据表示方法、存储形式、分类 重 点 难 点 整型数据在内存中的存放形式 如何解决整数的溢出问题 教 学 资 源 准 备 教案、实例 教 学 活 动 流 程 设 计 旁 注 算法的概念 1、 算法:为解决一个问题而采取的方法和步骤。 2、 程序=算法+数据结构 3、 算法是程序的灵魂 简单算法举例 1、求 1×2 ×3 ×4 ×5 §2.3算法的特性 1)有穷性 2)确定性 3)有0个或多个输入 4)有一个或多个输出 5)有效性 怎样表示一个算法 一、算法的表示形式 1、用自然语言表示 2、用流程图表示 3、用伪代码表示 4、用计算机语言表示 二、流程图:传统流程图、N-S流程图 1、传统流程图的表示方法 2、三种基本结构传统流程图与N-S流程图 教 学 活 动 流 程 设 计 旁 注 一、数据与数据类型 1、数据:程序加工处理的对象。 2、数据类型:具有某种性质数据的集合。 二、C中数据类型 整型 字符型 单精度型 基本类型 浮点型 双精度型 枚举型 数组 C中数据类型 构造类型 结构体 共用体 指针类型 空类型 常量与变量 一、常量 1、定义:在程序运行过程中其值保持不变的量。 2、常量类型 Ø 数值型 整型(123)、实型(12.3) Ø 字符型 字符型(‘a’)、字符串型(“a”) Ø 符号常量:#define PAI 3.1415926 二、变量 1、定义:在程序运行过程中其值可以改变的量。 2、变量在内存中存放形式:一个变量有一个名字,并在内存中占一定的存储单元,用来存放变量的值。 4、变量的定义格式(变量必须先定义后使用) 类型说明符 变量名1,变量名2,………..,变量名n; 例:int a,b,c; 3整型数据 一、整型常量的表示方法 1、十进制:123 2、八进制:0123=(123)8 3、十六进制:0x123=(123)16 二、 整型变量 1、整型数据在内存中的存放形式 Ø 在内存中以二进制补码的形式存放,占用2个字节的内存空间 Ø 数的编码:原码、反码、补码 原码:数的二进制编码。 反码:正数等于原码,负数将原码逐位变反(符号位为1) 补码:正数等于原码,负数将原码变反末位加1。 2、整型变量分类 基本型:无符号unsigned int、有符号int 短整型:无符号unsigned short int、有符号short int 长整型:无符号unsigned long int、有符号long int 教 学 活 动 流 程 设 计 旁 注 3、例题(整型数据的溢出问题) main( ) { int a,b; a=32767; b=a+1; printf(“%d,%d”,a,b); } 作业 1、简述C程序中有哪些常用的数据类型; 2、P15/3,5 板 书 设 计 算 法 7、 算法的基本概念; 8、 C语言中的数据结构; 9、 常量; 10、 变量; 11、 变量的种类; 12、 例题分析 教 学 后 记 XXX中等职业学校备课用纸 授课年级 一年级 授课班级 高技8、9 授课日期 授课节次 教学课题 浮点型数据 教 学 目 标 浮点型数据与字符型数据的分类、表示方法与存储形式 变量的赋值形式 各种类数值型数据间相互转换的规则与方法 重 点 难 点 灵活掌握各种数据的存储形式 教 学 资 源 准 备 教案、实例 教 学 活 动 流 程 设 计 旁 注 一、浮点型常量的表示方法 1、十进制小数:数字+小数点 例:0.123,123.0,.456 2、指数形式:123×102=123e2=1.23e4 要求:E前必须有数字,E后数字必须为整数。 规范化指数形式:小数点左侧有且仅有一位非零数字。 二、浮点型变量 1、浮点型数据在内存中存放形式 指数形式存放,占用4个字节,如图所示 小数符号 小数 指数符号 指数 例:1.23e4 + 1.23 + 4 结论:小数位数越多,精度越高;指数位数越多,范围越大。 2、浮点型变量分类 单精度:float 双精度:double 长双精度:long double 3、舍入误差:见书中例题。 教 学 活 动 流 程 设 计 旁 注 字符型数据 一、字符常量 1、定义:用一对单引号括起来的一个字符或以\开头的字符序列。 ‘ a ‘ , \n (又称转义字符) 2、转义字符(见书中表) 例:\101=1*80+1*82=65即表示字母A 二、字符变量 1、定义格式:char c1,c2; 2、作用:存放一个字符 4、字符串常量 v 定义:用一对双引号括起来的字符序列 v 在内存中存放形式:末尾加串结束标志\0(系统自动加) 例:“HELLO” H E L L O \0 v 字符串常量不能赋给一个字符变量。 例:char c1; /*字符变量*/ c1=”hello” /*赋值错误*/ 变量赋初值 一、赋值形式 1、定义变量时赋值 int a=3; float f=3.56; char c=’a ’; 2、部分赋值 int a,b,c=5; 3、赋同一个初值 int a=3,b=3,c=3; 教 学 活 动 流 程 设 计 旁 注 浮点型数据与字符型数据的分类、表示方法与存储形式 变量的赋值形式 各种类数值型数据间相互转换的规则与方法 作业 1、P17/1,2 2、P18/3 板 书 设 计 浮点型数据 13、 浮点型常量的表示方法; 14、 浮点型变量的分类(单精度、双精度、长双精度); 15、 常量; 16、 变量; 17、 字符常量; 18、 字符变量; 19、 例题分析; 教 学 后 记 XXX中等职业学校备课用纸 授课年级 一年级 授课班级 高技8、9 授课日期 授课节次 教学课题 简单程序的调试及数学运算符 教 学 目 标 通过上机调试程序掌握各种数据类型的表示方法、存储形式 掌握各种不同数据间混合运算的运算规则 掌握各种运算符的使用方法 通过程序调试正确理解各种表达式的运算结果 重 点 难 点 掌握各种运算符的使用方法 教 学 资 源 准 备 教案、实例、上机操作 教 学 活 动 流 程 设 计 旁 注 上机按要求调试下程序 1、 输入并运行下程序 main() {int a,b; a=32767; b=a+1; printf(“%d,%d\n”,a,b); } 2、 输入并运行下程序 main() {char c1,c2; c1=’a’; c2=’b’; printf(“%c,%c\n”,c1,c2); } 1) 将上面printf语句改成printf(“%d,%d\n”,c1,c2);结果? 2) 将char c1,c2;改成int c1,c2;结果? 3) 将c1=’a’; c2=’b’;改成c1=“a”; c2=“b”;结果? 4) 将c1=’a’; c2=’b’;改成将c1=300; c2=400;改成结果? 3、输入并运行下程序 main() {char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’; printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3); printf(“%c%c\n”,c4,c5); } 教 学 活 动 流 程 设 计 旁 注 4、 输入并运行下程序 main() {int i,j,m,n; i=8; j=10; m=++i; n=j++; printf(“%d,%d,%d,%d\n”,i,j,m,n); } 1) 将m=++i; n=j++;改成m=i++; n=++j;结果? 2) 将m=++i; n=j++;删除并将printf(“%d,%d,%d,%d\n”,i,j,m,n);改为printf(“%d,%d,%d,%d\n”,i,j,i++,j++);结果? 算术运算符和算术表达式 一、算术运算符和算术表达式 1、基本算术运算符 +(加法或正值运算)1+2 , +100 -(减法或负值运算)1-2 , -100 *(乘法运算符)1*2 /(除法运算符)1/2两整数相除结果为整数。 ½=0 %(模或取余运算符)要求运算符两侧均为整数如5/3=1 2、算术表达式和运算符的优先级与结合性 1)算术表达式的定义:由算术运算符、括号将操作数连接起来 符合C语法规则的式子。 2)优先级与结合性 * / % 高(左至右结合) + - 低(左至右结合) 例题:X/(67-(12+Y)*A)判断计算先后顺序? 3、强制类型转换运算符 1)转换格式:(类型名)(表达式) 作用:将表达式转换成所需的格式。 main() { float x;int I; x=3.6; I=(int)x; printf(“x=%f,I=%d”,x,I); } 4、自增、自减运算符 1)++i,- -i(先使i的值加1或减1,再使用i) 2)i++,i--(先使用i,再使i加1或减1) 3)++与- -只能用于变量,不能用于常量或表达式 例:5++ ,(3*8)++错误 4)++与- -结合方向自右向左。 -I++=-(I++) I=3;printf(“%d,%d”,I,I++); 教 学 活 动 流 程 设 计 旁 注 赋值运算符和赋值表达式 一、赋值运算符 1、运算符:为等号“=” 2、与数学运算的区别 • 数学运算符是判断等号两侧的数值是否相等。 • 赋值运算符是将等号右侧的数值赋给左侧。 3、类型转换 1)将实数赋给整数,舍去小数部分。 2) 将整数赋给单双精度变量时,数值不变,但以浮点形式存储到变量中。 3)将一个double赋给float时,截取前7位有效数字。 4)将字符型赋给整型时,无符号时高8位补零,有符号时,高8位补1 5)将一个int short long赋给一个char时,只将低8位赋给char 4、复合赋值运算符 定义:在赋值运算符前加其他运算符 a+=b等价a=a+b x%=y+3等价x=x%(y+3) 5、赋值表达式 格式:<变量> <赋值运算符> <表达式> 作业 1、上机调试课堂上所学的实例; 2、写出上机调试程序时出现的错误及解决方法; 3、P19/4,5 板 书 设 计 程序调试及算术、关系运算符 20、 上机调试课件中的程序; 21、 上机调试例1及例2; 22、 算术运算符和算术表达式; 23、 关系运算符及关系表达式; 24、 理解赋值号与数学中等于号的区别; 教 学 后 记 XXX中等职业学校备课用纸 授课年级 一年级 授课班级 高技8、9 授课日期 授课节次 教学课题 运算符与表达式详解 教 学 目 标 运算符的各类 表达式的种类 算术运算符 自增自减运算 重 点 难 点 算术运算符 自增自减运算 教 学 资 源 准 备 教案、实例、上机操作 教 学 活 动 流 程 设 计 旁 注 运算符与表达式详解 【问题】日常生活中我们会进行各种各样的数据运算。在C语言中将如何表示这些运算呢? C语言的运算符非常丰富。除控制语句、输入输出语句以外的几乎所有的基本操作都作为运算符处理的。运算符的使用方法也非常灵活,这是C语言的主要特点。C语言运算符一般可分为以下几类: 1.算术运算符 + - * / % 2.关系运算符 > >= < <= = = != 3.逻辑运算符 ! & || 4.位运算符 << >> ~ | ^ & 5.赋值运算符 = 及其扩展赋值运算符 6.条件运算符 ?: 7.逗号运算符 , 8.指针运算符 * & 9.求字节数运算符 sizeof 10.类型转换运算符 (类型) 教 学 活 动 流 程 设 计 旁 注 11.分量运算符 . -> 12.下标运算符 [ ] 13.其他 如函数调用运算符 ( ) 本节将重点介绍算术运算符、赋值运算符、逗号运算符,其他运算符将在以后各章中陆续介绍。详细的运算符列表见附录。 算术运算符与算术表达式 1.算术运算符 C语言中基本的算术运算符共有5种: + (加), - (减), * (乘), / (除),% (取模,或称求余运算符) C语言规定: (1) %(取模运算符),仅用于整型变量或整型常量的运算,如:7%3,其值为1。 (2) / (除运算符),当对两个整型的数据相除时结果为整数,如:7/3,其值为2,舍去小数部分,相当于整除操作。 2.算术表达式 (1) 算术表达式定义 由算术运算符、括号以及操作对象组成的符合C语言语法规则的表达式称为算术表达式。如:a+b-c/d*(a-c) 。 (2) 优先级 一个表达式中若有多个运算符混合在一起,则计算的先后次序为先算括号,再根据相应运算符的优先级,高的优先。乘、除、取模运算符的优先级高于加、减运算符的优先级,即先乘、除、取模,后加、减。算术运算符的优先级在所有运算符中是较高的,仅次于括号、单目运算符、类型转换运算符和求字节数运算符。 (3) 结合方向 当一个运算对象两侧的运算符的优先级别不同时,应遵循优先级高的先处理的规则。当一个运算对象两侧的运算符的优先级别相同时,应遵循运算符的结合方向。算术运算符的结合方向是从左至右。 3.自增自减运算符 C语言中,增1运算也可以写为++运算;减1运算也可以写为--运算。++和--运算是C语言中两个较为独特的单目运算符。它们既可以放在操作数前,也可以放在操作数后,并且操作对象只能是变量,不能是常量或表达式。自增自减运算符的作用是将操作对象的值增加1或减去1。虽然自增自减运算符既可用于前缀运算,也可用于后缀运算,但其意义不同。 i++,i-- /* 表示在使用i值之后将i的值加(减)1 */ ++i,--i /* 表示在使用i值之前将i的值加(减)1 */ 例如:设i的原值为5,则执行下面的赋值语句: j=i++; /*先将i的值赋给j,i再自增1,赋值语句执行完后i的值为6,j的 教 学 活 动 流 程 设 计 旁 注 值为5 */ j=++i; /*先将i的值自增1,再赋给j,赋值语句执行完后i的值为6,j的值为6 */ 【例】输出下面程序中i的值 /* EX2-3.C */ main() { int i=5,j; j=++i+i++;/*一个前增1使i变成6后才进行加法运算,实际是6+6 */ printf(“%d %d\n“,i,j); j=(++i)+(++i)+(i++); printf(“%d %d\n“,i,j); printf(“%d %d\n“,i+j,j++); } 运行结果为: 7 12 10 27 38 27 作业:P27/1,2,3 P29/3 板 书 设 计 运算符与表达式详解 25、 运算符的种类; 26、 表达式的种类; 27、 常用的算术运算符; 28、 自增与自减运算 29、 习题分析 教 学 后 记 XXX中等职业学校备课用纸 授课年级 一年级 授课班级 高技8、9 授课日期 授课节次 教学课题 赋值运算符与逗号运算符 教 学 目 标 赋值运算 逗号表达式 复合运算 重 点 难 点 赋值运算符与数学中等号的区别 逗号表达式 教 学 资 源 准 备 教案、实例、上机操作 教 学 活 动 流 程 设 计 旁 注 一、赋值运算 1.赋值运算符 C语言中赋值运算符为“=”,它的作用是将赋值运算符右边表达式或常量的值赋给其左边的变量。例如: a=5; /* 表示把一个常量5赋给变量a */ x=a+5; /* 表示将表达式a+5的值赋给变量x */ 【注意】如果赋值运算符两侧的类型不一致,在赋值时要进行类型转换。我们将在下一节“赋值转换”中给大家作说明。 2.复合赋值运算符 C语言允许在赋值运算符“=”之前加上其他运算符以构成复合的赋值运算符。凡是双目运算符,都可以和赋值运算符一起组合成复合的赋值运算符。在C语言中,可以使用的复合赋值运算符有: +=,-=,*=,/=,%=,<<=,>>=,&=,^=,|= 例如: a+=5;      等价于  a=a+5; 教 学 活 动 流 程 设 计 旁 注 a*=b+5; 等价于 a=a*(b+5); a%=5; 等价于 a=a%8; C语言中采用这种复合运算符,一是为了简化程序,使程序精练;二是为了提高编译效率,产生质量较高的目标代码。 3.赋值表达式 (1) 赋值表达式的一般形式为: (变量) (赋值运算符) (表达式) 其功能是将赋值运算符右边的“表达式”的值赋给赋值符号左边的变量。整个赋值表达式的值就是被赋值的变量的值。例如: b=4; /* 表示把4赋值给变量b,整个赋值表达式的值为4 */ 赋值表达式也可以包含复合的赋值运算符,例如: a+=a-=a*a; 设a的初值为5,其求解步骤为: ① 先计算表达式a-=a*a的值,它相当于a=a-a*a=5-5*5= -20 ② 再计算a+= -20的值,它相当于a=a+(-20)= -20-20= -40 赋值表达式中的“表达式”又可以是一个赋值表达式,例如: a = ( b = 5 ); 括号内的b=5表示一个赋值表达式,其值为5。整个赋值表达式相当于是由b=5和a=b两个赋值表达式组合而成的。因此a的值为变量b的值,也为5。这个赋值表达式的值为变量a的值,也为5。 (2) 优先级 赋值运算符的优先级较低,在所有运算符中,它的优先级仅高于逗号运算符。例如: a=b+6; /* 由于赋值运算符的优先级低于算术运算符,所以先算b+6再做赋值运算*/ (3) 结合性 赋值表达式按照自右向左的顺序结合,例如: a = 5 + ( b = 6 ); 先做表达式b=6,得到变量b的值为6,表达式的值为6;再做a=5+6,由于赋值运算符的优先级低于算术运算符,所以先算5+6的结果为11,再做a=11的赋值运算。 二、逗号运算符与逗号表达式 1.逗号运算符 C语言提供一种特殊的运算符—逗号运算符。逗号运算符为“,”。用逗号运算符可以将两个表达式连接起来。如: 2+3,2+5 2.逗号表达式 (1) 逗号表达式就是用逗号运算符把两个表达式连接起来所形成的表达式。 其一般形式为: 教 学 活 动 流 程 设 计 旁 注 (表达式1),(表达式2) 逗号表达式的求值过程是:先求表达式1的值,再求表达式2的值,表达式2的值就是整个逗号表达式的值。如上面的表达式先求2+3的值为5,再求2+5的值为7,最后整个逗号表达式的值为表达式2+5的值7。 【例】分析下面程序的运行结果 /* EX2-4.C */ main() { int y=3,x=3,z=1; printf(“%d %d\n“,(++x,y++),z+2); } 运行结果为: 作业 1、 P29/5,6,7,8 2、 上机调试程序运行结果 板 书 设 计 赋值运算符、逗号表达式 30、 赋值运算符 31、 赋值运算与数学中等号的区别 32、 逗号表达式 33、 复合运算 34、 习题讲解 教 学 后 记 XXX中等职业学校备课用纸 授课年级 一年级 授课班级 高技8、9 授课日期 授课节次 教学课题 数据类型转换 教 学 目 标 类型的自动转换 赋值的转换 强制类型转换 重 点 难 点 类型自动转换的规则 教 学 资 源 准 备 教案、实例、上机操作 教 学 活 动 流 程 设 计 旁 注 数据类型转换 C语言中,各种类型的数据可以混合运算。字符型数据和整型数据之间可以通用。不同类型的数据在进行混合运算时,往往需要进行类型转换,将不同类型的数据转换成同种类型的然后进行计算。类型转换有三种方式:类型自动转换;赋值转换和强制类型转换。 一、 类型自动转换 不同类型的数据可以进行混合运算,例如:   10+'a'+2.5*'b' 在进行混合运算时,不同类型的数据首先要转换成同一类型,然后才能进行运算。 自动转换规则为: (1) 单精度浮点型数据(float)在运算时自动转换成双精度浮点型数据(double)。 (2) 字符型数据(char)和短整型数据(short)在运算时自动转换成整型数据(int)。 (3) 整型数据(int)和无符号型数据(unsigned)混合运算时,将整型数据转换成无符号型数据。 教 学 活 动 流 程 设 计 旁 注 (4) 整型数据(int)或无符号型数据(unsigned)和长整型数据(long)混合运算时,都转换成长整型数据。 (5) 整型数据(int)、无符号型数据(unsigned)、长整型数据(long)和浮点型数据混合运算时,都转换成浮点型数据。 依次方式类推,转换规则如图2-2: 高 double float long unsigned 低 int char,short 图2-2 自动类型转换规则 总之,在自动类型转换时总是按照精度不降低的原则从低级向高级进行转换的。 例如上面例子中给出的表达式10+'a'+2.5*'b',在运算时,先将所有的字符类型数据'a'和'b'转换成整型,再从左向右进行运算。遇到浮点型数据时,将整型数据自动转换为浮点型数据。最后表达式的值为浮点型数据,并且按照浮点型数据的运算规则进行运算。 例如: 设有以下变量定义,并已赋确定的值 char w; int x; float y; double z; 则表达式:w+x+z/y值的数据类型为double 说明:此表达式中y为float类型的数据,所以所有数据都自动转换成浮点类型,并且按照浮点型数据的运算规则进行运算。 二、 赋值转换 如果赋值运算符两侧的类型不一致(但都是数值型或字符型)时,在赋值过程中会进行类型转换。转换的基本原则是: (1) 当整型数据赋给浮点型变量时,数值上不发生任何变化,但有效位增加。如: float f; f=4; /* 内存中变量f的值为4.000000 */ (2) 当单、双精度浮点型数据和整型变量混合运算时,浮点数的小数部分将被舍弃。如: int x; x=4.35; /* 内存中变量x的值为4 */ (3) 将字符型数据赋给整型变量时,由于字符型数据在运算时根据其ASCII码值自动转化为整型数据,所以将字符型数据的ASCII码值存储到变量中。如: int x; x='a'; /* 内存中变量x的值为65 */ (4) 将有符号的整型数据赋给长整型数据,要进行符号扩展。将无符号的整型数据赋给长整型变量时,只需将高位补0即可。 教 学 活 动 流 程 设 计 旁 注 三、 强制类型转换 可以利用强制类型转换运算符将一个表达式强制转换成所需类型。例如: (int) a; /* 表示将变量a的类型强制转换为整型 */ (float) (a+b); /* 表示将表达式a+b结果的类型强制转换为浮点型 */ 强制类型转换的一般形式如下: (强制的类型名)(表达式) 作业 P56/1,2,3,4 P58/6 板 书 设 计 数据转换 35、 自动类型转换 36、 赋值转换 37、 强制类型转换 教 学 后 记 XXX中等职业学校备课用纸 授课年级 一年级 授课班级 高技8、9 授课日期 授课节次 教学课题 习题讲解及第二章知识总结 教 学 目 标 通过习题的讲解,使学生深入理解本章所学的内容 对本章所学知识的总结 重 点 难 点 理解习题 教 学 资 源 准 备 教案、实例、上机操作 教 学 活 动 流 程 设 计 旁 注 习题讲解及第二章知识总结 (1) 表达式应该用括号括起来。例如: (int)(a+b); /* 表示将表达式a+b结果的类型强制转换成int型 */ (int)a+b; /* 表示将变量a的类型强制转换成int型后,再进行运算 */ (2) 经强制类型转换后,得到的是一个所需类型的中间变量,原来变量的类型并没有发生任何变化。 【例1】分析下面程序的运行结果 /* EX2-5.C */ main() { int a; float b=2.5; a=(int)b; printf(“a=%d,b=%f“,a,b); } 运行结果为: a=2, b=2.500000 教 学 活 动 流 程 设 计 旁 注 【例2】分析下面程序的运行结果 /* EX2-6.C */ main() { int x, y; x=50; y=(x=x-5, x/5); printf(“y=%d“,y); } 运行结果为: Y=9 【分析】因为x的初始值为50,减5后变为45,45除5为9赋给y。 【例3】写出下面程序的运行结果。 /* EX2-7.C */ main() { int i=2,j=3,k,n,m; k=i+j;printf(“%d“,k); k=k+1;printf(“%d“,k); n=k*3;printf(“%d“,n); m=n%j;printf(“%d“,m); m=m-i;printf(“%d“,m); n=k/j;printf(“%d“,n); } 运行结果为: 56180-22 【分析】整型数据不管进行什么样的算术运算得出的结果仍为整型数据。 【例4】分析下面程序的运行结果。 /* EX2-8.C */ main( ) { int m,n, k; m=5; n=10; k=(--m)+(--n); printf(“m=%d,n=%d,k=%d\n“,m,n,k); m=5, n=10; k=(m--)+(n--); 教 学 活 动 流 程 设 计 旁 注 printf(“m=%d,n=%d,k=%d\n“,m,n,k); } 运行结果为: m=4, n=9, k=13 m=4, n=9, k=15 【本章小结】 本章主要介绍了C语言中有关数据与数据计算的基本概念和规则。重点讲解了以下几个方面的内容: (1)C语言的数据类型有四类:基本类型、构造类型、指针类型和空类型。 (2)基本数据类型包括整型、实型、字符型三种。它们的表示方法、数据的取值范围和数值的有效位各有特点。 作业 上机调试本次课所讲的所有习题 板 书 设 计 习题讲解及本章知识总结 38、 上机调试课件中的程序; 39、 上机调试例1及例4; 3、深入理解习题中所讲到的知识点 教 学 后 记 XXX中等职业学校备课用纸 授课年级 一年级 授课班级 高技8、9 授课日期 授课节次 教学课题 C语言的基本语句 教 学 目 标 表达式语句 函数语句 控制语句 复合语句 空语句 重 点 难 点 各种语句的结构和特点 教 学 资 源 准 备 教案、实例、上机操作 教 学 活 动 流 程 设 计 旁 注 简单程序设计 在C语言中,程序结构一般分为顺序结构、选择结构、循环结构。本章节主要介绍的是:顺序程序结构、赋值语句、基本的输入/输出函数、格式控制符等。 顺序结构是最简单的也是最基本的程序结构,其特点是语句按书写的顺序依次执行。顺序结构主要由简单语句、复合语句及简单输入输出函数构成的语句组成。printf与putchar是输出函数,scanf与getchar是输入函数,它们既有相同点也有不同点。 一、C语言语句 C语言中语句的作用是向计算机系统发出操作命令,从而完成一定的操作任务。 C语句可分为以下5种类型,下面我们进行简单介绍。 教 学 活 动 流 程 设 计 旁 注 1.表达式语句 由表达式组成的语句称为表达式语句,其作用是计算表达式值或改变变量值。它的一般形式是: 表达式; 即在表达式的末尾加上分号,就变成了表达式语句。最典型的例子是,由赋值表达式构成一个赋值语句。如: x=5 是赋值表达式,而 x=5; 是一个赋值语句。注意:分号是C语言中语句的标志,一个语句必须要有分号,没有分号,则一定不是语句。表达式能构成语句是C语言的一个重要特色。 2.函数调用语句 由一个函数调用加上一个分号构成函数调用语句,其作用是完成特定的功能。它的一般形式是: 函数名(参数列表); 例如: printf(“goodby!\n“); /*调用库函数,输出字符串*/ 3.控制语句 控制语句用于完成一定的控制功能,以实现程序的各种结构方式。C语言有9种控制语句,可分为三类: (1) 条件判断语句: if语句、switch语句 (2) 转向语句: break语句、continue语句、goto语句、return语句 (3) 循环语句: for语句、while语句、do-while语句 4.复合语句 复合语句是用花括号将若干语句组合在一起,又称分程序,在语法上相当于一条语句。例如下面是一个复合语句: { i++; printf(“%d\n“,i); } 注意:复合语句中最后一个语句的分号不能省略不写。 5.空语句 只有一个分号的语句称为空语句。它的一般形式是: ; 空语句是什么也不执行的语句,常用于循环语句中的循环体,表示循环体什么都不做。例如: while (getchar()!='\n') ; /*空语句*/ 教 学 活 动 流 程 设 计 旁 注 该循环的功能是:直到从键盘上键入回车才退出循环。这里的循环体是空语句。 作业 1、 试列出C语言中常见的语句有哪些? 2、 P69/2,5,8 板 书 设 计 C程序中的各种语句 40、 表达式语句; 41、 函数语句; 42、 复合语句; 43、 空语句; 44、 控制语句 教 学 后 记 XXX中等职业学校备课用纸 授课年级 一年级 授课班级 高技8、9 授课日期 授课节次 教学课题 程序结构 教 学 目 标 认识程序设计的三种基本结构 顺序结构 重 点 难 点 顺序结构 教 学 资 源 准 备 教案、实例、上机操作 教 学 活 动 流 程 设 计 旁 注 程序结构 一、 程序结构简介 在C语言中,程序结构一般分为顺序结构、选择结构、循环结构。任何复杂的程序都是由这三种基本结构组成。 【引例】简单的程序结构。 main() { int x,y,z; /*定义三个整型变量,是C语言中的声明部分*/ x=123;y=234; /*以下语句是C语言中的语句,是执行部分*/ z=x-y; printf(“x-y=%d\n“,z); } 该程序的作用是求两个整数x和y的差z。第3行是定义变量x、y、z是整型(int)变量。第4行是两个赋值语句,使x、y的值分别为123和234。第5行也是赋值语句,使z的值等于x-y。第6行是进行输出,输出变量z的值。因此该程序的输出信息是: x-y=-111 教 学 活 动 流 程 设 计 旁 注 【引例】由多个函数构成的程序结构。 main() /*主函数*/ { int x,y,z; /*声明部分,定义变量的类型*/ scanf(“%d,%d“,&x,&y); /*通过输入函数,给变量x、y赋值*/ z=min(x,y); /*调用min函数,将函数值赋给变量z*/ printf(“min=%d\n“,z); /*输出变量z的值*/ } int min(int a,int b) /*定义一个min的函数,函数值为整型,虚参a和b是整型*/ { int c; /*函数min中的声明部分*/ if(a>b) c=b; else c=a; return ( c ); /*将变量c的值通过返回语句带回调用处*/ } 本程序包含两个函数:主函数main和被调用函数min。min函数的作用是将a和b中较小的数赋给变量c,并通过返回语句return将c的值返回给主函数main。程序运行时,先由scanf()函数从键盘上读取两个整型数据,如从键盘上输入2,7↙(↙表示回车键),此时x被赋值2,y被赋值7,然后执行第5语句,对min函数进行调用,调用的结果是将较小的数2赋给变量c,通过return语句将函数值赋给变量z。第6行语句输出z的值2。因此程序输出的信息是: min=2 从上面的两个例子看出:一个C程序可以由若干个源程序文件组成,其结构如图3-1所示。 二、 顺序结构 A B 顺序结构是程序设计中最简单、最基本的结构,其特点是程序运行时,按语句书写的次序依次执行,其结构如图3-2所示。 在图中,执行完A框所指定的操作后,必接着执行B框所指定的操作。顺序结构通常是由简单语句、复合语句及输入输出函数语句组成。 【例】分析下面程序结构 /* EX3-1.C */ #include <stdio.h> main() { int a,b,c; scanf(“%d,%d“,&a,&b); 教 学 活 动 流 程 设 计 旁 注 c=a+b; 预处理语句 变量a,b,c声明 输入变量a,b的值 赋值语句c=a+b 输出变量c的值 printf(“\nc=%d\n“,c); } 上述程序显然是顺序结构,其语句执行的次序 如图所示。 从例3-1可以看出,顺序结构的程序框架如下: #开头的编译预处理命令行 main() { 局部变量声明语句; 可执行语句序列; } ; /*空语句*/ 作业 1、 程序设计一般有哪三种基本的结构 2、 P62/3,4 板 书 设 计 程序设计的基本结构 45、 程序设计的结构 46、 顺序结构 例题讲解 47、 选择结构 48、 循环结构 教 学 后 记 XXX中等职业学校备课用纸 授课年级 一年级 授课班级 高技8、9 授课日期 授课节次 教学课题 赋值语句与printf语句 教 学 目 标 理解赋值语句 掌握printf语句的基本结构; 掌握printf语句在程序中的基本用法 重 点 难 点 赋值语句; Printf语句的基本用法 教 学 资 源 准 备 教案、实例、上机操作 教 学 活 动 流 程 设 计 旁 注 一、赋值语句 赋值语句是一个应用十分普遍且最简单的语句。赋值语句的一般形式: 变量 = 表达式; 赋值语句的功能是将赋值号右边表达式的值计算出来,再赋给赋值号左边变量。如: a=3+6; 该语句的作用是将表达式3+6等于9的值赋给了变量a。 前面我们已经学过了赋值表达式,要注意区分两者的不同点: (1) 赋值表达式不能有分号“;”,而赋值语句一定要有分号“;”,这是最本质的区别。 (2) 赋值表达式中的赋值号“=”可以连用,而赋值语句中的赋值号“=”不能连用。如: a=b=c=1 这是赋值表达式,其含义是变量a,b,c的值都是1。而 a=b=c=1; 这是赋值语句。左边第一个“=”是赋值语句中的赋值号,其含义是将该赋值号右边表达式b=c=1的值1赋给变量a。千万不要认为这三个“=”都是赋值语句中的赋值号。 教 学 活 动 流 程 设 计 旁 注 (3) 赋值表达式可以包括在其他表达式之中,如: if((x=y)<0) a=x; 其中x=y是赋值表达式。条件判断顺序是:先将y的值赋给x,然后判断表达式的值(也是x的值)是否小于0,若小于0,则执行a=x。显然这样写是合法的。但如果写成: if((x=y;)<0) a=x; 就不正确了,因为在if条件中不能包含赋值语句。 二、数据输入printf语句 stdio.h是standard input & output的缩写,它是以标准的输入输出设备作为输入输出对象,包括putchar(输出字符),getchar(输入字符),printf(格式输出),scanf(格式输入),puts(输出字符串),gets(输入字符串)等。考虑到printf、scanf使用频繁,系统允许在使用这两个函数时不用#include命令。本章将介绍前4个基本的输入输出函数。 3.4.1 格式化输出函数printf printf函数的功能是向系统指定的设备输出若干个任意类型的数据。 1.printf函数调用形式 printf函数是一个标准库函数,其调用的一般形式: printf(格式控制字符串,输出列表); 括号里格式控制字符串和输出列表实际上都是函数的参数。其中: (1) 格式控制字符串是用双撇号括起来的字符串,它包括两个信息: ① 格式说明。由“%”和格式字符组成,如%d,%c,%f等。它的作用是将要输出的数据转化成指定的格式输出,格式说明都是由“%”字符开始的。 ② 一般字符。即按原样输出的字符,在显示时起提示作用。如例题3-1中有: printf(“\nc=%d\n“,c);/* 双撇号内有换行符、字符c=*/ (2) 输出列表是需要输出的变量、函数、表达式。 2.格式说明符 不同类型的数据用不同的格式说明符。格式说明符是由“%”开头,后面跟若干个小写英文字母,用以说明数据输出的类型、长度、位数等。在Turbo C中格式字符串的一般形式为: %[标志][输出数据最小宽度m][.精度n][数据长度] 类型 【说明】 [ ]:表示可选项。 [标志]:是由字符构成的,它表示数值输出时按某种格式,常用的字符有-、+、0,其具体含义见表3-1。 教 学 活 动 流 程 设 计 旁 注 [输出数据最小宽度m]:m是十进制整数,它表示用十进制输出的最少位数,当需要输出的数据长度超过该数时,该选项不起作用,数据按实际位数进行输出,当需要输出的数据长度小于该数时,则在该数的左边补空格或0。 [.精度n]:是“.”加上十进制整数n。其含义是:如果输出的是数值,则该数表示小数位数,若实际位数大于所定义的精度,则截去超过部分;如果输出的是字符,则表示输出字符的个数。 [数据长度]:是字符,它有两种形式:h、l。h表示按短整型量输出,l表示按长整型量输出。 类型:是格式说明符中必须要有的,它表示输出列表里要输出的数据类型。表3-2给出了常用的类型格式符及含义。 作业: P69/1,2,5 P65 例2,例3请在上机时调试程序 板 书 设 计 赋值语句与printf语句 49、 赋值语句 50、 Printf语句的基本结构 51、 Printf 语句中各参数的意义 52、 例题讲解 教 学 后 记 XXX中等职业学校备课用纸 授课年级 一年级 授课班级 高技8、9 授课日期 授课节次 教学课题 Printf语句及例题讲解 教 学 目 标 Printf语句 例题讲解 重 点 难 点 通过例题的讲解,使学生进一步认识printf语句 教 学 资 源 准 备 教案、实例、上机操作 教 学 活 动 流 程 设 计 旁 注 例题1 #include <stdio.h> main() { int a,b,c; a=10;b=20;c=-30; printf(“a=%d, a=%o, a=%+d\n“,a,a,a); printf(“b=%d, b=%x, b=%5d\n“,b,b,b); printf(“c=%d, c=%5d, c=%+d\n“,c,c,c); } 程序运行结果为: a=10, a=12, a=+10 b=-30, c= -30, c=-30 教 学 活 动 流 程 设 计 旁 注 【例2】分析下面程序运行结果。 /* EX3-3.C */ #include <stdio.h> main() { int a,b,c; a=123;b=234; c=a+b; printf(“\na+b=%d+%d=%d“,a,b,c); printf(“\na+b=%hd+%hd=%hd“,a,b,c); /*用%hd格式输出*/ printf(“\na+b=%2d+%2d=%5d“,a,b,c); /*用%md格式输出*/ printf(“\na+b=%02d+%02d=%05d“,a,b,c); /*用%0md格式输出*/ } 程序运行结果为: a+b=123+234=357 a+b=123+234=357 a+b=123+234= 357 a+b=123+234=00357 为什么运行结果中第三行与第四行不完全一样? 【例3】分析下面程序运行结果。 /* EX3-4.C */ #include <stdio.h> main() { float x,y,z; x=123.234;y=0.000345;z=-98.567; printf(“x=%.4f, x=%.2f, x=%+e\n“,x,x,x); /*用%.nf、%+e格式输出*/ printf(“y=%f, y=%8.4f, y=%10.3e\n“,y,y,y); /*用%f、%m.nf 、%m.ne格式输出*/ printf(“z=%+f, z=%+e, z=%+g\n“,z,z,z); /*注意g格式的使用*/ } 程序运行结果为: x=123.2340, x=123.23, x=+1.23234e+02 y=0.000345, y= 0.0003, y= 3.45e-04 z=-98.567001, z=-9.85670e+01, z=-98.567 注意:由于变量x,y,z均是单精度实型变量,因此按f格式输出7位有效数字,所以运行结果中第三行第一个z的值中小数点后第六位的数值是无效的。 在Turbo C中,字符与字符串的表示是不同的:单个字符用单撇号括起来,而字符串要用双撇号括起来,若单个字符用双撇号括起来,则表示是字符串。 教 学 活 动 流 程 设 计 旁 注 在使用printf函数时,要注意以下几个问题: (1) 可以在格式控制字符串中包含前面所讲的“转义字符”,如'\n'、'\t'、'\r'、'\b'、'\377'等。 (2) 跟在%后面的格式符除X(表示输出的十六进制数用大写字母输出)、E(表示输出的指数e用大写字母E输出)、G(表示若选用指数形式输出,则用大写字母E输出)外,其余必须是小写字母。如%d不能写成%D。 (3) 若想输出字符“%”,则在格式字符串中用连续两个%表示。如: printf(“%f%%“,1.0/4); 则输出:0.250000% 作业 P78/3,4 P79/5 (1)(3) 板 书 设 计 Printf语句及习题讲解 53、 例1 54、 例2 55、 例3 56、 例4 57、 知识点总结 教 学 后 记 XXX中等职业学校备课用纸 授课年级 一年级 授课班级 高技8、9 授课日期 授课节次 教学课题 Scanf语句 教 学 目 标 认识程序设计的输入输出语句; Scanf语句的基本结构; Scanf语句中各参数的意义; 能用Scanf语句进行简单的输入程序设计 重 点 难 点 Scanf语句的基本结构 Scanf语句中各参数的意义 教 学 资 源 准 备 教案、实例、上机操作 教 学 活 动 流 程 设 计 旁 注 scanf函数的功能是从键盘上将数据按用户指定的格式输入并赋给指定的变量。 1.scanf函数调用形式 scanf函数是一个标准库函数,其调用的一般形式: scanf(格式控制字符串,地址列表); 其中格式控制字符串的定义与使用方法和printf函数相同,但不能显示非格式字符串,即不能显示提示字符串。地址列表是要赋值的各变量地址。地址是由地址运算符“&”后跟变量名组成,如&x表示变量x的地址。&是取地址运算符,其作用是求变量的地址。 【引例】scanf函数的使用。 a 25 b -34 a,b地址示意图 #include <stdio.h> main() { int a,b; scanf(“%d,%d“,&a,&b); printf(“\na=%d,b=%d\n“,a,b); } 教 学 活 动 流 程 设 计 旁 注 运行时按以下方式输入a、b的值: 25,-34↙ (输入a、b的值) a=25,b=-34 (输出a、b的值) 此时scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去,如图3-4所示。变量a、b地址是程序在编译连接阶段分配的。 “%d,%d”表示按十进制整数形式输入数据。输入时,数据间必须用逗号分隔,用空格分隔、回车键、tab(跳格)键都是不正确的。若将scanf函数改写成: scanf(“%d%d“,&a,&b); 则输入时,数据间不能用逗号“,”分隔,必须用一个或多个空格分隔,也可以用回车键、tab键。即下述几种方式输入均是合法的: ① 25□□-34↙ (数据间用空格作为分隔,□代表空格) ② 25↙ (数据间用回车键作为分隔) -34↙ 2.格式说明符 与printf函数中的格式说明符相似,以%开始,后面跟一个格式符,中间可以有若干个附加字符,格式字符串的一般形式为: %[*][输入数据宽度m][长度] 类型 【说明】 [ ]:表示可选项 *:表示输入的数值不赋给相应的变量,即跳过该数据不读。 [输入数据宽度m]:m是十进制正整数,表示按m的宽度输入数据。 [长度]:长度格式符为l和h,l表示输入长整型数据或双精度实型数据;h表示输入短整型数据。 类型:是格式说明符中必须要有的,其格式符的意义与printf函数基本相同 【例】分析下面程序。 /* EX3-9.C */ #include <stdio.h> main() { char str1,str2; scanf(“%c%c“,&str1,&str2); /*给字符变量输入数据*/ printf(“\n%c %c\n“,str1,str2); /*输出字符变量的值*/ } 程序运行时,若输入abc↙ 则运行结果为: abc a b 教 学 活 动 流 程 设 计 旁 注 在使用scanf函数时,要注意以下几个问题: (1) scanf函数中的“格式控制字符串”后面应该是变量的地址,而不应是变量名,这是C语言与其他高级语言不同的地方。例如不能将语句scanf(“%d,%d“,&a,&b); 写成scanf(“%d,%d“,a,b);,这是初学者容易出错的地方。 (2) 输入数据时不能规定数据的精度。例如scanf(“%8.2f “,&a);是不合法的。 (3) 在“格式控制字符串”中除了格式说明符外,还有其他字符,则在输入数据时在对应位置上应输入与这些字符相同的字符。例如 scanf (“a=%d,b=%d“,&a,&b); 则输入时应输入: a=12,b=-2↙ 其他任何输入形式都不正确。 (4) 输入数据时,遇以下情况认为该数据输入结束: ① 按指定的宽度结束; ② 遇空格,或“回车”键,或“Tab”键; ③ 遇非法输入。 作业:1、P79/2,7 2、 编程:由键盘输入任意三个整数,试输出这三个数的和与积 板 书 设 计 Scanf语句分析 58、 什么是程序输入语句 59、 Scanf语句的基本结构 60、 Scanf语句中各参数的意义 61、 使用scanf语句时应注意的问题 62、 例题分析 63、 知识点总结 教 学 后 记 XXX中等职业学校备课用纸 授课年级 一年级 授课班级 高技8、9 授课日期 授课节次 教学课题  if语句 教 学 目 标   1.掌握条件选择语句if的三种形式。 2.掌握三种if语句的执行过程。 3.会运用if 语句的三种形式解决实际问题。 重 点 难 点   if 语句的三种形式 三种if语句的执行过程的理解。 三种if语句的运用。 教 学 资 源 准 备 教案、实例、上机操作 教 学 活 动 流 程 设 计 旁 注 【复习提问】 运算符的优先级,表达式的种类 【讲授新课】 if语句(板书) 一.if语句的第一种形式(板书) 1.语句格式(板书) if (表达式) 语句(板书) 其中“表达式”一般为逻辑表达或关系表达式,可以是任意的数据类型。例如, ①if (a>b&&a>c) printf(“%d\n “,a); 其中的表达式是逻辑表达式。 ②if ('a ') printf(“%d\n “, 'a'); 其中的表达式是字符表达式。 ③if (3.8) printf(“%d\n “, 'a'); 其中的表达式是实型表达式。 2.语句执行流程(板书) 系统首先判断表达式的值,如果为非0(真),则执行表达式后跟的语句,然后执行本if语句的后续语句;如果为0(假),则不执行表达式后跟的语句,直接执行本if语句的后续语句。 教 学 活 动 流 程 设 计 旁 注 3.程序举例 【例题5-1】编写程序,从键盘输入两个整数,分别送给变量a和b,比较a、b的大小,如果a>b输出字符串“yes”,否则什么也不输出。 【分析】根据程序设计的“三步曲”,解决本问题的流程图如图所示。 a>b printf(“yes“) 真 假 定义a,b,并赋值 程序结束 (板书) 源程序如下: main( ) { int a,b; scanf(“%d,%d“,&a,&b); if (a>b) printf(“yes“); } 二. if语句的第二种形式(板书) 1.语句格式(板书) if (表达式) 语句1 else 语句2 其中“表达式”同第一种形式一样。例如, if (a>b) printf(“%d\n “,a); else printf(“%d\n “, b); 2.语句执行流程(板书) 系统首先判断表达式的值,如果为非0(真),则执行语句1,然后执行本if语句的后续语句;如果为0(假),则语句2,然后执行本if语句的后续语句。 3.程序举例 【例题5-2】编写程序,从键盘输入两个整数,分别送给变量a和b,比较a、b的大小,如果a>b输出字符串“yes“,否则输出字符串“no“。 教 学 活 动 流 程 设 计 旁 注  三.if语句的第三种形式(板书) if语句的第三种形式,是第二种形式的拓展,如果第二种形式中的语句1、语句2,有一个或者两个又是一条if语句(即if语句的嵌套),就构成了if语句的第三种形式。 为了简化学习,在这里我们讨论两种常用的模式。 1.模式(一)(板书) (1)基本形式 if (表达式1) 语句1 else if (表达式2) 语句2 else 语句3 也就是将第二种形式中的语句2,换成一条if语句。 (2)它的执行流程如图所示。(板书)   四.if语句应用举例 [课堂练习] 【例题5-5】用if语句编写比较a、b两个整数的大小,且把大者赋给x的程序。 【例题5-6】 用if语句编写比较a、b两个整数的大小,且把大者赋给x,小者赋给y的程序。 [课堂小结] 用if语句编程,主要用来解决两路或三路分支的问题,如果问题的很多路分支,还用if语句来编程,程序就显得很乱,而且 板 书 设 计 教 学 后 记 XXX中等职业学校备课用纸 授课年级 一年级 授课班级 高技8、9 授课日期 授课节次 教学课题  switch语句 教 学 目 标 1.掌握switch语句的格式。 2.掌握switch语句的执行过程。 3.会运用switch语句解决实际问题。 重 点 难 点  switch语句的格式和switch语句的执行过程。 switch语句运用 教 学 资 源 准 备 教案、实例、上机操作 教 学 活 动 流 程 设 计 旁 注 【复习提问】 三种if语句的格式,课后题 【讲授新课】 switch语句(板书) 一.一般格式及执行流程(板书) 1.一般形式(板书) switch语句的一般形式如下: switch(表达式) { case 常量表达式1:语句部分1 case 常量表达式2:语句部分2 · · · case 常量表达式n:语句部分n default:语句部分n+1 } 2.执行流程(板书) switch语句的执行过程是:首先对switch语句括号中的表达式进行计算,得到一个值。然后程序用这个值从上至下依次与各个case后的常量表达式进行比较,如果找到相匹配的常量表达式,就以此为入口,将程序转移到这个入口的第一条语句处,再顺序往下执行。若没有相匹配的常量表达式,这时如果switch语句中存在default:,那么程序就转到此处 教 学 活 动 流 程 设 计 旁 注 执行,如果没有default:,程序就跳出switch结构,转而执行switch结构后面的语句。 switch语句中,default部分是可选的。 3.程序举例 【例题5-7】 写出程序的执行结果。 main( ) { int i=7; switch(i) {case 6:i=i+1;  case 7:i=i+1; case 8:i=i+1; case 9:i=i+1; default:i=i+10; } printf(“%d\n“,i); } 【分析】程序首先对switch语句括号中的表达式(i)进行计算,得到一个值是(7)。然后程序用这个值(7)从上至下依次与各个case后的常量表达(6、7、8、9)式进行比较,找到相匹配的常量表达式(7),就以此为入口,将程序转移到这个入口的第一条语句处(i=i+1),再顺序往下执行即后面的赋值语句都被执行一了遍,所以i加了三次1,一次10,最后i的值为20。 如果要i找到常量表达式7这个入口后,只执行“7:”后的语句部分,不执行“8:”之后的语句,就应在“7:”后面语句部分最后,加一条中止语句break; 例如,上述程序如果改写成如下形式: main( ) { int i=7; switch(i) {case 6:i=i+1;break; case 7:i=i+1;break; case 8:i=i+1;break; case 9:i=i+1;break; default:i=i+10; } printf(“%d\n“,i); } 则程序的执行结果是: i=8 也就是说程序执行完“7:”之后的语句部分后,就直接跳出了switch结构。 [课堂练习] 教 学 活 动 流 程 设 计 旁 注 【例题5-9】 编写一程序,打印某年某月的有天数 【分析】(1)我们知道,一年中各个月份的天数不尽相同,特别是2月份还与该年是否闰年有关,故采用switch结构。(2)某年(y)是闰年,应满足以下两个条件之一:①该年份能被4整除,但不能被100整除(y%4= =0&&y%100!=0)②该年份能被400整除(y%400= =0)。 【说明】①switch后面的“表达式”,可以是整型表达式或字符表达式,也可以是枚举型数据。 ②每个case的常量表达式的值不能相同。 ③多个case可以共用一组执行语句,如例题5.9中所示。 [课堂小结] switch语句是多分支选择语句,也叫开关语句。它主要用来解决多路选择问题。 [布置作业] 板 书 设 计 教 学 后 记 XXX中等职业学校备课用纸 授课年级 一年级 授课班级 高技8、9 授课日期 授课节次 教学课题  for语句 教 学 目 标 1.掌握for语句的一般格式。 2.掌握for语句的执行过程。 3.会运用for语句解决实际问题。 重 点 难 点  for语句的一般格式和for语句的执行过程。 运用for语句解决实际问题 教 学 资 源 准 备 启发式,讲练结合 教 学 活 动 流 程 设 计 旁 注 【复习提问】 switch语句的执行过程,分析课后题 【讲授新课】          for语句(板书) 一. 一般形式及执行流程(板书) 1.一般形式(板书) for语句的一般形式为: for (表达式1;表达式2;表达式3) 语句 for (i=1; i<5; i++) s=s+i; 表达式1 表达式2 表达式3 语句 小例子如下, 2.执行流程(板书) 3.几点说明 ①for语句中,表达式1可以为循环变量赋初值,也可以与循环变量无关。  教 学 活 动 流 程 设 计 旁 注 ②表达式1和表达式3可以是一个简单表达式,也可以是逗号表达式。如: for (m=0,n=50; m<=n; m++,j--) k=m+n; ③表达式2一般是关系表达式或逻辑表达式,但也可以是任意表达式,只要其值是非0,就执行循环体。如, for (m=0; (c=getchar()))!='\n'; m+=c) purchar(c); ④for语句的一般形式中“表达式1”可以省略,此时应在for语句前给循环变量赋初值,但其后的分号不能省略。 ⑤表达式2也可以省略,此时不判断循环条件,循环无限制地进行下去,除非在循环体内有跳出语句break; ⑥表达式3,一般用来修改循环变量的值,使循环趋于结束。如果省略表达式3,应另外设法保证循环能正常结束。如, for (i=1; i<5; ) { s=s+i; i++; } 该例题中,循环体有两条语句,所以应用大括号括起来,构成复合语句。 ⑦表达式1和表达式3可以同时省略。如, int i=1; · · · for ( ; i<5; ) { s=s+i; i++; } ⑧三个表达式可以都省略,但分号不能省略。如: for ( ; ; ) 语句 此时,便构成一个死循环,除非循环体中有跳出语句break;  二. for单重循环程序举例 【例题】用循环控制分行输出count=100,count=200,count=300。 [课堂练习] 三. 双重循环 【例题】 用双重循环,打印出九九乘法表。 main( ) { int i,j; for (i=1;count<=9;i++) {for (j=1;j<=i;j++) printf(“%d “,i*j); printf(“\n“);   /*打印完一行后,输出一个换行*/ } } 这就是用for语句构成的双重循环,当然后面要讲到的while循环、do—while循环也可以构成双重循环。这三个循环语句既可以自身构成嵌套,也可以互相嵌套。 [课堂练习] 教 学 活 动 流 程 设 计 旁 注 【例题】 把例题用双重循环改写程序。 main( ) { int n,i; float e=1.0,p=1.0 ; for (n=1;count<=10;n++) { for (i=1;i<=n;i++) p*=i; e=e+1.0/p; } printf(“e=%f\n“,e); } [课堂小结] 循环语句是算法中应用最普遍也是最重要的语句。C语言一共提供了三种循环语句。本节讲解的for语句,主要用于已知循环次数的循环。 [布置作业] 板 书 设 计 教 学 后 记 XXX中等职业学校备课用纸 授课年级 一年级 授课班级 高技8、9 授课日期 授课节次 教学课题  while语句 教 学 目 标  1.掌握while语句的一般格式。 2.掌握while语句的执行过程。 3.会运用while语句解决实际问题 重 点 难 点  while语句的一般格式和while语句的执行过程。 运用while语句解决实际问题。 教 学 资 源 准 备 教案、实例、上机操作 教 学 活 动 流 程 设 计 旁 注 【复习提问】 for语句的执行过程,分析程序执行过程 【讲授新课】          while语句(板书) 一. 一般形式及执行流程(板书) 1.一般形式(板书) whiel语句的一般格式为: while(表达式) 语句 其中表达式是循环能否继续重复的条件,语句部分(即循环体)可以是单一语句或复合语句。一个小例子如下, while(i<5) s=s+i; 中,表达式是“i<5”,语句是“s=s+i” 2.执行流程(板书) 首先计算表达式的值,若其值非0,则执行循环体并重新计算表达式,至到表达式的值变为0为止,然后从该语句的下一条语句继续执行下去。 二.程序举例 【例题】用while循环改写程序。 程序1: main( ) { int count=100; while(count<=300) { printf(“count=%d\n“,count); count=count+100; } } 教 学 活 动 流 程 设 计 旁 注  程序2: main( ) {int count=1; while(count<=3) printf(“count=%d\n“,count++*100); } 【说明】①循环体若是复合语句,需要用大括号括起来,不然,while的作用范围只到其后的第一个分号,这与for语句的规定是一样的。 ②在循环体应有使循环趋向于结束的语句。如程序1中的“count=count+100;”和程序2中的“count++”都是起到这个作用。 ③while语句可以用for语句来代替。for语句的一般形式可以改写为如下形式: 表达式1; while(表达式2) {语句 表达式3; } [课堂练习] 【例题】 编程求1+2+…+10的值。 main( ) { int sum,i; sum=0; /*变量sum作为累加器,必须置初值,否则结果不准确*/ i=1; while(i<=10)  { sum=sum+i;   i++; } printf(“sum=%d\n“,sum); } 【例题】 华氏温度f与摄氏温度c的关系是:c=5.0/9*(f-32),如果已知f为-10,20,50,…,320,用C程序求出各华氏温度所对应的摄氏温度。 main( ) { int f,c; f=-10; while(f<=320) { c=(5.0/9.0)*(f-32); printf(“%4.0f %6.1f\n“,f,c); i++; } } 教 学 活 动 流 程 设 计 旁 注 【例题】 从键盘依次输入学生的成绩,并进行计数、累加,当输入-1时,停止输入,输出学生的数量、总成绩和平均成绩。 【分析】这是一个“使用终止标志”的问题,把“-1”作为输入学生成绩的结束标志,n为学生的计数变量,s为总成绩的累加变量,x为每个学生成绩的暂存变量。 main( ) { int n=0; float s=0,x; scanf(“%f“,&x); while(x!=-1) { n=n+1; s+=x; scanf(“%f“,&x); } printf(“n=%d s=%6.2f pj=%6.2f\n“,n,s,s/n); } [课堂小结] while语句是一种称为“当型”的循环结构。要注意与for语句执行过程的区别 [布置作业] 板 书 设 计 教 学 后 记 XXX中等职业学校备课用纸 授课年级 一年级 授课班级 高技8、9 授课日期 授课节次 教学课题  do-while语句 教 学 目 标 1.掌握do-while语句的一般格式。 2.掌握do-while语句的执行过程。 3.会运用do-while语句解决实际问题。 重 点 难 点  do-while语句的一般格式和do-while语句的执行过程。 运用do-while语句解决实际问题。 教 学 资 源 准 备 教案、实例、上机操作 教 学 活 动 流 程 设 计 旁 注 【复习提问】 for语句的执行过程,while的执行过程,分析程序执行结果 【讲授新课】          do-while语句(板书) 一. 一般形式及执行流程(板书) 1.一般形式(板书) do—while语句的一般形式是: do {语句 }while(表达式); 一个小例子如下, do { s=s+i; } while(i<5) 其中,语句是“s=s+i”,表达式是“i<5”。 2.执行流程(板书) do—while语句的执行过程如下: ①执行循环体中的语句,开始第一次循环周期。 ②计算括号内的表达式(循环条件),如果表达式为非0(真),重新返回到第①步,开始下一个循环周期;如果表达式为0(假),转到第③步。 ③结束do—while循环,执行该循环的后续语句。 教 学 活 动 流 程 设 计 旁 注  【例题】 令i的初值为0,测试i是否小于5;若为真,则显示i的值;然后i值递增1,再进行测试,直到i<5不成立,显示:end。 main( ) { int i=0; do {printf(“%d\n“,i++); }while(i<5); printf(“end“); } 二. 应用举例(板书) [课堂练习] 【例题】 从键盘输入两个非0整数,求它们之和。 main( ) { int x,y,z; do { scanf(“%d,%d“,&x,&y); z=x+y; printf(“z=%d\n“,z); } while(x!=0&&y!=0); }  s=s+i i<5 真 假 do—while的执行流程图如图所示,小例子的流程图如图 语句 表达式 真 假 教 学 活 动 流 程 设 计 旁 注   【例题】 编写求100以内(含100)偶数之和的程序。 main( ) { int x=0,y=0; do { ++x; ++x; y=y+x; } while(x<100); printf(“y=%d\n“,y);  } 拓展练习:分别用三种循环语句来完成程序的编写,比较异同 [课堂小结] do—while语句是一种称为“直到型”的循环结构。 一般情况下,while语句和do—while语句用于已知条件的循环 [布置作业] 板 书 设 计 教 学 后 记 XXX中等职业学校备课用纸 授课年级 一年级 授课班级 高技8、9 授课日期 授课节次 教学课题  break、continue和goto语句 教 学 目 标 1.掌握break、continue的用法 2.了解goto语句的意义 重 点 难 点  break、continue的用法 进行较复杂程序设计 教 学 资 源 准 备 教案、实例、上机操作 教 学 活 动 流 程 设 计 旁 注 【复习提问】 三种循环结构的比较 【讲授新课】 break、continue和goto语句(板书) 一. break语句(板书) 引入:在学习switch语句时,就已经介绍过break;语句,它可以使程序跳出switch结构。实际上,break;语句也可以用于循环结构中,使程序提前跳出循环,结束循环,转移到循环后面的语句。这种不在顶部(while和for)或底部(do-while)通过判断就能控制循环出口的做法是非常方便的。 【例题】(板书) main( ) { int i; for(i=1;i<6;i++) if (i==3) break; printf(“now i is %d\n“,i); } 【分析】此例中虽然for循环语句规定i从1到5循环,由于循环体中有break;语句,所以实际上当循环到i=3时就跳出循环,通常break;语句总是和if语句联在一起,即满足一定条件跳出循环。如果是多重循环,只是跳出所在的循环体,可能还在外层的循环体中。 教 学 活 动 流 程 设 计 旁 注  二. continue语句(板书) continue语句的一般形式是:(板书) continue; continue语句只能用在while,for或do-while语句的循环体中,它的作用是:流程跳过循环体中该语句后的所有语句,提前结束本次循环,程序转到进入下一个循环周期。 【例题5-23】 main( ) { int i; for(i=1;i<6;i++) { if (i==3)continue; printf(“in the continue i is %d\n“,i); } } 【分析】continue语句与break语句的区别是:前者只介结束本次循环,而不是结束整个循环。程序转到进入下一次循环周期;后者则是结束当前的整个循环,从循环体后的第一条语句继续执行。 [课堂练习] 【例题5-24】 判断一个数是否为素数。 【分析】所谓素数又称质数,就是除了1和它本身能带除它外,不能被其它的自然数整除。例如,3是素数,而4不是素数。要测试一个数N是否为素数,从定义出发,就应该对2到N-1之间的数进行测试,(数学上已经证明,测到就可以了,这样可以减少循环的次数)。 main( ) { int num,i,p; printf(“请输入一个自然数:“); scanf(“%d“,&num); for(p=1,i=2;i*i<num;i++) { if (num%i==0) {p=0; break;} if (p==1) printf(“%d is sushu\n“,num); else printf(“%d is not sushu\n“,num); } }   教 学 活 动 流 程 设 计 旁 注  三. goto语句 (板书) 结构化程序设计的方法主张限制使用goto语句。因为过多地使用它,会导致程序的可读性差。它主要用在以下两种情况下:①与if语句一起构成循环。但C语言提供了三个循环语句,这已经足够用的了。②从循环体中跳到循环体外。但这项工作可由break;语句来完成。因此,在程序设计时,尽可能少用goto语句。 [课堂小结] break语句可用于switch结构中,作用是跳出switch结构;break语句也可以用在循环体中,用于跳出循环。continue语句只能用在循环体中,用于结束本次循环。goto语句在结构化程序设计中最好不要用。 [布置作业] 板 书 设 计 教 学 后 记 本文档由香当网(https://www.xiangdang.net)用户上传

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 8 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    中等职业学校建设调研思考建议

    中等职业学校建设调研思考建议一、我市中等职业学校建设适合教育模式存在的问题。在市场经济面前,学校与企业一样,企业要兴旺繁荣,必须生产出适销对路,物美价廉的产品;学校要生存发展,必须培养出适用对...

    1年前   
    225    0

    中等职业学校简介范本

     中等职业学校简介范本     中等职业学校是一所以培养各类经营管理和经济技能、职业技术人才为主的中等职业学校和各类就业培训基地。创办于1984年,原校址在,1991年搬迁到,从1995年秋...

    10年前   
    10829    0

    中等职业学校竞聘演讲

    中等职业学校竞聘演讲第一篇:中等职业学校中等职业学校“三化,一本位”教学模式的研究与探索中等职业教育肩负着培养造就数以亿计的高素质劳动者的历史使命,市场决定办学,专业适应就业,为适应知识经济对...

    10年前   
    319    0

    中等职业学校年度工作总结

    第四中等职业学校2009年度工作总结 本学年在区教体局的直接领导和支持下,在全体教职工的共同努力下,认真学习贯彻《国务院关于大力发展职业技术教育的决定》、《中国教育改革和发展纲要》和”十七大...

    13年前   
    15732    0

    C语言程序设计说课教案

    《C语言程序设计》说课教案从以下方面说明:一、 课程性质、地位二、 教学对象分析及要求三、 课程体系四、 课程的重点、难点及突破五、 教学方法与教学手段六、 学生考核七、 教学计划一、 课程性...

    2个月前   
    0    0

    《数据结构(C语言版)》教案

    2011 至2012 学年第 一 学期教  案课程名称 数据结构 使用教材《数据结构(C语言版)》教学时数 56    课程性质 必修    任课班级(人数)信管(53人)   信息 系(部)...

    2年前   
    311    0

    C语言程序设计实验教案

     《高级语言程序设计》 实验指导书 实验一 顺序结构程序设计 一、实验目的及要求 1. 掌握C语言中使用最多的一种语句—...

    4年前   
    1048    0

    C语言代码大全

     乘法口诀表 #include <stdio.h> #include <conio.h> void main(void) { int i,j,x,y; clrscr(); pr...

    4年前   
    1075    0

    专升本C语言题及答案

    C语言精编100题一、单选题1. 由C语言编写的代码程序( )A. 可直接执行 B. 是一个源程序C. 经过编译即可执行 D. 经过编译解释才能执行2. 按照C语言规...

    2年前   
    497    0

    (1小时学会C语言51单片机)C语言入门教程

    △Victor Hugo 维克多?雨果相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧。不过有些朋友可能只听说他叫单片机,他的全称是什么也许并不太清楚, 更不用说他的英文全称和简称了。...

    2年前   
    410    0

    中等职业学校班主任交流材料

    中等职业学校班主任交流材料  各位领导、各位老师、同学们:   你们好!   xxx年新学期,领导安排我担任会计二班的班主任工作,说实话,我对班主任工作可以说是一点头绪也没有,既然领导安排了,...

    11年前   
    347    0

    中等职业学校美术教育专业的自我鉴定

    中等职业学校美术教育专业的自我鉴定  在大学期间,我由一个只知道读书的小女孩,变成一个有着自己个性和思想的先进青年。我刻苦学习,认真钻研,思想不断进步。作为一个xx专业的学生,我比较系统地掌握...

    7年前   
    376    0

    上海市中等职业学校学生复学申请表

    上海市中等职业学校学生复学申请表姓 名性 别出生年月学籍号复学后 年级复学后 专业复学日期证件号申 请 复 学 理 由学生签名: 家长签名: ...

    1个月前   
    0    0

    中等职业学校电子技能赛的活动策划

    中等职业学校电子技能赛的活动策划  一、竞赛目的:  通过此项目竞赛,检验参赛选手对电子产品在规定设计方案(规定原理图与结构要求)下的工艺实现能力,包括对电子元器件的检测方法和常用电子产品制作...

    10年前   
    423    0

    中等职业学校工作总结(精选多篇)

    中等职业学校工作总结(精选多篇)第一篇:中等职业学校教务处工作总结教务处工作总结近三年来,我校发展的速度在社会上引起强烈反响,受到社会各界的认可,有很多兄弟学校纷纷来校取经学习,成绩的背后蕴藏...

    8年前   
    371    0

    浅谈中等职业学校校园网信息资源的建设

    在计算机技术的飞速发展之下,各个学校对于信息技术教育工作也逐渐的重视起来,校园网络的建设也成为一个热点问题,中等职业学校校园网信息资源的建设为校园内外网络用户提供了一个学习与工作的窗口,做好校园...

    1年前   
    346    0

    2022中等职业学校教师工作总结合集

    2022中等职业学校教师工作总结合集2022中等职业学校教师工作总结合集   工作总结不仅仅是对过去一个阶段工作的回顾和总结,更是总结成绩、认识不足、吸取教训、提升认识和能力的过程。只有...

    10个月前   
    116    0

    中等职业学校班主任工作总结

    中等职业学校班主任工作总结第一篇:中等职业学校班主任期中工作总结班主任工作总结班主任是学校教育计划的具体执行人,是校长、教务及学管的助手,又是学校和学生家庭的桥梁,各班工作的好坏,直接影响学校...

    10年前   
    374    0

    中等职业学校国家培训总结

    中等职业学校国家培训总结  中等职业学校省级骨干教师培训总结  今年10月25日至11月20日,在学校领导大力推荐支持下,我有幸参加了省教育厅在师范学院举办的中等职业学校财会专业骨干教师省级培...

    10年前   
    347    0

    中等职业学校化学课改笔记

    人是化学基础课在教育中的作用和任务,树立正确化学课程理念,推进课程改革,培养技能人才。

    3年前   
    678    0

    文档贡献者

    z***u

    贡献于2023-01-24

    下载需要 8 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档