书签 分享 收藏 举报 版权申诉 / 118
上传文档赚钱

类型C语言程序设计讲稿.docx

  • 上传人(卖家):hhsmd
  • 文档编号:5373624
  • 上传时间:2023-04-02
  • 格式:DOCX
  • 页数:118
  • 大小:146.14KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《C语言程序设计讲稿.docx》由用户(hhsmd)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    语言程序设计 讲稿
    资源描述:

    1、C语言程序设计讲稿116 / 118 目 录第一讲 C语言概述1第二讲 C语言程序介绍2第三讲 算法8第四讲 数据类型(1)20第五讲 数据类型(2)21第六讲 运算符和表达式(1)22第七讲 运算符和表达式(2)23第八讲 输入输出函数及顺序结构24第九讲 选择结构程序设计(1)25第十讲 选择结构程序设计(2)26第十一讲 循环结构(1)27第十二讲 循环结构(2)28第十三讲 习题课29第十四讲 一维数组的定义和使用29第十五讲 二维数组30第十六讲 字符数组和字符串31第十七讲 函数(1)32第十八讲 函数(2)33第十九讲 习题课&文件34第二十讲 结构体和共用体35第二十一讲 C语

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

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

    4、流程,然后在编译环境演示程序执行过程,总结C语言程序的基本结构和语法要求)(15分钟);(3)通过实例演示程序的运算功能(先用多媒体展示编写程序,一一讲解给学生,要求学生具有变量需要先定义的理念,然后在编译环境进行实例程序演示,掌握具有输入函数的C语言程序的运行过程)(15分钟);(4)通过上述实例,利用板式总结C语言的编写和编译过程(借助VC+6.0来展示C语言的编写和执行过程)(10分钟);(5)C语言结构特点总结(C语言由函数构成、书写格式自由、输入输出由函数实现、语句结束要有分号、main函数是函数开始和结束之处等)(20分钟);(6)C语言上机编译环境介绍(主要介绍TC、VC+、Ra

    5、rnu_C V1.0三个编译环境,主推Rarnu_C V1.0编译环境)(20分钟);(7)总结本节课程的主要内容并布置课后练习题(5分钟);重点:C语言的程序结构、C语言语法细节、C语言编译过程、C语言运行环境等;难点:C语言语法细节和程序结构。教学内容细节:一、通过提问的方式复习上节课程的主要内容。二、实例演示(1) 实例1-1 简单输出:#include /*包含文件 */ main() /*程序从函数main开始执行*/ /*在屏幕上输出引号内内容*/ printf(I am a programmer,I like C!); /*函数main结束*/程序说明:l main函数表示主函数

    6、,每个程序必须有且只能有一个main函数,函数体(功能语句)放在内。l printf是C语言的输出函数,它的作用是将“”中的内容原样输出。l 其中“n”是换行符。l 以/*和*/括起来的是注释,程序运行期间是不执行的只是增加程序的可读性。(2) 实例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*/

    7、程序说明:l 本实例的功能是实现两个数相加;l scanf函数的作用是输入两个整数;l 具有变量定义的C语言函数的书写顺序应该是:先写预处理命令,然后是函数名;然后是函数体,函数体中应先写变量定义,在写功能语句。l 为了增加程序的可读性应适当加上注释,和printf提示。三、C语言的编写流程四、C语言结构特点总结(1)一个C程序可以由多个函数构成,但是只能有一个main函数,程序从main函数开始,然后通过函数调用完成部分功能,最后以main函数结束;(2)主函数或子函数的函数体必须用一对括起来,函数体中主要是程序的功能语句,这种功能语句由两部分组成:声明部分和执行部分;(3)每一条语句由分号

    8、结束,程序书写格式自由,一行可以写多句,一句可以写多行,但分行时注意不能将字符串整体分开;(4)C语言大小写敏感,大小写不能混用;一般程序语句用小写字母,符号常量用大写 ;程序要有适当的注释语句,提高程序的可读性,注意注释语句不能嵌套;(5)C语言中的变量必须先定义后使用;(6)#include是预处理命令,用于将或”中包括的文件中的内容读到命令所在处;每个include的后面只能跟一个文件,如果想将多个文件包含到指定位置,可以通过多个include实现。五、优秀的程序员应具备的基本素质(1)具有良好的编程习惯(2)使用TAB缩进(3)对齐(4)有足够的注释(5)有合适的空行六、上机环境使用介

    9、绍重点介绍上机环境VC+6.0的使用方法,包括:程序编辑、程序编译、程序改错、程序保存、程序运行等。第三讲 算法学时:2学时授课形式:板书+多媒体讲解教学目标:掌握算法的概念、掌握典型算法的设计、熟练掌握算法表示方法中程序流程图和N-S图。主要内容及时间安排(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结):(1) 复习上节课的主要知识点(5分钟);(2) 算法和程序的关系(5分钟);(3)算法的概念及算法优劣比较举例(什么是算法,连加算法优劣比较、算法的分类)(10分钟);(4)简单算法举例(设计5个例子,从易到难)(40分钟);(5)算法的特性(有穷性、确定性、有零个或多个输入、有一个

    10、或多个输出、有效性)(10分钟);(6)算法的表示方法(重点介绍流程图和N-S图)(10分钟);(7)结构化程序设计方法(简单介绍结构化程序设计方法的基本思路)(5分钟);(8)总结和布置课后练习题(课后题2.4、2.5,下一节讲解数据类型相关知识)(5分钟)重点:算法的概念、算法的特性、设计算法的意义、算法的表示方法难点:算法的表示方法教学内容细节:一、 以提问的方式复习上节课的主要知识点。二、 算法和程序的关系程序=数据结构+算法数据结构对数据的描述;算法对操作的描述。简单举例进行说明。三、算法概念及算法优劣比较算法:解决问题的步骤。不是只有数值运算问题才有算法,好多非数值运算问题也是有算

    11、法的。数值运算问题的算法主要是求数值的结,比如求连加和,非数值算法主要应用在事务管理领域(图书检索、人事管理等)。在进行数值运算或解决非数值算法时有时需要考虑算法的优劣,比如连加和,可以从1一直加到100,也可以采用首尾相加,在相乘的形式。当然所用的步骤是不同的。对于数学中的一些常用算法,比如求绝对值,求平方根,等等经常用到,人们就把它们写成程序模块的形式,用户什么时候需要就可以进行调用了,非常方便,常用的数值运算函数都包含在math.h文件中。例3-1:计算输入整数的平方根,如果输入的是负数,则先求它的绝对值,在求平方根:#include #include void main() int a

    12、; 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-S图表示法。流程图的基本符号及含义:起止框输入输出框处理框判断框流程线或连接点(1)计算1*2*3

    13、*4*5自然语言表示法繁琐的算法 将第二个数和第一个数相乘,得到的积和第三个数相乘,依此方法一直乘到5。当要进行连乘的数比较多时,这种方法显然不适用。改进的算法 开辟两个空间p和i,一个放计算之后的积,一个放被乘数,上面的算法进行改造后如下:(S1表示第一步,S2表示第二步,依此类推)S1:1=p,2=iS2:计算p*i的积,结果仍然放在p中,即p*i=pS3:i的值增1,即i+1=iS4:如果i没有超过5,则继续执行S2、S3、S5,否则,算法结束,p中的数据就是连乘积。开始1=p,2=iP*i=pi+1=i结束ip,2=ip*i=pi+1=i直到i5输出p习题:计算1+3+5+7+9的和,

    14、用流程图和N-S图表示此算法。(2)有50个学生,输出80分以上的学生学号和成绩为了表示方便,用n表示学生学号,ni表示第i个学生学号,用g表示学生成绩,gi表示第i个学生成绩,则算法如下:自然语言表示法:S1:1=iS2:如果gi80,则输出ni和gi,否则不输出;S3:i+1=IS4:如果iigi=80i+1=i输出nigi直到i50NY流程图表示法:开始1=ii+1=i结束gi=80NY输出nigii50NY习题:有50个学生,找出50个学生中分数为90的学生学号。用流程图和N-S 表示此算法。(3)判断某一年份是否是闰年判断某一年份是闰年的条件是:(1)能被4整除,但是不能被100整除

    15、,则这一年份是闰年;(2)能被100整除,又能被400整除的,则这一年份是闰年;其他的年份都不是闰年,假设用一个空间y来存放被校验的年份,则算法描述如下:自然语言表示法:S1:输入年份=yS2:若y能被4整除,但不能被100整除,则输出y是闰年,算法结束;否则,执行S3;S3:若y能被100整除,也能被400整除,则输出y是闰年,算法结束;否则,执行S4;S4:输出y不是闰年,算法结束。流程图表示法:开始结束Yy不能被4整除输出y是闰年y不能被100整除NYNY输出y是闰年输出y不是闰年y不能被400整除输出y不是闰年N输入年份=yN-S图表示法:输入年份=yy/4的余数为0输出y不是闰年输出

    16、y不是闰年NYNYy/100余数不为0NYy/400余数不为0输出y是闰年输出y是闰年习题:输出某一年份段内(比如1000-3000之间,包括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=

    17、t;S2:t*1/i+sum=sumS3:-t=t;i+1=iS4:如果isum,1.0=i,1=tt*1/i+sum=sum-t=t,i+1=i直到i100输出sum开始0.0=sum,1.0=i,1=tt*1/i+sum=sum-t=t,i+1=i结束inS2:2=iS4:n除以i,得余数rS5:如果r不为0,则i+1=i,否则,输出n不是素数,算法结束S6:如果in,则返回S4,否则,输出n是素数,算法结束。考虑是否非要做到i=n-1,是不是可以做到iw,2=in/i的余数=r结束r=0?YN输入待判断数=n输出n不是素数W=0和iiNY输出n是素数1=wNw=0?流程图表示法:开始2=

    18、in/i的余数=r结束r=0?YN输入待判断数=n输出n不是素数iiNY输出n是素数N-S图表示法:输入待判断数=nn/i的余数=rr=01=w输出n是素数0=w,2=ii+1=i直到i或w=1YNw=0YN输出n不是素数习题:输出100-200之间的所有素数。五、总结三种程序流程结构(顺序、选择和循环,给出图形表示)循环结构NpAYpAB选择结构YNAB顺序结构通过上面几个例子,我们可以看到,算法在执行的过程中基本只有三种模式,(1)从上到下依次执行下来,中间没有任何分叉,(2)在执行过程中,根据条件成立和否产生了不同的操作;(3)当某一条件成立时,反复做相同的操作。这就是我们结构化程序设计

    19、的三种基本流控结构:顺序,分支和循环,下面给出这三种基本流控结构的流程图和N-S图表示。流程图表示方法:N-S表示方法:循环体当p成立循环体直到p成立循环结构选择结构pNYAAB顺序结构六、算法的特性算法共有五个特性:有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性;有穷性:一个算法的步骤必须是有限的;确定性:算法中的每个步骤必须是确定的,不能是含糊不清的,不能有歧义;输入:算法运行时有时需要外部输入的信息;输出:算法的最终目的是求解和输出;有效性:算法的每个步骤都能有效的执行,并得到确定的结果。七、结构化程序设计思想结构化程序设计强调的是程序设计风格和程序结构的规范化,提倡清晰的结

    20、构,编程的基本要求是“清晰第一、效率第二”。结构化程序设计风格需要经过以下几个步骤进行:(1)自顶向下(2)逐步细化(3)模块化设计(4)结构化编码(利用现有的流控语句进行编码设计)八、总结和布置课后练习题(5分钟)第四讲 数据类型(1)学时:2学时授课形式:板书+多媒体讲解+实例程序演示教学目标:掌握各种数据类型的关键字,掌握各种数据类型在计算机中所占的存储空间,常量及变量的定义形式,针对各种数据类型printf的格式控制输出。主要内容及时间安排(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结):(1)以提问的方式复习上节课的主要知识点(5分钟);(2)C语言的各种数据类型简介(基本类型

    21、和构造类型,各种数据类型的关键字及所占字节等)(10分钟);(3)针对不同格式的printf输出格式介绍及举例(printf格式介绍,各种类型格式控制符介绍,以例子说明)(20分钟);(4)常量(包括整型常量、实型常量、字符型常量、符号常量、举例)(20分钟)(5)整型变量的概念及举例(整型变量的定义及举例)(20分钟)(6)课堂练习(针对所讲知识进行相关习题练习)(10分钟)(7)总结及新一讲内容提要(下一讲实型变量、字符型变量、指针变量的定义和使用)(5分钟)重点:C语言各种数据类型的关键字、各种类型的常量表示法、整型变量的定义和操作等;难点:整型变量的表示范围。教学内容细节:一、C语言各

    22、种数据类型介绍数据类型基本类型构造类型指针类型空类型整型实型字符型长整型整型、短整型无符号整型单精度双精度数组结构体共用体枚举型各种数据类型的关键字,及在计算机内存中所占大小(以各种不同的编译环境为例)类型名关键字所占字节(B)TCRarnu_cVC+整型int224短整型short int222长整形long int444无符号整型unsigned int224无符号长整形unsigned long444无符号短整型unsigned short222单精度float444双精度double888字符型char111指针类型*244二、以printf输出各种数据类型printf基本格式说明pr

    23、intf(格式控制,输出表列);格式控制:用双引号括起来的字符串,这个字符串包括两部分,格式说明和普通字符,格式说明以%开头。输出表列:和格式说明对应的输出表列。在格式控制符中,除了格式说明去后边对应输出表列之外其他字符原样原位置输出,输出表列为带输出的内容。比如:printf(“abcd”);/*输出abcd字符串*/int x=8,y=9;printf(“abcd%defg%d”,x,y);/*输出abcd8efg9*/具体格式说明符有:%d /*输出短整型和整数*/%o /*以八进制无符号形式输出整数*/%x或X /*以十六进制无符号形式输出整数*/%u /*以无符号十进制形式输出整数*

    24、/比如int a=-1;printf(“%d,%u,%o,%xn”,a,a,a,a);输出内容分别是:-1,65535,177777,ffff所以原反补码的含义大家一定要清楚,对为什么出现这样的情况加以分析。对于其他的数据类型也要采取不同的输出格式:%f /*以单精度形式输出实数*/%lf /*以双精度形式输出实数*/%c /*以字符形式输出,只输出一个字符*/分析:int a=65;char c=B;printf(“%d,%d,%c,%cn”,a,c,a,c);输出结果:65,66,A,B当整数不超过字符型的表示范围时,整数可以以字符型的形式输出,输出的是它对应的ASCII码,字符型也可以以

    25、整数的形式输出,输出的是它ASCII码对应的值。单精度或双精度不能利用字符型或整型格式输出,否则会产生错误结果(语法不会出错,但结果意想不到)。三、各种数据类型常量1.整型常量(1)十进制整型常量(2)八进制整型常量(以0开头)(3)十六进制整型常量(以0x开头)(4)后缀为u和U则表示无符号整型,后缀为L或l,表示长整型。如果将一个带符号数后边加了u,则将其转化为补码按无符号数赋给相应变量。2.实型常量(1)十进制小数形式(2)科学计数法:XeYe前必须有数字,e后必须为整数。3.字符型常量单引号括起来的为字符常量,转义字符也可以作为一个字符。4.字符串型常量双引号括起来的为字符串常量,字符

    26、串常量系统默认会在最后加一个0。比较a和“a”在内存中的状态。5.符号型常量符号型常量往往是利用宏定义实现的,宏定义属于预处理范畴,和文件包含命令相同。#define X 12一般放在程序开始,作用是定义一个符号为常量,在程序运行过程中不允许改变。四、整型变量的概念和举例(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

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

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

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

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

    31、t a=3.56;正确的:int a,b,c;a=b=c=10;五、各类数据类型间混合运算各种数据类型可以进行混合运算,运算结果为一种数据类型,具体规则如下:doublefloatlongunsignedintchar、short低高横向的是必须转化的,比如float型数据在进行运算时,其运算记过统统要转化为double类型,不管参和运算的是否有double类型;char或short类型的数据在进行运算时,结果都会转化成int型。纵向箭头表示对象类型不同时的转换方向,当参和运算的对象数据类型不同时,采用低级向高级转化的规律。比如int型和long型进行运算时,将int转化为long类型再进行运

    32、算。比如: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);六、总结及课堂练习课堂习题:3.2,3.3作业:3.5,3.6,3.8第六讲 运算符和表达式(1)学时:2学时授课形式:板书+多媒体讲解+实例程序演示主要内容及时间安排(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结):(1)以提问的方

    33、式复习上节课的主要内容(5分钟);(2)C语言运算符简介(各种运算符作用介绍、优先级介绍、结合性介绍)(15分钟);(3)算术运算符和表达式(算术运算符的计算方法、优先级等)(10分钟);(4)自加自减运算及举例(15分钟)(5)赋值运算符和赋值表达式(简单赋值和符合赋值)(10分钟)(6)逗号运算符和逗号表达式(和自加自减配合运算)(10分钟)(7)指针运算符(10)(8)课堂习题(所讲运算符的使用和运算方法)(10分钟)(9)总结及下一节内容提要(关系运算符、逻辑运算符、位运算符、条件运算符等)(5分钟)重点:C语言算术表达式的求值、算术运算符的优先级及运算方法、逗号运算符的运算方法、指针

    34、运算符的运算方法、自减自加的运算方法;难点:自加自减运算,各种运算符的结合性。教学内容细节:一、C语言中各种运算符1.算术运算符算术运算符包括:+,-,*,/,%,它们都属于双目运算,结合性自左至右。前三种运算都很简单,对于/,如果操作数为整数,则结果也为整数,%运算的操作数必须为整数,其含义是去两个整数相除的余数。2.自加自减运算符自加自减运算符包括+和-,它属于单目运算,结合性自右至左,操作数必须为整型的变量。3.赋值运算符赋值运算符包括简单赋值运算符=和复合的赋值运算,复合的赋值运算符是其他运算符和简单赋值运算符组合在一起构成的,一般式位运算符和算术运算符,比如+=,%=,=等。它属于双

    35、目运算,结合性自右至左。4.逗号运算符逗号运算符,顺序求值运算,结合性自左至右。5.位运算符位运算符包括,,小弯弯,&,|,按位运算,双目运算符,其中按位取反为单目运算符(结合性自右至左),双目位运算结合性自左至右。6.指针运算符指针运算符*,取地址运算符&,单目运算符,结合性自右至左。7.逻辑运算符逻辑运算符包括:!,&,|,其中!为单目运算符结合性自右至左,&和|为双目运算符结合性自左至右。8.关系运算符关系运算符包括:,=,=,=,!=,。结合性自左至右,双目运算符。9.条件运算符条件运算符;表达式?值1:值211.分量运算符分量运算符:-和.,结合性为自左至右。12.下标运算符下标运算

    36、符,结合性自左至右。13.求字节运算符求字节运算符sizeof(操作数),结合性自右至左。14.强制类型转换运算符强制类型转换:(类型)操作数,结合性自右至左。二、各种运算符的优先级(1)初等运算符()、.(2)单目运算符!、+、-、-、(类型)、*、&、sizeof(3)算术运算符(先乘除后加减)(4)位运算符(5)关系运算符、=、其中=和!=级别低一级(6)位运算符&、|、分先后(7)逻辑运算符&、|、分先后(8)条件运算符?:(9)赋值运算符(10)逗号运算符注意:在利用逻辑运算符时:|和&有其特殊性,如果前表达式已经可以确定整个表达式的值,则后表达式不再做。自加+自减-运算符,只能对整

    37、形变量进行。三、算术运算符和算术表达式最终运算为算术运算的式子称为算术式。例:3/5,3%5,-3%5四、自加自减运算注意:运算对象只能是整型变量。例main()int a=5;a+;printf(“%d”,a);为学生描述内存存储状态。计算:(a+)+(-a)-a+(+a)表达式的值,a的初始值为4。五、赋值运算1.简单赋值运算符=,运算方法是将=号后的值赋给=号前的变量,=号前必须为变量,不能给常量赋值。如:int a=5;2.复合的赋值运算比如:a+=5;等价于a=a+5;前提是复合赋值运算前的变量必须有初值,否则无法运算。3.赋值运算的规则赋值运算符的赋值规则:(也就是当赋值运算符前后

    38、类型不一致时如何赋值)(1)将浮点型赋给整型:舍弃小数部分。如:int i=3.56则i的值为3。(2)将整型赋给浮点型:数值不变,但要以浮点型进行存储。如: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)字符型赋给整型,如果将字符型处理为无符号型,则将字符型放

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

    40、int送到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;int b=-1;a=b;printf(%u,a);这时a=65535。各种赋值形式虽然看起来复杂,但是都是它们都是:按存储单元中的存储形式直接传送。要求学生必须对补码只是熟练掌握。六、逗号运算符和逗号表达式逗号运算符的运算规则是自左至右。整个表达式的值是逗号表达式最后一个表达式的值。例如: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中出

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:C语言程序设计讲稿.docx
    链接地址:https://www.163wenku.com/p-5373624.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库