C语言程序设计讲稿_第1页
C语言程序设计讲稿_第2页
C语言程序设计讲稿_第3页
C语言程序设计讲稿_第4页
C语言程序设计讲稿_第5页
已阅读5页,还剩109页未读 继续免费阅读

下载本文档

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

文档简介

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第十七讲 函数(1) 103第十八讲 函数(2) 112第十九讲 习题课&文件 112第二十讲

2、结构体和共用体 113第二十一讲 C 语言屏幕操作函数 115第二十二讲 C 语言实现图形动画效果 115第一讲 C 语言概述学时: 2学时授课形式:多媒体讲解 +实例程序演示教学目标:对C程序有一个初步的认识;了解 C语言的发展;掌握C 语言的特点。主要内容及时间安排(课堂 90分钟, 80分钟讲课, 10分钟总结):(1)C语言程序设计课程介绍:包括课程标准、课堂要求、学习方 法等( 20 分钟);(2)实例演示 +编译环境简介: 4 个实例(包括科学计算、数据排序 查找、小型应用系统、 图形动画效果),每个实例使用一种编译环境, 在观看实例效果的同时简单了解 C语言编译运行环境(20分钟

3、);(3)C语言发展简史(包括计算机语言的进化、C语言的发展等)(10分钟);(4)C语言特点介绍:包括与其他语言相比的优点、简单介绍数据 类型、关键字、流控结构等( 30分钟);( 5)总结本节课程的主要内容,布置课后练习题。 ( 10 分钟); 重点:C语言特点中的数据类型、关键字和流控语句简介 教学内容细节:具体内容参加幻灯片。1第二讲 C 语言程序介绍学时: 2 学时授课形式:板书 +多媒体 +实例程序演示教学目标:了解C语言的语法及结构;掌握C语言的编写流程;熟悉C语言的编译环境VC+6.Q主要内容及时间安排(课堂 90分钟, 80分钟讲课, 5分钟复习, 5 分钟总结):( 1)以

4、提问的方式复习上节课的内容( 5 分钟);( 2)通过实例编写简单程序(先用多媒体展示第一个实例程序,要求学生了解一般C程序的编写流程,然后在编译环境演示程序执行过 程,总结C语言程序的基本结构和语法要求)(15分钟);(3)通过实例演示程序的运算功能(先用多媒体展示编写程序,一 一讲解给学生, 要求学生具有变量需要先定义的理念, 然后在编译环 境进行实例程序演示,掌握具有输入函数的 C语言程序的运行过程)(15 分钟);(4)通过上述实例,利用板式总结 C语言的编写和编译过程(借助VC+6.0来展示C语言的编写和执行过程)(10分钟);(5)C语言结构特点总结(C语言由函数构成、书写格式自由

5、、输入 输出由函数实现、语句结束要有分号、 main 函 2 数是函数开始和结束之处等) (20 分钟);(6)C语言上机编译环境介绍(主要介绍 TC VC+ Rarnu_C V1.0 三个编译环境,主推 Rarnu_C V1.0 编译环境)(20 分钟);(7) 总结本节课程的主要内容并布置课后练习题(5 分钟);重点:C语言的程序结构、C语言语法细节、C语言编译过程、C语言 运行环境等; 难点:C语言语法细节和程序结构。教学内容细节:一、通过提问的方式复习上节课程的主要内容。二、实例演示( 1 ) 实例 1-1 简单输出:#include /* 包含文件 */main()/*程序从函数 m

6、ain 开始执行 */* 在屏幕上输出引号内内容 */ printf(I am a programmer,I like C!); /* 函数 main 结束 */程序说明:? main 函数表示主函数,每个程序必须有且只能有一个 main 函数,函数体(功能语句)放在 内。3? printf 是 C 语言的输出函数,它的作用是将“”中的内容原样输出?其中“ n ”是换行符。? 以/* 和*/ 括起来的是注释, 程序运行期间是不执行的只是增加程序 的可读性。2) 实例 1-2 简单计算:/* 求两个数的和 */#include /* 包含文件 */ main()/*主函数 */int a,b,s

7、um; /*定义局部变量 */scanf(%d,%d,&a,&b);/*输入两个整数值放到a、b 变量中 */sum=a+b; /*将ab的和送入sum中*/printf(sum=%d,sum); /*输出 ab 的和 sum*/程序说明:? 本实例的功能是实现两个数相加;? scanf 函数的作用是输入两个整数;?具有变量定义的C语言函数的书写顺序应该是:先写预处理命令, 然后是函数名;然后是函数体,函数体中应先写变量定义,在写功能 语句。4?为了增加程序的可读性应适当加上注释,和printf提示。三、C语言的编写流程辑源程file.c编有错序file.obj标和数库函 序 标目其它 行执

8、程序 不正确 结果正确? 正确 束 结C四、语言结构特点总结程序可以由多个函数构成,但是只能有一个C1 () 一个然后通过函数调用完成部函数开始,程序从 mainmain 函数,ma in函数结束;分功能,最后以括起来,函)主函数或子函 数的函数体必须用一对2(这种功能语句由两部分组成:数体中主 要是程序的功能语句,声明部分和执行部分;5(3)每一条语句由分号结束,程序书写格式自由,一行可以写多句,一句可以写多行,但分行时注意不能将字符串整体分开;(4)C语言大小写敏感,大小写不能混用;一般程序语句用小写字母,符号常量用大写;程序要有适当的注释语句,提高程序的可读性,注意注释语句不能嵌套;(5

9、)C语言中的变量必须先定义后使用;(6)#inelude是预处理命令,用于将 或”中包括的文件中的内容读到命令所在处;每个include的后面只能跟一个文件,如果想将 多个文件包含到指定位置,可以通过多个include实现。五、优秀的程序员应具备的基本素质(1)具有良好的编程习惯(2)使用TAB缩进( 3) 对齐( 4)有足够的注释( 5)有合适的空行 六、上机环境使用介绍重点介绍上机环境VC+6.0的使用方法,包括:程序编辑、程序编译、 程序改错、程序保存、程序运行等。6第三讲 算法学时: 2 学时授课形式:板书 +多媒体讲解 教学目标:掌握算法的概念、掌握典型算法的设计、熟练掌握算法表 示

10、方法中程序流程图和 N-S 图。主要内容及时间安排(课堂 90 分钟, 80 分钟讲课, 5 分钟复习, 5 分钟总结):( 1) 复习上节课的主要知识点( 5 分钟);( 2) 算法和程序的关系( 5 分钟);(3)算法的概念及算法优劣比较举例(什么是算法,连加算法优劣 比较、算法的分类)(10 分钟);(4)简单算法举例(设计 5个例子,从易到难) (40 分钟);( 5)算法的特性(有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性)(10 分钟);(6)算法的表示方法(重点介绍流程图和 N-S图)(10分钟);( 7)结构化程序设计方法(简单介绍结构化程序设计方法的基本思路)(

11、 5 分钟);(8)总结和布置课后练习题(课后题 2.4 、2.5 ,下一节讲解数据类 型相关知识)( 5 分钟)7重点:算法的概念、算法的特性、设计算法的意义、算法的表示方法 难点:算法的表示方法教学内容细节:一、以提问的方式复习上节课的主要知识点。二、算法和程序的关系程序=数据结构 +算法 数据结构对数据的描述;算法对操作的描述。 简单举例进行说明。三、算法概念及算法优劣比较 算法:解决问题的步骤。不是只有数值运算问题才有算法,好多非数 值运算问题也是有算法的。数值运算问题的算法主要是求数值的结, 比如求连加和, 非数值算法 主要应用在事务管理领域(图书检索、人事管理等) 。 在进行数值运

12、算或解决非数值算法时有时需要考虑算法的优劣, 比如 连加和,可以从 1 一直加到 100,也可以采用首尾相加,在相乘的形 式。当然所用的步骤是不同的。对于数学中的一些常用算法,比如求绝对值,求平方根,等等经常用 到,人们就把它们写成程序模块的形式, 用户什么时候需要就可以进 行调用了,非常方便,常用的数值运算函数都包含在 math.h 文件中。 8例 3-1 :计算输入整数的平方根,如果输入的是负数,则先求它的绝 对值,在求平方根:#include #include void main()int a;double s;printf(input the a:);scanf(%d,&a);a=fa

13、bs(a);/* 如果 a 是负数,求 a 的绝对值,再放到 a 中, fabs 是求绝对值的 函数,是将小括号中的数的绝对值求出来 */s=sqrt(a); /*sqrt 为求平方根函数 */printf(%d the sqrt=%f,a,s);四、算法举例(将算法的各种表示方法放到算法举例中,学生接受起 来效果会好一些)介绍几个典型算法:每一个算法都有多种描述方式,下面主要介绍自然语言表示法、 流程 图表示法、N-S图表示法。流程图的基本符号及含义:9起止框.输入输出框处理框判断框或流程线连接点1*2*3*4*5 1)计算(自然语言表示法得到的积与第将第二个数与第 一个数相乘,繁琐的算法当

14、要进行连乘的数比较多5三个数相乘,依此方法一直乘到。时,这种方法显然不适用。一个放计算之后的积,改进的算法开辟两个空间,和ip表示第一步,(S1 一个放被乘数,上面的算法进行改造 后如下:表示第二步,依此类推)S2仁p,2=i:S1p*i=p的积,结果仍然放在p中,即S2:计算p*ii+仁莎,即: S3i的值增1,否则,算法结束,S5S2则继续执行、S3、5iS4 : 如果没有超过p中的数据就是连乘积。 流程图表示法:N-S图表 示法:,开始仁p,2=i 10p*i=p1=p,2=i习题:计算1+3+5+7+9的和,用流程图和N-S图表示此算法。(2) 有50个学生,输出80分以上的学生学号和

15、成绩为了表示方便,用n表示学生学号,n表示第i个学生i学号,用g表示学生成绩,g表示第i个学生成绩,则算法i如下:自然语言表示法:S1:仁莎S2:如果g80,则输出n和g,否则不输出;祇S3: i+仁1S4:如果iig=80iN 仁i Y11输出ng iiNYi+仁莎=8gi习题:有50个学生,找出50个学生中分数为90的学生学号。用流 程图和N-S表示此算法。(3)判断某一年份是否是闰年判断某一年份是闰年的条件是:(1)能被4整除,但是不能被100整 除,则这一年份是闰年;(2)能被100整除,又能被400整除的,则 这一年份是闰年;其他的年份都不是闰年,假设用一个空间y来存放 被校验的年份

16、,则算法描述如下:自然语言表示法:S1:输入年份=yS2:若y能被4整除,但不能被100整除,则输出y是闰年,算法结束;否则,执行S3;S3:若y能被100整除,也能被400整除,则输出y是12S4 ;闰年,算法结束;否则,执行S4:输出y不是闰年,算法结束。流程图表示法:开输入=yY不能整NN不能10整除YYNy不能被 y输岀整除400y输岀y输岀 是闰年y输岀不是闰年不是闰年是闰年结束N-S图表示法:=y输入年份0y/4的余数为Y N0余数不为y/100输出N Yy不0y/400余数不为输岀NY是y是闰不是输岀y是y输岀 闰年 闰年13习题:输出某一年份段内(比如1000-3000之间,包

17、括1000和3000) 的所有闰年。(4)求一个数列的值1-1/2+1/3-1/4+1/5+1/99-1/100注意数列的规律,分子都是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=sumS3: -t=t;i+1=iS4:如果isum,1.0=i,1=tt*1/i+sum=su

18、O.O=sum,1.O=i , 1=t-t=t,i+1=i t*1/i+sum=sumi100直至卩-t=t,i+1=i输出sum14Y in :输入待判断的数S12=i:S2rin除以,得余数S4:不是素数,否则,输出n,则S5:如果r不为 0i+仁匚算法结束是素数,算法nin,则返回S4,否则,输出:女口 果S6结束。iw,2=in/i的余数=rr=0 Y Ni+1=i 1=w直至U i或W=1 ni6w=0NY不是素数n输出 是素数n输出100-200之间的所有素数。习题:输出五、总结三种程序流程结构(顺序、选择和循环,给出 图形表示)通过上面几个例子,我们可 以看到,算法在执行的过程)

19、从上到下依次执行下来,中间没 1中基 本只有三种模式,()在执行过程中,根据条件成立与否产生了有任 何分叉,(2)当某一条件成立时,反复做相同的操作。不同的操作;(3这就是我们结构化程序设计的三种基本流控结构:顺序,分图支 和循环,下面给出这三种基本流控结构的流程图和N-S表示。流程图表示方法:.YppAABAB循环结构顺序结构选择结构N-S表示方法:,p当p成立循环体ANY B循环体A直到p成立顺序结构选择结构 循环结构 六、算法的特性17算法共有五个特性:有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性;有穷性:一个算法的步骤必须是有限的;确定性:算法中的每个步骤必须是确定的,不

20、能是含糊不清的,不能有歧义;输入:算法运行时有时需要外部输入的信息;输出:算法的最终目的是求解和输出;有效性:算法的每个步骤都能有效的执行,并得到确定的结果。七、结构化程序设计思想结构化程序设计强调的是程序设计风格和程序结构的规范化, 提倡清 晰的结构,编程的基本要求是“清晰第一、效率第二”。结构化程序 设计风格需要经过以下几个步骤进行:(1)自顶向下(2)逐步细化(3)模块化设计(4)结构化编码(利用现有的流控语句进行编码设计) 八、总结和布置课后练习题( 5 分钟)第四讲 数据类型( 1)学时: 2学时18授课形式:板书 +多媒体讲解 +实例程序演示教学目标: 掌握各种数据类型的关键字,

21、掌握各种数据类型在计算机 中所占的存储空间,常量及变量的定义形式,针对各种数据类型 printf 的格式控制输出。主要内容及时间安排(课堂 90分钟, 80分钟讲课, 5分钟复习, 5 分钟总结):(1)以提问的方式复习上节课的主要知识点( 5 分钟);(2) C语言的各种数据类型简介(基本类型和构造类型,各种数据 类型的关键字及所占字节等) (10 分钟);( 3)针对不同格式的 printf 输出格式介绍及举例( printf 格式介 绍,各种类型格式控制符介绍,以例子说明) (20分钟);( 4)常量(包括整型常量、实型常量、字符型常量、符号常量、举 例)(20 分钟)(5) 整型变量的

22、概念及举例(整型变量的定义及举例)(20分钟)(6) 课堂练习(针对所讲知识进行相关习题练习)(10分钟)(7)总结及新一讲内容提要(下一讲实型变量、字符型变量、指针 变量的定义和使用)(5分钟)重点:C语言各种数据类型的关键字、各种类型的常量表示法、整型 变量的定义和操作等;19难点:整型变量的表示范围。教学内容细节:C 一、语言各种数据类型介绍.无符号整型长整型整型.整型、短整型字符型基本类型.单精度实型 双精度枚举型数组 数据类型构造类型结构 体共用体指针类型空类型(以及在计算机内存中所占大小各种数据类型的关键字,各种不同的编译环境为例).B)所占字节(关键字类型名VC+ Rarnu_c

23、 TC2 int 2 4 整型2 short int 短整型 2 24 长整形 4 Iong int 44无符号整型unsigned int4 4 4 无符号长整形unsigned long无符号短整型2 2 2 unsigned shortfloat4单精度442088double8 双精 Icharll 字符 4指针类42*printf输出各种数据类型二、以printf 基本格式说明;printf (格式控制,输出表列)格式控制:用双引号括起来的字符串, 这个字符串包括开头。两部分,格式说明和普通字符,格式说明以 输出表列:与格式说明对应的输出表列。在格式控制符中,除了格式 说明去后边对应

24、输出表列之 外其他字符原样原位置输出,输出表列 为带输出的内容。 比如:*/字符串输出abcdprintf( “abcd”;/*y=9;int x=8 ,abcd8efg9*/ 输出” “abcdTfg%d,x,y);/*printf( 具体格式说明符有:*/输出短整型和整数%d /*/ %o /*以八进制无符号形式输出整数*/以十六进制无符号形式输出整数 %x或 X/*/ %u/*以无符号十进制形式输出整数比如int a=-1;21printf( “%d,%u,%o,%xn” ,a,a,a,a);输出内容分别是: -1,65535,177777,ffff 所以原反补码的含义大家一定要清楚,

25、对为什么出现这样的情况加以 分析。对于其他的数据类型也要采取不同的输出格式:%f/*以单精度形式输出实数 */%lf/*以双精度形式输出实数 */%c/*以字符形式输出,只输出一个字符*/分析:int a=65 ;char c=B ;printf( “%d,%d,%c,%cn” ,a,c,a,c);输出结果: 65,66,A,B 当整数不超过字符型的表示范围时,整数可以以字符型的形式输出, 输出的是它对应的 ASCII 码,字符型也可以以整数的形式输出, 输出 的是它 ASCII 码对应的值。单精度或双精度不能利用字符型或整型格式输出, 否则会产生错误结 果(语法不会出错,但结果意想不到) 。

26、三、各种数据类型常量1. 整型常量(1)十进制整型常量(2)八进制整型常量(以 0 开头)22( 3)十六进制整型常量(以 0x 开头)(4)后缀为u和U则表示无符号整型,后缀为L或I ,表示长整型。 如果将一个带符号数后边加了 u,则将其转化为补码按无符号数赋给 相应变量。2. 实型常量( 1)十进制小数形式(2)科学计数法:Xee前必须有数字,e后必须为整数。3. 字符型常量 单引号括起来的为字符常量,转义字符也可以作为一个字符。4. 字符串型常量双引号括起来的为字符串常量, 字符串常量系统默认会在最后加一个 0 。比较 a和“a”在内存中的状态。5. 符号型常量符号型常量往往是利用宏定义

27、实现的, 宏定义属于预处理范畴, 与文 件包含命令相同。#define X 12一般放在程序开始, 作用是定义一个符号为常量, 在程序运行过程中 不允许改变。四、整型变量的概念和举例231)标示符的命名规则: 由字母数字下划线,开头不能使数字。 例:以下合法的用户标识符是() 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; 可

28、以在变量定义时给变量赋初值。第五讲 数据类型( 2)学时: 2学时授课形式:板书 +多媒体讲解 +实例程序演示主要内容及时间安排(课堂 90分钟, 80分钟讲课, 5分钟复习, 5 分钟总结):( 1)以提问的方式复习上节课的主要内容( 5 分钟);( 2)实型变量(定义方法、表示范围、使用举例) (1524 分钟);(3)字符型变量(定义方法、表示范围、使用举例) (15 分钟);(4) 指针型变量(含义、定义方法、使用举例)(15分钟);(5)各种数据类型间的混合运算(类型间的转化、强制类型转化方 法、举例)(20分钟);(6)课堂习题(15分钟);(7) 总结及下一讲知识提要(运算符和表

29、达式)(5分钟)。重点:实型变量的定义方法、表示范围;字符型变量的定义方法、表示范围;指针和其他类型变量的配合使用; 数据类型间混合运算时的 转化;难点:指针和其他数据类型的配合使用,数据间的转化。教学内容细节:一、实型(浮点型)变量浮点型数据在计算机内存中的存储状态分为三部分:数符、小数部分、指数部分。C语言的编译环境不同,则给各个部分分配的位数不同,一般情况下, 数符和小数部分分配24位,指数部分非配8位。24位8位小数部分指数部分数符25比如:1 +.314159表示 3.14159浮点型变量定义的类型包括:float 、double、long double 举例说明浮点型数据是有误差的

30、: #include void main()float a,b;a=123456.789e5;b=a+20;printf(%fn,b);如果将 float 改为 double 则结果不同。二、字符型变量 字符型常量是以单引号括起来的单个字符。 字符变量的定义使用的是关键字 char char a,b;a=a;b=97;26整数和字符型可以互相赋值。一般编译系统默认字符型为 signed 类型,表示 -128 127 之间的数 字对应的字符,如果想表示 128-255 之间的数字则字符需定义为unsigned char 。三、指针型变量 指针型变量往往是和其他变量的定义配合使用, 表示不同变量在

31、内存 中的地址。指针变量定义是以 * 为标识符的。比如:int *a,*b;char *c,*d;这时需要注意, 在定义中出现的 * 与程序中出现的 *是不同的, 定义时 出现的*表示变量为指针类型, 程序中出现 *表示取出地址中的具体数 值。 *与&地址运算互逆。#include void main()int *p;int c;p=&c;scanf(%d,p);printf(%d,%dn,c,*p);27四、变量赋初值在前面的变量定义时,有时在定义的同时就给变量 赋了初值,有的是在定义好后,再利用赋值语句给变量赋初值,不管 利用哪种方式,都要注意两点:不能在定义时进行连续 赋值;不能错误的:

32、 int将不匹配的数据类型互相赋值,否则会产生错误a=b=c=10;int a=3.56;正确的: int a,b,c;a=b=c=10;五、各类数据类型间混合运算各种数据类型可以进行混合运算,运 算结果为一种数据 类型,具体规则如下: floatdouble高 longunsignedintshort、 char 低型数据在进行运算时, 横向的是必须转化的, 比如 float 不管参与运 算的是否类型,其运算记过统统要转化为 double 结类型;有 doublecharshort 或类型的数据在进行运算时, 28 果都会转化成 int 型。纵向箭头表示对象类型不同时的转换方向, 当参与运算

33、的对象数据类 型不同时,采用低级向高级转化的规律。比如 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);六、总结及课堂练习29课堂习题: 3.2 ,3.3作业: 3.5 , 3.6 ,3.8

34、第六讲 运算符和表达式( 1)学时: 2学时授课形式:板书 +多媒体讲解 +实例程序演示主要内容及时间安排(课堂 90分钟, 80分钟讲课, 5分钟复习, 5 分钟总结):( 1)以提问的方式复习上节课的主要内容( 5 分钟);(2)C语言运算符简介(各种运算符作用介绍、优先级介绍、结合性介绍) (15 分钟);( 3)算术运算符和表达式(算术运算符的计算方法、优先级等) (10 分钟);(4)自加自减运算及举例( 15 分钟)(5)赋值运算符和赋值表达式(简单赋值和符合赋值) (10 分钟)(6)逗号运算符和逗号表达式(与自加自减配合运算) (10 分钟)( 7)指针运算符( 10)(8)课

35、堂习题(所讲运算符的使用和运算方法) (10 分钟)30(9)总结及下一节内容提要 (关系运算符、 逻辑运算符、位运算符、 条件运算符等)(5 分钟)重点:C语言算术表达式的求值、算术运算符的优先级及运算方法、逗号运算符的运算方法、 指针运算符的运算方法、 自减自加的运算方 法;难点:自加自减运算,各种运算符的结合性。教学内容细节:一、C语言中各种运算符1. 算术运算符算术运算符包括: +,- ,*,/ ,%,它们都属于双目运算,结合性自 左至右。前三种运算都很简单, 对于/ ,如果操作数为整数, 则结果也为整数, % 运算的操作数必须为整数,其含义是去两个整数相除的余数。2. 自加自减运算符

36、自加自减运算符包括 +和- ,它属于单目运算,结合性自右至左,操作数必须为整型的变量。3. 赋值运算符赋值运算符包括简单赋值运算符 =和复合的赋值运算,复合的赋值运 算符是其他运算符和简单赋值运算符组合在一起构成的, 一般式位运 算符和算术运算符,比如 +=,%=,=等。它属于双目运算,结 合性自右至左。314. 逗号运算符逗号运算符,顺序求值运算,结合性自左至右。5. 位运算符位运算符包括vv, ,八,小弯弯,& I,按位运算,双目运算符,其 中按位取反为单目运算符(结合性自右至左) ,双目位运算结合性自 左至右。6. 指针运算符指针运算符 * ,取地址运算符 &,单目运算符,结合性自右至左

37、。7. 逻辑运算符逻辑运算符包括:!, &, II ,其中!为单目运算符结合性自右至左,&和II为双目运算符结合性自左至右。8. 关系运算符关系运算符包括:,V, =, =, =,!=, 。结合性自左至右,双目运算符。9. 条件运算符条件运算符 ; 表达式 ?值 1: 值 211. 分量运算符分量运算符:- 和.,结合性为自左至右。12. 下标运算符下标运算符,结合性自左至右。13. 求字节运算符32求字节运算符sizeof (操作数),结合性自右至左14. 强制类型转换运算符强制类型转换:(类型)操作数,结合性自右至左。二、各种运算符的优先级)初等运算符()、(1(2)单目运算符!、+、-、

38、-、(类型)、*、&、sizeof(3)算术运算符(先乘除后加减)(4)位运算符、(5)关系运算符 、二、=、其中=和!=级别低一级(6)位运算符&八、|、分先后(7)逻辑运算符& |、分先后(8)条件运算符?:(9)赋值运算符(10)逗号运算符注意:在利用逻辑运算符时:|和&有其特殊性,如果前表达式已经 可以确定整个表达式的值, 则后表达式不再做。 自加+自减 - 运算符, 只能对整形变量进行。三、算术运算符和算术表达式 最终运算为算术运算的式子称为算术式。例: 3/5,3%5,-3%5四、自加自减运算注意:运算对象只能是整型变量。33例main()int a=5;a+;printf( “%

39、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)将整型赋给浮点型:数值不变,但要以浮点型进行34存储。如: f

40、loat 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;如果将字符型处理为有符号型,则 字符型放到整型的低 8 位,高位所补的是 0 还是

41、1 ,要看低八位的最 高位,所补的为最高位的值。TC和维普C是把字符型当做有符号数来处理的。比如main() int a;unsigned char c=376;a=c;printf(%d,a);35输出为 254,如果去掉 unsigned 则输出为 -2 。(5)将带符号 int 赋给 long ,进行符号为扩展放到高十六位,低十 六位为 int 数据; long 型赋给 int 型时,只将 long 的低十六位放在 int 型中。( 6)int 、short 、long 赋给 char 型只是将低八位赋给 char 空间 ( 7)将 unsigned int 送到 long int 中,

42、不存在符号扩展,高位都 补 0。将 unsigned 类型数据赋给一个占字节相同的数据则直接将 unsigned 数据放到相应类型中即可,只不过超过表示范围会出现数 据错误。例如:main()unsigned int a=65535;int b;b=a;printf(%d,b);这时 b=-1 。( 8)将 signed 数据赋给长度相同的 unsigned 数据也是原样赋过去, 只不过如果是负数,是将其补码作为一个无符号数来处理。main()unsigned int a;36int b=-1;a=b;printf(%u,a);这时 a=65535。各种赋值形式虽然看起来复杂, 但是都是它们都

43、是: 按存储单元中的 存储形式直接传送。要求学生必须对补码只是熟练掌握。六、逗号运算符和逗号表达式 逗号运算符的运算规则是自左至右。 整个表达式的值是逗号表达式最 后一个表达式的值。例如: 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 中出现的逗号是作为分隔参数用的,并不是 逗号表达式。七、指针运算 指针运算符的作用是取指针地址中对应的具体数值, 它与取地址符为

44、 互逆运算。37例: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 分钟);(4)位运算符( 2

45、0 分钟);(5)课堂练习( 30 分钟)。重点:关系运算符,逻辑运算符,位运算符的操作方法。38难点:各种运算符的混合运算,需要考虑算符的优先级和结合性等因 素。教学内容细节:、关系运算符和关系表达式关系运算符表示的是前后两个表达式的关系,表达式的值为逻辑值“真”或“假”,如果关系正确则表达式的值为“真”,否则为“假”, 由于C语言不提供逻辑类型值,所以如果表达式的值为“真”,则用 1表示,表达式的值为“假”则用 0表示。例:int a=3,b=4,c=5;则c!=ab的值为1。二、逻辑运算符和逻辑表达式逻辑运算符表示两个操作数的逻辑关系,逻辑运算的结果也是逻辑值“真”和“假”,也是对应数字

46、1和0;但是要注意:在表示“真” 和“假”时,非零就表示“真”,0就表示“假”。a b !a a&b a|b直直假直直 真假 假假真真真真假假假真假假假39 例:!a&b|xy& (C+),运算级别!最高,然后是算术,然后是关系、然后是逻辑、然后是赋值;a=1,b=0,c=3,x=7,y=10;则表达式的值为0,c的值为3注意:&和|的运算规则。三、位运算符和表达式位运算符的前提示首先将数据转化为二进制在进行相应的操作。运算符含义运算符含义取反按位与&左移按位或I 按位异或八例如:语言系统将,所以一些 C21641左移位相当于乘以n位。2处理为左移n的值为八进制如果a113755,则a:100

47、101111101101(逻辑右移) a1: 010010111110110 a1: 110010111110110 (算 术右移) 四、条件运算符 int a=5,b=3;例如: 40 ab?a:b;五、总结及课堂练习1 、教材: 1 、 2、3、4、52、自设题目:a=45;求 a,a2,a2;a&0000000011111111; a|0000000011111111第八讲 输入输出函数及顺序结构学时: 2 学时授课形式:板书 +多媒体讲解 +实例程序演示 主要内容及时间安排(课堂 90 分钟, 80 分钟讲课, 5 分钟复习, 5 分钟总结):(1)C语言的基本语句(分为五类:表达式语

48、句、函数调用语句、 控制语句、复合语句、空语句,各种语句举例, 赋值语句的使用)(10 分钟)(2)常用输入函数介绍( 5 分钟);(3)seanf函数的使用方法(包括各种格式的输入、显性分隔符和 隐形分隔符的使用、举例)(20分钟);(4)getchar函数的使用方法(getchar的使用、字符输入与seanf的区别)(10分钟)(5)printf 使用方法复习(10分钟)41(6)putchar输入函数的使用(5分钟)(7)程序举例(10分钟)(8)课堂练习(15分钟)(9)总结及下一节内容提要(5分钟)重点:C语言各种输入输出函数的使用难点:scanf函数隐形分隔符和显性分隔符的使用教学

49、内容细节:一、C语言的基本语句1、语句的概念C语言中的语句是以分号结束的,以分号结束的就可以称为语句,它 用来想计算机发出指令。2、C程序结构C程序源程序文件2 1源程序文件n源程序文件函数 1 函数数据声明 预处理命令函数首部 函数体 、各种基本语句 3 数据声明执行语句 1 ()流控语句条件语句()if else 循环语句() for42while () 循环语句循环语句 do while( )结束本次循环进入下一次循环 continue终止所在循环或 switch 结构 breakswitch () case 多分支选择语句goto 转向语句从函数返回语句 return)函数调用语句(

50、2,a,b);” printf( “%d,%d c=max(a,b);( 3)表达式语句 a=3;a=c+b;)空语句( 4 ;5 )复合语句( 大括号括起来的语句组:z=x+y ; t=z/100;,z,t); %d,%d “” printf( 二、常用输入函数介绍函数的使用方法(包括各种格式的输入、显() 1scanf 43性分隔符和隐形分隔符的使用、举例)scanf( “格式说明”,输入表列);注意:格式说明由格式说明符和分隔符两部分组成,输入表列是由逗号分开的变量地址列表。如:scanf (“a=%d,b=%d ,&a,&b);在运行时,为了让ab得到正确的值,则应输入a=12,b=1

51、5回车; 这里a=,b=均为显性分隔符,在输入时除了格式控制符对应变量类型 外,其他的显性分隔符原样输入。又如:scanf( “%d%d ,&a,&b);在运行时,为了让ab得到正确的赋值,则应输入12空格/tab/回车13回车;这里空格、tab和回车都属于隐形分隔符,当两个格式控制符连在一格式控制符含义%d %i带符号十进制整数无符号十进制整数%u八进制无符号整数o字符串%s%lf单精度、双精度小指数形式浮点型数%E中宽度较小的一种进行输出,不%G选大时以指数形式输出出无意义的的使用、字符函数的使用方法(getchar2)getchar (分钟)的区别)(10scanf输入与()函数的使用仅

52、限于输入字符型数据,它与getchar输入字符型时应注意: 利用%cscanf可以接收隐形分隔符,所以在使用时应注意;%c getchar ()也可以接收所有字符型,包括隐形分隔符;例: #include mai n()int a,b;char c,d;scanf(%d%d%c,&a,&b,&c);d=getchar();prin tf(%d,%d,%c, ebc,a,b,c,d);,在赋字符,符字符,赋,赋如果想给 a12b13cadb45输入时,如果输入12回车13回车a,则编译系统不会再让你输入, 因为这是它会将回车赋给c,将a赋给d。如果想得到正确的赋值则 在输入时应输入 12 隐形分隔符 13ab 即可,系统会根据数据类型自动 将 13 和字符型分开,同时将 a 赋给 c, b 赋给 d。三、

温馨提示

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

评论

0/150

提交评论