




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、c语言程序设计讲稿目录第一讲 c 语言概述 . 1 第二讲 c 语言程序介绍 . 2 第三讲 算法 . 7 第四讲 数据类型( 1) . 18 第五讲 数据类型( 2) . 24 第六讲 运算符和表达式( 1) . 30 第七讲 运算符和表达式( 2) . 38 第八讲 输入输出函数及顺序结构 . 41 第九讲 选择结构程序设计( 1) . 48 第十讲 选择结构程序设计( 2) . 60 第十一讲循环结构( 1) . 65 第十二讲循环结构( 2) . 71 第十三讲习题课 . 76 第十四讲一维数组的定义和使用 . 84 第十五讲二维数组 . 92 第十六讲字符数组和字符串 . 97 第十
2、七讲函数( 1) . 103 第十八讲函数( 2) . 112 第十九讲习题课 &文件 . 112 第二十讲结构体和共用体 . 113 第二十一讲 c 语言屏幕操作函数 . 115 第二十二讲 c 语言实现图形动画效果. 115 1 第一讲 c 语言概述学时: 2 学时授课形式:多媒体讲解 +实例程序演示教学目标:对c程序有一个初步的认识;了解c语言的发展;掌握 c语言的特点。主要内容及时间安排(课堂90 分钟, 80 分钟讲课, 10分钟总结):(1)c语言程序设计课程介绍:包括课程标准、课堂要求、学习方法等( 20 分钟) ;(2)实例演示 +编译环境简介:4 个实例(包括科学计算
3、、数据排序查找、小型应用系统、图形动画效果),每个实例使用一种编译环境,在观看实例效果的同时简单了解c 语言编译运行环境( 20 分钟) ;(3)c 语言发展简史(包括计算机语言的进化、c 语言的发展等)(10 分钟) ;(4)c语言特点介绍:包括与其他语言相比的优点、简单介绍数据类型、关键字、流控结构等(30 分钟) ;(5)总结本节课程的主要内容,布置课后练习题。(10分钟) ;重点:c语言特点中的数据类型、 关键字和流控语句简介教学内容细节:具体内容参加幻灯片。2 第二讲 c 语言程序介绍学时: 2 学时授课形式:板书 +多媒体+实例程序演示教学目标:了解c语言的语法及结构;掌握c语言的
4、编写流程;熟悉 c语言的编译环境 vc+6.0。主要内容及时间安排(课堂90 分钟,80 分钟讲课, 5 分钟复习, 5 分钟总结):(1)以提问的方式复习上节课的内容(5 分钟) ;(2)通过实例编写简单程序(先用多媒体展示第一个实例程序,要求学生了解一般c 程序的编写流程,然后在编译环境演示程序执行过程,总结c 语言程序的基本结构和语法要求) (15 分钟) ;(3)通过实例演示程序的运算功能(先用多媒体展示编写程序,一一讲解给学生,要求学生具有变量需要先定义的理念,然后在编译环境进行实例程序演示,掌握具有输入函数的 c语言程序的运行过程)(15 分钟) ;(4)通过上述实例,利用板式总结
5、c语言的编写和编译过程(借助vc+6.0 来展示 c 语言的编写和执行过程) (10分钟) ;(5)c 语言结构特点总结( c 语言由函数构成、书写格式自由、输入输出由函数实现、语句结束要有分号、main 函3 数是函数开始和结束之处等) (20 分钟) ;(6)c 语言上机编译环境介绍(主要介绍tc 、vc+ 、rarnu_c v1.0 三个编译环境,主推rarnu_c v1.0 编译环境)(20 分钟) ;(7)总结本节课程的主要内容并布置课后练习题(5 分钟) ;重点: c语言的程序结构、 c语言语法细节、 c语言编译过程、 c语言运行环境等;难点: c语言语法细节和程序结构。教学内容细
6、节:一、通过提问的方式复习上节课程的主要内容。二、实例演示(1)实例 1-1 简单输出:#include /*包含文件 */ main() /*程序从函数 main 开始执行 */ /*在屏幕上输出引号内内容*/ printf(i am a programmer,i like c!); /*函数 main 结束*/ 程序说明:main 函数表示主函数,每个程序必须有且只能有一个main 函数,函数体(功能语句)放在 内。4 printf是 c语言的输出函数,它的作用是将“”中的内容原样输出。其中“ n ”是换行符。以/* 和*/ 括起来的是注释,程序运行期间是不执行的只是增加程序的可读性。(2
7、)实例 1-2 简单计算:/* 求两个数的和 */ #include /*包含文件 */ main() /*主函数 */ int a,b,sum; /*定义局部变量 */ scanf(%d,%d,&a,&b);/*输入两个整数值放到a、b变量中 */ sum=a+b; /*将 ab 的和送入 sum中*/ printf(sum=%d,sum); /*输出 ab 的和 sum*/ 程序说明:本实例的功能是实现两个数相加;scanf 函数的作用是输入两个整数;具有变量定义的c语言函数的书写顺序应该是: 先写预处理命令, 然后是函数名; 然后是函数体, 函数体中应先写变量定义,在写功
8、能语句。5 为了增加程序的可读性应适当加上注释,和printf提示。三、c语言的编写流程四、c语言结构特点总结(1)一个 c程序可以由多个函数构成,但是只能有一个main 函数,程序从 main 函数开始,然后通过函数调用完成部分功能,最后以 main 函数结束;(2)主函数或子函数的函数体必须用一对 括起来,函数体中主要是程序的功能语句,这种功能语句由两部分组成:声明部分和执行部分;开始编辑编译连接执行有错?结果正确?结束有源程序file.c 目 标 程序file.obj 库 函 数 和其 它 目 标程序可 执 行目 标 程序无正确不正确6 (3)每一条语句由分号结束,程序书写格式自由,一行
9、可以写多句,一句可以写多行,但分行时注意不能将字符串整体分开;(4)c语言大小写敏感,大小写不能混用;一般程序语句用小写字母,符号常量用大写;程序要有适当的注释语句,提高程序的可读性,注意注释语句不能嵌套;(5)c语言中的变量必须先定义后使用;(6)#include是预处理命令, 用于将或”中包括的文件中的内容读到命令所在处;每个include的后面只能跟一个文件,如果想将多个文件包含到指定位置,可以通过多个 include实现。五、优秀的程序员应具备的基本素质(1)具有良好的编程习惯(2)使用 tab缩进(3) 对齐(4)有足够的注释(5)有合适的空行六、上机环境使用介绍重点介绍上机环境vc
10、+6.0 的使用方法,包括:程序编辑、程序编译、程序改错、程序保存、程序运行等。7 第三讲算法学时: 2 学时授课形式:板书 +多媒体讲解教学目标:掌握算法的概念、掌握典型算法的设计、熟练掌握算法表示方法中程序流程图和n-s图。主要内容及时间安排(课堂90 分钟,80 分钟讲课, 5 分钟复习, 5 分钟总结):(1)复习上节课的主要知识点( 5 分钟) ;(2)算法和程序的关系( 5 分钟) ;(3)算法的概念及算法优劣比较举例(什么是算法,连加算法优劣比较、算法的分类) (10 分钟) ;(4)简单算法举例(设计5 个例子,从易到难)(40 分钟) ;(5)算法的特性(有穷性、 确定性、有
11、零个或多个输入、有一个或多个输出、有效性) (10 分钟) ;(6)算法的表示方法(重点介绍流程图和n-s 图) (10分钟) ;(7)结构化程序设计方法(简单介绍结构化程序设计方法的基本思路)(5 分钟) ;(8)总结和布置课后练习题(课后题2.4 、2.5,下一节讲解数据类型相关知识) (5 分钟)8 重点:算法的概念、算法的特性、设计算法的意义、算法的表示方法难点:算法的表示方法教学内容细节:一、 以提问的方式复习上节课的主要知识点。二、 算法和程序的关系程序=数据结构 +算法数据结构对数据的描述;算法对操作的描述。简单举例进行说明。三、算法概念及算法优劣比较算法:解决问题的步骤。不是只
12、有数值运算问题才有算法,好多非数值运算问题也是有算法的。数值运算问题的算法主要是求数值的结,比如求连加和,非数值算法主要应用在事务管理领域(图书检索、人事管理等) 。在进行数值运算或解决非数值算法时有时需要考虑算法的优劣,比如连加和, 可以从 1 一直加到 100,也可以采用首尾相加,在相乘的形式。当然所用的步骤是不同的。对于数学中的一些常用算法,比如求绝对值,求平方根,等等经常用到,人们就把它们写成程序模块的形式,用户什么时候需要就可以进行调用了,非常方便,常用的数值运算函数都包含在 math.h 文件中。9 例 3-1:计算输入整数的平方根, 如果输入的是负数, 则先求它的绝对值,在求平方
13、根:#include #include void main() int a; double s; printf(input the a:); scanf(%d,&a); a=fabs(a); /* 如果 a 是负数,求 a 的绝对值,再放到a 中,fabs 是求绝对值的函数,是将小括号中的数的绝对值求出来*/ s=sqrt(a); /*sqrt为求平方根函数 */ printf(%d the sqrt=%f,a,s); 四、算法举例(将算法的各种表示方法放到算法举例中,学生接受起来效果会好一些)介绍几个典型算法:每一个算法都有多种描述方式,下面主要介绍自然语言表示法、流程图表示法、n-
14、s图表示法。流程图的基本符号及含义:10 (1)计算 1*2*3*4*5 自然语言表示法繁琐的算法将第二个数与第一个数相乘, 得到的积与第三个数相乘, 依此方法一直乘到5。当要进行连乘的数比较多时,这种方法显然不适用。改进的算法开辟两个空间 p 和 i , 一个放计算之后的积,一个放被乘数,上面的算法进行改造后如下:(s1表示第一步,s2表示第二步,依此类推)s1:1=p,2=i s2:计算 p*i 的积,结果仍然放在p 中,即 p*i=p s3:i 的值增 1,即 i+1=i s4:如果 i 没有超过 5,则继续执行 s2、s3、s5,否则,算法结束,p 中的数据就是连乘积。起止框输入输出框
15、处理框判断框流程线或连接点开始1=p,2=i 流程图表示法:n-s图表示法:1=p,2=i p*i=p 11 习题:计算 1+3+5+7+9的和,用流程图和n-s图表示此算法。(2)有 50 个学生,输出 80 分以上的学生学号和成绩为了表示方便,用n 表示学生学号, ni表示第 i 个学生学号,用 g 表示学生成绩, gi表示第 i 个学生成绩,则算法如下:自然语言表示法:s1:1=i s2:如果 gi80,则输出 ni和 gi,否则不输出;s3:i+1=i s4:如果 ii gi=80 n y n-s图表示法:1=i gi=80 i+1=i 输出 nigin y 12 习题:有 50 个学
16、生,找出 50 个学生中分数为 90 的学生学号。用流程图和n-s 表示此算法。(3)判断某一年份是否是闰年判断某一年份是闰年的条件是: (1)能被 4 整除,但是不能被 100 整除,则这一年份是闰年; (2)能被 100 整除,又能被 400 整除的,则这一年份是闰年;其他的年份都不是闰年,假设用一个空间y 来存放被校验的年份,则算法描述如下:自然语言表示法:s1:输入年份 =y s2:若 y 能被 4 整除,但不能被100 整除,则输出y 是闰年,算法结束;否则,执行s3;s3:若 y 能被 100 整除,也能被 400 整除,则输出y 是13 闰年,算法结束;否则,执行s4;s4:输出
17、 y 不是闰年,算法结束。n-s 图表示法:输入年份 =y y/4 的余数为0 输出 y 不是闰年输出y 不是闰年n y n y y/100 余数不为0 n y y/400 余数不为0 输出 y 是闰年输出y 是闰年流程图表示法:开始结束y y 不能被4 整除输出 y 是闰年y 不能被100 整除n y n y 输出 y 是闰年输出 y 不是闰年y 不能被400 整除输出 y 不是闰年n 输入年份=y 14 习题:输出某一年份段内(比如1000-3000 之间,包括1000 和 3000)的所有闰年。(4)求一个数列的值1-1/2+1/3-1/4+1/5+,+1/99-1/100 注意数列的规
18、律, 分子都是 1,分母是从 1 开始,每次递增 1,一直到 100,第一项符号位正,第二位符号位负,依此规律交替正负,首先必须开辟两个空间,一个为sum放计算结果,然后是 i ,每次被加数的分母; 其次为了表示符号位交替变化,在开辟一个空间t 存放符号,如果是正号则t 为 1,符号 t 为-1 。算法表示如下:自然语言表示法:s1:0.0=sum,1.0=i;1=t; s2:t*1/i+sum=sum s3:-t=t;i+1=i s4:如果 isum,1.0=i , 1=t t*1/i+sum=sum -t=t,i+1=i isum,1.0=i,1=t t*1/i+sum=sum -t=t,
19、i+1=i 直到 i100 输出 sum 15 习题:计算 1,1/2 ,2/3,3/5 ,5/8 ,8/13, 这个数列前 20 项的和。(5)判断一个大于3 的数是不是素数一个数是不是素数主要看它除了1 和它本身之外不能被其他任何整数整除,则它是素数,否则就不是素数,首先需要开辟一个空间n 存放待判断的数,其次开辟一个除数的空间 i (i 从 2 开始) ,利用 n 除以这个 i, 看能否整除,具体算法如下:自然语言表示法:s1:输入待判断的数 =n s2:2=i s4:n 除以 i ,得余数 r s5:如果 r 不为 0,则 i+1=i ,否则,输出 n 不是素数,算法结束s6:如果 i
20、n ,则返回 s4,否则,输出n 是素数,算法结束。考虑是否非要做到i=n-1 ,是不是可以做到 in 流程图表示法: (改进)开始输入待判断数 =n 16 n-s图表示法:输入待判断数 =n n/i的余数 =r r=0 1=w 输出 n 是素数0=w,2=i i+1=i 直到 in或 w=1 y n w=0 y n 输出 n 不是素数17 习题:输出 100-200 之间的所有素数。五、总结三种程序流程结构(顺序、选择和循环,给出图形表示)通过上面几个例子,我们可以看到,算法在执行的过程中基本只有三种模式, (1)从上到下依次执行下来,中间没有任何分叉,(2)在执行过程中,根据条件成立与否产
21、生了不同的操作;(3)当某一条件成立时,反复做相同的操作。这就是我们结构化程序设计的三种基本流控结构:顺序,分支和循环,下面给出这三种基本流控结构的流程图和n-s 图表示。流程图表示方法:n-s表示方法:六、算法的特性a b 顺序结构p a b 选择结构y n 循环结构n p a y 选择结构p n y a a b 顺序结构循环体当 p成立循环体直到 p 成立循环结构18 算法共有五个特性:有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性;有穷性:一个算法的步骤必须是有限的;确定性:算法中的每个步骤必须是确定的,不能是含糊不清的,不能有歧义;输入:算法运行时有时需要外部输入的信息;输
22、出:算法的最终目的是求解和输出;有效性:算法的每个步骤都能有效的执行,并得到确定的结果。七、结构化程序设计思想结构化程序设计强调的是程序设计风格和程序结构的规范化,提倡清晰的结构,编程的基本要求是“清晰第一、效率第二” 。结构化程序设计风格需要经过以下几个步骤进行:(1)自顶向下(2)逐步细化(3)模块化设计(4)结构化编码(利用现有的流控语句进行编码设计)八、总结和布置课后练习题(5 分钟)第四讲数据类型( 1)学时: 2 学时19 授课形式:板书 +多媒体讲解 +实例程序演示教学目标:掌握各种数据类型的关键字,掌握各种数据类型在计算机中所占的存储空间,常量及变量的定义形式,针对各种数据类型
23、printf的格式控制输出。主要内容及时间安排(课堂90 分钟,80 分钟讲课, 5 分钟复习, 5 分钟总结):(1)以提问的方式复习上节课的主要知识点(5 分钟) ;(2)c语言的各种数据类型简介 (基本类型和构造类型,各种数据类型的关键字及所占字节等) (10 分钟) ;(3)针对不同格式的printf输出格式介绍及举例(printf格式介绍,各种类型格式控制符介绍, 以例子说明)(20 分钟) ;(4)常量(包括整型常量、实型常量、字符型常量、符号常量、举例)(20 分钟)(5)整型变量的概念及举例(整型变量的定义及举例)(20 分钟)(6)课堂练习(针对所讲知识进行相关习题练习)(1
24、0分钟)(7)总结及新一讲内容提要(下一讲实型变量、字符型变量、指针变量的定义和使用) (5 分钟)重点:c语言各种数据类型的关键字、 各种类型的常量表示法、整型变量的定义和操作等;20 难点:整型变量的表示范围。教学内容细节:一、c语言各种数据类型介绍各种数据类型的关键字, 及在计算机内存中所占大小 (以各种不同的编译环境为例)类型名关键字所占字节( b)tc rarnu_c vc+ 整型int 2 2 4 短整型short int 2 2 2 长整形long int 4 4 4 无符号整型unsigned int 2 2 4 无符号长整形unsigned long 4 4 4 无符号短整型
25、unsigned short 2 2 2 单精度float 4 4 4 数据类型基本类型构造类型指针类型空类型整型实型字符型长整型整型、短整型无符号整型单精度双精度数组结构体共用体枚举型21 双精度double 8 8 8 字符型char 1 1 1 指针类型* 2 4 4 二、以 printf输出各种数据类型printf基本格式说明printf(格式控制,输出表列); 格式控制:用双引号括起来的字符串,这个字符串包括两部分,格式说明和普通字符, 格式说明以 % 开头。输出表列:与格式说明对应的输出表列。在格式控制符中,除了格式说明去后边对应输出表列之外其他字符原样原位置输出,输出表列为带输出
26、的内容。比如:printf(“abcd”);/*输出 abcd 字符串*/ int x=8 ,y=9; printf(“abcd%defg%d ”,x,y);/*输出 abcd8efg9*/ 具体格式说明符有:%d /*输出短整型和整数 */ %o /*以八进制无符号形式输出整数*/ %x或 x /*以十六进制无符号形式输出整数*/ %u /*以无符号十进制形式输出整数*/ 比如int a=-1; 22 printf(“%d,%u,%o,%xn ”,a,a,a,a); 输出内容分别是: -1,65535,177777,ffff 所以原反补码的含义大家一定要清楚,对为什么出现这样的情况加以分析。
27、对于其他的数据类型也要采取不同的输出格式:%f /*以单精度形式输出实数 */ %lf /*以双精度形式输出实数 */ %c /*以字符形式输出,只输出一个字符*/ 分析:int a=65 ;char c= b;printf(“%d,%d,%c,%cn ”,a,c,a,c); 输出结果: 65,66,a,b 当整数不超过字符型的表示范围时,整数可以以字符型的形式输出,输出的是它对应的ascii 码,字符型也可以以整数的形式输出,输出的是它ascii 码对应的值。单精度或双精度不能利用字符型或整型格式输出,否则会产生错误结果(语法不会出错,但结果意想不到)。三、各种数据类型常量1. 整型常量(1
28、)十进制整型常量(2)八进制整型常量(以0 开头)23 (3)十六进制整型常量(以0 x 开头)(4)后缀为 u 和 u则表示无符号整型,后缀为l 或 l ,表示长整型。 如果将一个带符号数后边加了u,则将其转化为补码按无符号数赋给相应变量。2. 实型常量(1)十进制小数形式(2)科学计数法: xey e 前必须有数字, e 后必须为整数。3. 字符型常量单引号括起来的为字符常量,转义字符也可以作为一个字符。4. 字符串型常量双引号括起来的为字符串常量,字符串常量系统默认会在最后加一个 0 。比较 a和“a”在内存中的状态。5. 符号型常量符号型常量往往是利用宏定义实现的,宏定义属于预处理范畴
29、,与文件包含命令相同。#define x 12 一般放在程序开始,作用是定义一个符号为常量,在程序运行过程中不允许改变。四、整型变量的概念和举例24 (1)标示符的命名规则:由字母数字下划线,开头不能使数字。例:以下合法的用户标识符是()a a1 b 3er c _a# d if (2)各种类型变量的定义:各种变量的定义方法为:类型名变量名列表;/* 如果变量名多余 1 个,用 ,分隔*/ 整型变量的定义方法:int a ;int a,b; int a,b,c=12; int a=12 ,b=12,c=12;不能写成 int a=b=c=12; 可以在变量定义时给变量赋初值。第五讲数据类型(
30、2)学时: 2 学时授课形式:板书 +多媒体讲解 +实例程序演示主要内容及时间安排(课堂90 分钟,80 分钟讲课, 5 分钟复习, 5 分钟总结):(1)以提问的方式复习上节课的主要内容(5 分钟) ;(2)实型变量(定义方法、表示范围、使用举例)(1525 分钟) ;(3)字符型变量 (定义方法、 表示范围、 使用举例) (15分钟) ;(4)指针型变量(含义、定义方法、使用举例)(15 分钟) ;(5)各种数据类型间的混合运算(类型间的转化、强制类型转化方法、举例)(20 分钟) ;(6)课堂习题( 15 分钟) ;(7) 总结及下一讲知识提要 (运算符和表达式) (5 分钟) 。重点:
31、实型变量的定义方法、表示范围;字符型变量的定义方法、表示范围;指针和其他类型变量的配合使用;数据类型间混合运算时的转化;难点:指针和其他数据类型的配合使用,数据间的转化。教学内容细节:一、实型(浮点型)变量浮点型数据在计算机内存中的存储状态分为三部分:数符、小数部分、指数部分。c语言的编译环境不同,则给各个部分分配的位数不同,一般情况下,数符和小数部分分配24 位, 指数部分非配 8 位。数符小数部分指数部分24 位8 位26 比如:表示 3.14159 浮点型变量定义的类型包括:float 、double、long double 举例说明浮点型数据是有误差的:#include void ma
32、in() float a,b; a=123456.789e5; b=a+20; printf(%fn,b); 如果将 float改为 double 则结果不同。二、字符型变量字符型常量是以单引号括起来的单个字符。字符变量的定义使用的是关键字char char a,b; a=a; b=97; + .314159 1 24 位8 位27 整数和字符型可以互相赋值。一般编译系统默认字符型为signed 类型, 表示-128127之间的数字对应的字符,如果想表示128-255 之间的数字则字符需定义为 unsigned char 。三、指针型变量指针型变量往往是和其他变量的定义配合使用,表示不同变量在
33、内存中的地址。指针变量定义是以*为标识符的。比如:int *a,*b; char *c,*d; 这时需要注意,在定义中出现的*与程序中出现的 *是不同的,定义时出现的 *表示变量为指针类型,程序中出现*表示取出地址中的具体数值。*与&地址运算互逆。#include void main() int *p; int c; p=&c; scanf(%d,p); printf(%d,%dn,c,*p); 28 四、变量赋初值在前面的变量定义时,有时在定义的同时就给变量赋了初值,有的是在定义好后,再利用赋值语句给变量赋初值,不管利用哪种方式,都要注意两点:不能在定义时进行连续赋值;不能将
34、不匹配的数据类型互相赋值,否则会产生错误。错误的:int a=b=c=10; int a=3.56; 正确的:int a,b,c; a=b=c=10; 五、各类数据类型间混合运算各种数据类型可以进行混合运算,运算结果为一种数据类型,具体规则如下:横向的是必须转化的, 比如 float型数据在进行运算时,其运算记过统统要转化为double 类型,不管参与运算的是否有 double 类型;char 或 short 类型的数据在进行运算时, 结double float long unsigned int char、short 低高29 果都会转化成 int型。纵向箭头表示对象类型不同时的转换方向,当
35、参与运算的对象数据类型不同时,采用低级向高级转化的规律。比如int型和 long 型进行运算时,将 int转化为 long 类型再进行运算。比如:10+a+1.5-8765.4321* b结果为 double 类型,转化由系统自动完成,无需用户操作。如果在计算过程中不想按照上述转化规则进行转化,则可以利用强制类型转换。具体方式为:(强制类型名)变量或常量例如:#include void main() int a; float b=3.67; a=(int)3.67; printf(%d,%fn,a,b); 六、总结及课堂练习30 课堂习题: 3.2,3.3 作业: 3.5,3.6 ,3.8 第
36、六讲运算符和表达式(1)学时: 2 学时授课形式:板书 +多媒体讲解 +实例程序演示主要内容及时间安排(课堂90 分钟,80 分钟讲课, 5 分钟复习, 5 分钟总结):(1)以提问的方式复习上节课的主要内容(5 分钟) ;(2)c语言运算符简介(各种运算符作用介绍、优先级介绍、结合性介绍)(15 分钟) ;(3)算术运算符和表达式(算术运算符的计算方法、优先级等) (10 分钟) ;(4)自加自减运算及举例(15 分钟)(5)赋值运算符和赋值表达式(简单赋值和符合赋值)(10 分钟)(6)逗号运算符和逗号表达式(与自加自减配合运算)(10 分钟)(7)指针运算符( 10)(8)课堂习题(所讲
37、运算符的使用和运算方法)(10 分钟)31 (9)总结及下一节内容提要 (关系运算符、 逻辑运算符、位运算符、条件运算符等) (5 分钟)重点:c语言算术表达式的求值、 算术运算符的优先级及运算方法、逗号运算符的运算方法、指针运算符的运算方法、自减自加的运算方法;难点:自加自减运算,各种运算符的结合性。教学内容细节:一、c语言中各种运算符1. 算术运算符算术运算符包括: +,-,*,/ ,% ,它们都属于双目运算,结合性自左至右。前三种运算都很简单,对于/ ,如果操作数为整数,则结果也为整数, % 运算的操作数必须为整数,其含义是去两个整数相除的余数。2. 自加自减运算符自加自减运算符包括+和
38、- ,它属于单目运算,结合性自右至左,操作数必须为整型的变量。3. 赋值运算符赋值运算符包括简单赋值运算符=和复合的赋值运算, 复合的赋值运算符是其他运算符和简单赋值运算符组合在一起构成的,一般式位运算符和算术运算符, 比如+=, %= , =等。它属于双目运算,结合性自右至左。32 4. 逗号运算符逗号运算符,顺序求值运算,结合性自左至右。5. 位运算符位运算符包括 ,, 小弯弯, &,| ,按位运算,双目运算符,其中按位取反为单目运算符(结合性自右至左),双目位运算结合性自左至右。6. 指针运算符指针运算符 *,取地址运算符 &,单目运算符,结合性自右至左。7. 逻辑运算符
39、逻辑运算符包括:! ,& ,| ,其中!为单目运算符结合性自右至左, & 和| 为双目运算符结合性自左至右。8. 关系运算符关系运算符包括: ,=,=,=,!=,。结合性自左至右,双目运算符。9. 条件运算符条件运算符 ; 表达式?值 1: 值 2 11.分量运算符分量运算符: -和. ,结合性为自左至右。12.下标运算符下标运算符 ,结合性自左至右。13.求字节运算符33 求字节运算符 sizeof (操作数),结合性自右至左。14.强制类型转换运算符强制类型转换:(类型)操作数,结合性自右至左。二、各种运算符的优先级(1)初等运算符()、 、. (2)单目运算符!、+、-
40、、-、 (类型) 、*、&、sizeof (3)算术运算符(先乘除后加减)(4)位运算符 (5)关系运算符 、=、其中=和!= 级别低一级(6)位运算符 &、| 、分先后(7)逻辑运算符 & 、| 、分先后(8)条件运算符 ?: (9)赋值运算符(10)逗号运算符注意:在利用逻辑运算符时:| 和& 有其特殊性,如果前表达式已经可以确定整个表达式的值,则后表达式不再做。自加+自减- 运算符,只能对整形变量进行。三、算术运算符和算术表达式最终运算为算术运算的式子称为算术式。例:3/5,3%5,-3%5 四、自加自减运算注意:运算对象只能是整型变量。34 例main(
41、) int a=5; a+; printf(“%d ”,a); 为学生描述内存存储状态。计算: (a+)+(-a)-a+(+a)表达式的值, a 的初始值为4。五、赋值运算1. 简单赋值运算符=,运算方法是将 =号后的值赋给 =号前的变量, =号前必须为变量,不能给常量赋值。如:int a=5; 2. 复合的赋值运算比如: a+=5;等价于 a=a+5;前提是复合赋值运算前的变量必须有初值,否则无法运算。3. 赋值运算的规则赋值运算符的赋值规则:(也就是当赋值运算符前后类型不一致时如何赋值)(1)将浮点型赋给整型:舍弃小数部分。如:int i=3.56则 i 的值为 3。(2)将整型赋给浮点型
42、:数值不变,但要以浮点型进行35 存储。如:float a=23,则 a 为 23.00000, 补足有效位。(3)将 double 型赋给 float型,截取其前面7 位有效数字,但要注意数值范围不能溢出。如:float a; double b=123.456789e100; a=b;如果输出 a 则会产生溢出错误,因为b 超过了浮点型表示范围。如果将 b 改为 123.456789e2,则 a 的值会有 7 个有效位是和 b 完全相同的,其他位会产生误差。(4)字符型赋给整型,如果将字符型处理为无符号型,则将字符型放到整型的低8 位,高八位为 0;如果将字符型处理为有符号型, 则字符型放到
43、整型的低8 位,高位所补的是 0还是 1,要看低八位的最高位,所补的为最高位的值。tc和维普 c是把字符型当做有符号数来处理的。比如main() int a; unsigned char c=376; a=c; printf(%d,a); 36 输出为 254,如果去掉 unsigned 则输出为 -2 。(5)将带符号 int赋给 long ,进行符号为扩展放到高十六位,低十六位为 int数据;long 型赋给 int型时,只将 long的低十六位放在 int型中。(6)int 、short 、long 赋给 char 型只是将低八位赋给char 空间。(7)将 unsigned int送到
44、 long int中,不存在符号扩展,高位都补 0。将 unsigned 类型数据赋给一个占字节相同的数据则直接将 unsigned 数据放到相应类型中即可, 只不过超过表示范围会出现数据错误。例如:main() unsigned int a=65535; int b; b=a; printf(%d,b); 这时 b=-1。(8)将 signed 数据赋给长度相同的unsigned 数据也是原样赋过去,只不过如果是负数,是将其补码作为一个无符号数来处理。main() unsigned int a; 37 int b=-1; a=b; printf(%u,a); 这时 a=65535。各种赋值形
45、式虽然看起来复杂,但是都是它们都是:按存储单元中的存储形式直接传送。要求学生必须对补码只是熟练掌握。六、逗号运算符和逗号表达式逗号运算符的运算规则是自左至右。整个表达式的值是逗号表达式最后一个表达式的值。例如: int a ,b,c; a=b=5; c=(a+3,b+a,a=a+b,b+a) c 输出的值应该为15。例如: a=3*4,a+5;要注意赋值运算符的优先级高于逗号运算符,所以先算a=3*4,在算 a+5。所以整个表达式为逗号表达式,值为60。注意: printf和 scanf 中出现的逗号是作为分隔参数用的,并不是逗号表达式。七、指针运算指针运算符的作用是取指针地址中对应的具体数值
46、,它与取地址符为互逆运算。38 例:int *p,a; a=5; p=&a; 则*p 的值为 5。这个思想我们在前面的练习中也给大家说过。八、强制类型转换和测字节函数这两个运算我们在前面讲过,这里就不再说了。九、总结及课堂练习教材 3.9,3.10 作业: 3.11,3.12。第七讲运算符和表达式(2)学时: 2 学时授课形式:板书 +多媒体讲解 +实例程序演示主要内容及时间安排(课堂90 分钟,80 分钟讲课, 5 分钟复习, 5 分钟总结):(1)复习上节课的主要知识点( 5 分钟) ;(2)关系运算符和关系表达式( 15 分钟) ;(3)逻辑运算符和逻辑表达式(20 分钟) ;(
47、4)位运算符( 20 分钟) ;(5)课堂练习( 30 分钟) 。重点:关系运算符,逻辑运算符,位运算符的操作方法。39 难点:各种运算符的混合运算,需要考虑算符的优先级和结合性等因素。教学内容细节:一、关系运算符和关系表达式关系运算符表示的是前后两个表达式的关系,表达式的值为逻辑值“真” 或 “假” , 如果关系正确则表达式的值为 “真” ,否则为“假”,由于 c语言不提供逻辑类型值,所以如果表达式的值为“真”,则用 1 表示,表达式的值为“假”则用0 表示。例:int a=3,b=4,c=5; 则 c!=ab 的值为 1。二、逻辑运算符和逻辑表达式逻辑运算符表示两个操作数的逻辑关系,逻辑运
48、算的结果也是逻辑值“真”和“假” ,也是对应数字1 和 0;但是要注意:在表示“真”和“假”时,非零就表示“真”,0 就表示“假” 。a b !a a&b a|b 真真假真真真假假假真假真真假真假假真假假40 例:!a&b|xy& (c+),运算级别 ! 最高,然后是算术,然后是关系、然后是逻辑、然后是赋值;a=1,b=0,c=3,x=7,y=10; 则表达式的值为 0,c 的值为 3。注意: & 和| 的运算规则。三、位运算符和表达式位运算符的前提示首先将数据转化为二进制在进行相应的操作。运算符含义运算符含义& 按位与取反| 按位或 右移例如:641:
49、 010010111110110(逻辑右移)a1: 110010111110110(算术右移)四、条件运算符例如: int a=5,b=3; 41 ab?a:b; 五、总结及课堂练习1、教材: 1、2、3、4、5 2、自设题目:a=45;求a,a2,a2; a&0000000011111111; a|0000000011111111 第八讲输入输出函数及顺序结构学时: 2 学时授课形式:板书 +多媒体讲解 +实例程序演示主要内容及时间安排(课堂90 分钟,80 分钟讲课, 5 分钟复习, 5 分钟总结):(1)c语言的基本语句(分为五类:表达式语句、函数调用语句、控制语句、复合语句、空
50、语句,各种语句举例,赋值语句的使用)(10 分钟)(2)常用输入函数介绍( 5 分钟) ;(3)scanf 函数的使用方法(包括各种格式的输入、显性分隔符和隐形分隔符的使用、举例) (20 分钟) ;(4)getchar函数的使用方法( getchar的使用、字符输入与 scanf 的区别) (10 分钟)(5)printf使用方法复习( 10 分钟)42 (6)putchar 输入函数的使用( 5 分钟)(7)程序举例( 10 分钟)(8)课堂练习( 15 分钟)(9)总结及下一节内容提要(5 分钟)重点: c语言各种输入输出函数的使用难点: scanf 函数隐形分隔符和显性分隔符的使用教学
51、内容细节:一、c语言的基本语句1、语句的概念c语言中的语句是以分号结束的, 以分号结束的就可以称为语句,它用来想计算机发出指令。2、c程序结构3、各种基本语句(1)流控语句 if (), else ,条件语句for (),循环语句c程序源程序文件 1 源程序文件 2 源程序文件 n 预处理命令数据声明函数 1 函数 n 函数首部函数体数据声明执行语句43 while (),循环语句 do,while ()循环语句 continue 结束本次循环进入下一次循环 break 终止所在循环或switch 结构 switch ()case , 多分支选择语句 goto 转向语句 return 从函数返
52、回语句(2)函数调用语句 printf(“%d,%d ”,a,b); c=max(a,b); (3)表达式语句 a=3; a=c+b; (4)空语句 ; (5)复合语句大括号括起来的语句组: z=x+y ;t=z/100; printf(“%d,%d ”,z,t); 二、常用输入函数介绍(1)scanf 函数的使用方法(包括各种格式的输入、显44 性分隔符和隐形分隔符的使用、举例)scanf( “格式说明”,输入表列);注意:格式说明由格式说明符和分隔符两部分组成,输入表列是由逗号分开的变量地址列表。如:scanf ( “a=%d,b=%d ”,&a,&b); 在运行时,为了让 ab 得到正确的值,则应输入 a=12,b=15回车;这里 a=,b=均为显性分隔符,在输入时除了格式控制符对应变量类型外,其他的显性分隔符原样输入。又如: scanf( “%d%d ”,&a,&b); 在运行时,为了让ab 得到正确的赋
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 针对模具设计的国际标准试题与答案
- 高效复习2024年篮球裁判员考试试题及答案
- 繁育员考试资料与试题及答案获取
- 2024年模具设计师资格认证考试学习社群的力量试题及答案
- 清晰解读农作物种子繁育员考试试题及答案2024
- 2024年体育经纪人考试匹配策略选取试题及答案
- 无人机飞行过程中声音控制试题及答案
- 游泳救生员应对突发情况的试题及答案
- 2024年体育经纪人考试中的技术与方法 试题及答案
- 模具设计师考试经验总结试题与答案
- 眼科学重点总结-临床医学
- 综合韩国语(初级)知到课后答案智慧树章节测试答案2025年春广东建设职业技术学院
- 同步练习:4.1 光的直线传播
- Mission-Planner地面站操作手册
- 班组文化培训课件
- 2025年光伏居间协议模板
- 石油化工行业机密泄露风险及应对策略
- 2025+DeepSeek自学手册:从理论(模型训练)到实践(模型应用)
- 公司管理制度员工手册
- 流程建设培训
- 小学数学课程与教学论教案
评论
0/150
提交评论